Package com.pulumi.aws.cloudformation
Class StackSet
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.cloudformation.StackSet
-
public class StackSet extends com.pulumi.resources.CustomResourceManages a CloudFormation StackSet. StackSets allow CloudFormation templates to be easily deployed across multiple accounts and regions via StackSet Instances (`aws.cloudformation.StackSetInstance` resource). 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 template parameters, including those with a `Default`, must be configured or ignored with the `lifecycle` configuration block `ignoreChanges` argument. > **NOTE:** All `NoEcho` template parameters must be ignored with the `lifecycle` configuration block `ignoreChanges` argument. > **NOTE:** When using a delegated administrator account, ensure that your IAM User or Role has the `organizations:ListDelegatedAdministrators` permission. Otherwise, you may get an error like `ValidationError: Account used is not a delegated administrator`. ## Example Usage
## Import Import CloudFormation StackSets when acting a delegated administrator in a member account using the `name` and `callAs` values separated by a comma (`,`). For example: Using `pulumi import`, import CloudFormation StackSets using the `name`. For example: ```sh $ pulumi import aws:cloudformation/stackSet:StackSet example example ``` Using `pulumi import`, import CloudFormation StackSets when acting a delegated administrator in a member account using the `name` and `callAs` values separated by a comma (`,`). For example: ```sh $ pulumi import aws:cloudformation/stackSet:StackSet example example,DELEGATED_ADMIN ```package 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.cloudformation.StackSet; import com.pulumi.aws.cloudformation.StackSetArgs; import com.pulumi.aws.iam.RolePolicy; import com.pulumi.aws.iam.RolePolicyArgs; import static com.pulumi.codegen.internal.Serialization.*; 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 aWSCloudFormationStackSetAdministrationRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .identifiers("cloudformation.amazonaws.com") .type("Service") .build()) .actions("sts:AssumeRole") .effect("Allow") .build()) .build()); var aWSCloudFormationStackSetAdministrationRole = new Role("aWSCloudFormationStackSetAdministrationRole", RoleArgs.builder() .assumeRolePolicy(aWSCloudFormationStackSetAdministrationRoleAssumeRolePolicy.json()) .name("AWSCloudFormationStackSetAdministrationRole") .build()); var example = new StackSet("example", StackSetArgs.builder() .administrationRoleArn(aWSCloudFormationStackSetAdministrationRole.arn()) .name("example") .parameters(Map.of("VPCCidr", "10.0.0.0/16")) .templateBody(serializeJson( jsonObject( jsonProperty("Parameters", jsonObject( jsonProperty("VPCCidr", jsonObject( jsonProperty("Type", "String"), jsonProperty("Default", "10.0.0.0/16"), jsonProperty("Description", "Enter the CIDR block for the VPC. Default is 10.0.0.0/16.") )) )), jsonProperty("Resources", jsonObject( jsonProperty("myVpc", jsonObject( jsonProperty("Type", "AWS::EC2::VPC"), jsonProperty("Properties", jsonObject( jsonProperty("CidrBlock", jsonObject( jsonProperty("Ref", "VPCCidr") )), jsonProperty("Tags", jsonArray(jsonObject( jsonProperty("Key", "Name"), jsonProperty("Value", "Primary_CF_VPC") ))) )) )) )) ))) .build()); final var aWSCloudFormationStackSetAdministrationRoleExecutionPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .actions("sts:AssumeRole") .effect("Allow") .resources(example.executionRoleName().applyValue(_executionRoleName -> String.format("arn:aws:iam::*:role/%s", _executionRoleName))) .build()) .build()); var aWSCloudFormationStackSetAdministrationRoleExecutionPolicyRolePolicy = new RolePolicy("aWSCloudFormationStackSetAdministrationRoleExecutionPolicyRolePolicy", RolePolicyArgs.builder() .name("ExecutionPolicy") .policy(aWSCloudFormationStackSetAdministrationRoleExecutionPolicy.applyValue(_aWSCloudFormationStackSetAdministrationRoleExecutionPolicy -> _aWSCloudFormationStackSetAdministrationRoleExecutionPolicy.json())) .role(aWSCloudFormationStackSetAdministrationRole.name()) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description StackSet(java.lang.String name)StackSet(java.lang.String name, StackSetArgs args)StackSet(java.lang.String name, StackSetArgs 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.util.Optional<java.lang.String>>administrationRoleArn()com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.util.Optional<StackSetAutoDeployment>>autoDeployment()com.pulumi.core.Output<java.util.Optional<java.lang.String>>callAs()com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>>capabilities()com.pulumi.core.Output<java.util.Optional<java.lang.String>>description()com.pulumi.core.Output<java.lang.String>executionRoleName()static StackSetget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, StackSetState 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<StackSetManagedExecution>>managedExecution()com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.util.Optional<StackSetOperationPreferences>>operationPreferences()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>parameters()com.pulumi.core.Output<java.util.Optional<java.lang.String>>permissionModel()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>stackSetId()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<java.lang.String>templateBody()com.pulumi.core.Output<java.util.Optional<java.lang.String>>templateUrl()
-
-
-
Constructor Detail
-
StackSet
public StackSet(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
StackSet
public StackSet(java.lang.String name, @Nullable StackSetArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
StackSet
public StackSet(java.lang.String name, @Nullable StackSetArgs 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
-
administrationRoleArn
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> administrationRoleArn()
- Returns:
- Amazon Resource Number (ARN) of the IAM Role in the administrator account. This must be defined when using the `SELF_MANAGED` permission model.
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the StackSet.
-
autoDeployment
public com.pulumi.core.Output<java.util.Optional<StackSetAutoDeployment>> autoDeployment()
- Returns:
- Configuration block containing the auto-deployment model for your StackSet. This can only be defined when using the `SERVICE_MANAGED` permission model.
-
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`.
-
capabilities
public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> capabilities()
- Returns:
- A list of capabilities. Valid values: `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`, `CAPABILITY_AUTO_EXPAND`.
-
description
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()
- Returns:
- Description of the StackSet.
-
executionRoleName
public com.pulumi.core.Output<java.lang.String> executionRoleName()
- Returns:
- Name of the IAM Role in all target accounts for StackSet operations. Defaults to `AWSCloudFormationStackSetExecutionRole` when using the `SELF_MANAGED` permission model. This should not be defined when using the `SERVICE_MANAGED` permission model.
-
managedExecution
public com.pulumi.core.Output<java.util.Optional<StackSetManagedExecution>> managedExecution()
- Returns:
- Configuration block to allow StackSets to perform non-conflicting operations concurrently and queues conflicting operations.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name of the StackSet. The name must be unique in the region where you create your StackSet. The name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphabetic character and cannot be longer than 128 characters.
-
operationPreferences
public com.pulumi.core.Output<java.util.Optional<StackSetOperationPreferences>> operationPreferences()
- Returns:
- Preferences for how AWS CloudFormation performs a stack set update.
-
parameters
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> parameters()
- Returns:
- Key-value map of input parameters for the StackSet template. All template parameters, including those with a `Default`, must be configured or ignored with `lifecycle` configuration block `ignoreChanges` argument. All `NoEcho` template parameters must be ignored with the `lifecycle` configuration block `ignoreChanges` argument.
-
permissionModel
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> permissionModel()
- Returns:
- Describes how the IAM roles required for your StackSet are created. Valid values: `SELF_MANAGED` (default), `SERVICE_MANAGED`.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
stackSetId
public com.pulumi.core.Output<java.lang.String> stackSetId()
- Returns:
- Unique identifier of the StackSet.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Key-value map of tags to associate with this StackSet and the Stacks created from it. AWS CloudFormation also propagates these tags to supported resources that are created in the Stacks. A maximum number of 50 tags can be specified. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
templateBody
public com.pulumi.core.Output<java.lang.String> templateBody()
- Returns:
- String containing the CloudFormation template body. Maximum size: 51,200 bytes. Conflicts with `templateUrl`.
-
templateUrl
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> templateUrl()
- Returns:
- String containing the location of a file containing the CloudFormation template body. The URL must point to a template that is located in an Amazon S3 bucket. Maximum location file size: 460,800 bytes. Conflicts with `templateBody`.
-
get
public static StackSet get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable StackSetState 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.
-
-