Package com.pulumi.aws.cloudformation
Class StackSetInstance
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.cloudformation.StackSetInstance
-
public class StackSetInstance extends com.pulumi.resources.CustomResourceManages a CloudFormation StackSet Instance. Instances are managed in the account and region of the StackSet after the target account permissions have been configured. Additional information about StackSets can be found in the [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html). > **NOTE:** All target accounts must have an IAM Role created that matches the name of the execution role configured in the StackSet (the `executionRoleName` argument in the `aws.cloudformation.StackSet` resource) in a trust relationship with the administrative account or administration IAM Role. The execution role must have appropriate permissions to manage resources defined in the template along with those required for StackSets to operate. See the [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html) for more details. > **NOTE:** To retain the Stack during resource destroy, ensure `retainStack` has been set to `true` in the state first. This must be completed _before_ a deployment that would destroy the resource. ## Example Usage ### Basic Usage
### Example IAM Setup in Target Accountpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.cloudformation.StackSetInstance; import com.pulumi.aws.cloudformation.StackSetInstanceArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new StackSetInstance("example", StackSetInstanceArgs.builder() .accountId("123456789012") .stackSetInstanceRegion("us-east-1") .stackSetName(exampleAwsCloudformationStackSet.name()) .build()); } }
### Example Deployment across Organizations accountpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.iam.RolePolicy; import com.pulumi.aws.iam.RolePolicyArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { final var aWSCloudFormationStackSetExecutionRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .identifiers(aWSCloudFormationStackSetAdministrationRole.arn()) .type("AWS") .build()) .actions("sts:AssumeRole") .effect("Allow") .build()) .build()); var aWSCloudFormationStackSetExecutionRole = new Role("aWSCloudFormationStackSetExecutionRole", RoleArgs.builder() .assumeRolePolicy(aWSCloudFormationStackSetExecutionRoleAssumeRolePolicy.json()) .name("AWSCloudFormationStackSetExecutionRole") .build()); // Documentation: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html // Additional IAM permissions necessary depend on the resources defined in the StackSet template final var aWSCloudFormationStackSetExecutionRoleMinimumExecutionPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .actions( "cloudformation:*", "s3:*", "sns:*") .effect("Allow") .resources("*") .build()) .build()); var aWSCloudFormationStackSetExecutionRoleMinimumExecutionPolicyRolePolicy = new RolePolicy("aWSCloudFormationStackSetExecutionRoleMinimumExecutionPolicyRolePolicy", RolePolicyArgs.builder() .name("MinimumExecutionPolicy") .policy(aWSCloudFormationStackSetExecutionRoleMinimumExecutionPolicy.json()) .role(aWSCloudFormationStackSetExecutionRole.name()) .build()); } }
## Import Import CloudFormation StackSet Instances that target AWS Organizational Units using the StackSet name, a slash (`/`) separated list of organizational unit IDs, and target AWS Region separated by commas (`,`). For example: Import CloudFormation StackSet Instances when acting a delegated administrator in a member account using the StackSet name, target AWS account ID or slash (`/`) separated list of organizational unit IDs, target AWS Region and `callAs` value separated by commas (`,`). For example: Using `pulumi import`, import CloudFormation StackSet Instances that target an AWS Account ID using the StackSet name, target AWS account ID, and target AWS Region separated by commas (`,`). For example: ```sh $ pulumi import aws:cloudformation/stackSetInstance:StackSetInstance example example,123456789012,us-east-1 ``` Using `pulumi import`, import CloudFormation StackSet Instances that target AWS Organizational Units using the StackSet name, a slash (`/`) separated list of organizational unit IDs, and target AWS Region separated by commas (`,`). For example: ```sh $ pulumi import aws:cloudformation/stackSetInstance:StackSetInstance example example,ou-sdas-123123123/ou-sdas-789789789,us-east-1 ``` Using `pulumi import`, import CloudFormation StackSet Instances when acting a delegated administrator in a member account using the StackSet name, target AWS account ID or slash (`/`) separated list of organizational unit IDs, target AWS Region and `callAs` value separated by commas (`,`). For example: ```sh $ pulumi import aws:cloudformation/stackSetInstance:StackSetInstance example example,ou-sdas-123123123/ou-sdas-789789789,us-east-1,DELEGATED_ADMIN ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.cloudformation.StackSetInstance; import com.pulumi.aws.cloudformation.StackSetInstanceArgs; import com.pulumi.aws.cloudformation.inputs.StackSetInstanceDeploymentTargetsArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new StackSetInstance("example", StackSetInstanceArgs.builder() .deploymentTargets(StackSetInstanceDeploymentTargetsArgs.builder() .organizationalUnitIds(exampleAwsOrganizationsOrganization.roots()[0].id()) .build()) .stackSetInstanceRegion("us-east-1") .stackSetName(exampleAwsCloudformationStackSet.name()) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description StackSetInstance(java.lang.String name)StackSetInstance(java.lang.String name, StackSetInstanceArgs args)StackSetInstance(java.lang.String name, StackSetInstanceArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>accountId()com.pulumi.core.Output<java.util.Optional<java.lang.String>>callAs()com.pulumi.core.Output<java.util.Optional<StackSetInstanceDeploymentTargets>>deploymentTargets()static StackSetInstanceget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, StackSetInstanceState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.util.Optional<StackSetInstanceOperationPreferences>>operationPreferences()com.pulumi.core.Output<java.lang.String>organizationalUnitId()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>parameterOverrides()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>retainStack()com.pulumi.core.Output<java.lang.String>stackId()com.pulumi.core.Output<java.util.List<StackSetInstanceStackInstanceSummary>>stackInstanceSummaries()com.pulumi.core.Output<java.lang.String>stackSetInstanceRegion()com.pulumi.core.Output<java.lang.String>stackSetName()
-
-
-
Constructor Detail
-
StackSetInstance
public StackSetInstance(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
StackSetInstance
public StackSetInstance(java.lang.String name, StackSetInstanceArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
StackSetInstance
public StackSetInstance(java.lang.String name, StackSetInstanceArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
accountId
public com.pulumi.core.Output<java.lang.String> accountId()
- Returns:
- Target AWS Account ID to create a Stack based on the StackSet. Defaults to current account.
-
callAs
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> callAs()
- Returns:
- Specifies whether you are acting as an account administrator in the organization's management account or as a delegated administrator in a member account. Valid values: `SELF` (default), `DELEGATED_ADMIN`.
-
deploymentTargets
public com.pulumi.core.Output<java.util.Optional<StackSetInstanceDeploymentTargets>> deploymentTargets()
- Returns:
- AWS Organizations accounts to which StackSets deploys. StackSets doesn't deploy stack instances to the organization management account, even if the organization management account is in your organization or in an OU in your organization. Drift detection is not possible for this argument. See deploymentTargets below.
-
operationPreferences
public com.pulumi.core.Output<java.util.Optional<StackSetInstanceOperationPreferences>> operationPreferences()
- Returns:
- Preferences for how AWS CloudFormation performs a stack set operation.
-
organizationalUnitId
public com.pulumi.core.Output<java.lang.String> organizationalUnitId()
- Returns:
- Organizational unit ID in which the stack is deployed.
-
parameterOverrides
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> parameterOverrides()
- Returns:
- Key-value map of input parameters to override from the StackSet for this Instance.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Target AWS Region to create a Stack based on the StackSet. Defaults to current region. Use `stackSetInstanceRegion` instead.
-
retainStack
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> retainStack()
- Returns:
- During resource destroy, remove Instance from StackSet while keeping the Stack and its associated resources. Must be enabled in the state _before_ destroy operation to take effect. You cannot reassociate a retained Stack or add an existing, saved Stack to a new StackSet. Defaults to `false`.
-
stackId
public com.pulumi.core.Output<java.lang.String> stackId()
- Returns:
- Stack identifier.
-
stackInstanceSummaries
public com.pulumi.core.Output<java.util.List<StackSetInstanceStackInstanceSummary>> stackInstanceSummaries()
- Returns:
- List of stack instances created from an organizational unit deployment target. This will only be populated when `deploymentTargets` is set. See `stackInstanceSummaries`.
-
stackSetInstanceRegion
public com.pulumi.core.Output<java.lang.String> stackSetInstanceRegion()
- Returns:
- Target AWS Region to create a Stack based on the StackSet. Defaults to current region.
-
stackSetName
public com.pulumi.core.Output<java.lang.String> stackSetName()
- Returns:
- Name of the StackSet.
-
get
public static StackSetInstance get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable StackSetInstanceState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-