github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cloudformation/stackSet.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package cloudformation
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    11  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    12  )
    13  
    14  // Manages a CloudFormation StackSet. StackSets allow CloudFormation templates to be easily deployed across multiple accounts and regions via StackSet Instances (`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).
    15  //
    16  // > **NOTE:** All template parameters, including those with a `Default`, must be configured or ignored with the `lifecycle` configuration block `ignoreChanges` argument.
    17  //
    18  // > **NOTE:** All `NoEcho` template parameters must be ignored with the `lifecycle` configuration block `ignoreChanges` argument.
    19  //
    20  // ## Example Usage
    21  //
    22  // <!--Start PulumiCodeChooser -->
    23  // ```go
    24  // package main
    25  //
    26  // import (
    27  //
    28  //	"encoding/json"
    29  //	"fmt"
    30  //
    31  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudformation"
    32  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    33  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    34  //
    35  // )
    36  //
    37  //	func main() {
    38  //		pulumi.Run(func(ctx *pulumi.Context) error {
    39  //			aWSCloudFormationStackSetAdministrationRoleAssumeRolePolicy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    40  //				Statements: []iam.GetPolicyDocumentStatement{
    41  //					{
    42  //						Actions: []string{
    43  //							"sts:AssumeRole",
    44  //						},
    45  //						Effect: pulumi.StringRef("Allow"),
    46  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    47  //							{
    48  //								Identifiers: []string{
    49  //									"cloudformation.amazonaws.com",
    50  //								},
    51  //								Type: "Service",
    52  //							},
    53  //						},
    54  //					},
    55  //				},
    56  //			}, nil)
    57  //			if err != nil {
    58  //				return err
    59  //			}
    60  //			aWSCloudFormationStackSetAdministrationRole, err := iam.NewRole(ctx, "AWSCloudFormationStackSetAdministrationRole", &iam.RoleArgs{
    61  //				AssumeRolePolicy: pulumi.String(aWSCloudFormationStackSetAdministrationRoleAssumeRolePolicy.Json),
    62  //				Name:             pulumi.String("AWSCloudFormationStackSetAdministrationRole"),
    63  //			})
    64  //			if err != nil {
    65  //				return err
    66  //			}
    67  //			tmpJSON0, err := json.Marshal(map[string]interface{}{
    68  //				"Parameters": map[string]interface{}{
    69  //					"VPCCidr": map[string]interface{}{
    70  //						"Type":        "String",
    71  //						"Default":     "10.0.0.0/16",
    72  //						"Description": "Enter the CIDR block for the VPC. Default is 10.0.0.0/16.",
    73  //					},
    74  //				},
    75  //				"Resources": map[string]interface{}{
    76  //					"myVpc": map[string]interface{}{
    77  //						"Type": "AWS::EC2::VPC",
    78  //						"Properties": map[string]interface{}{
    79  //							"CidrBlock": map[string]interface{}{
    80  //								"Ref": "VPCCidr",
    81  //							},
    82  //							"Tags": []map[string]interface{}{
    83  //								map[string]interface{}{
    84  //									"Key":   "Name",
    85  //									"Value": "Primary_CF_VPC",
    86  //								},
    87  //							},
    88  //						},
    89  //					},
    90  //				},
    91  //			})
    92  //			if err != nil {
    93  //				return err
    94  //			}
    95  //			json0 := string(tmpJSON0)
    96  //			example, err := cloudformation.NewStackSet(ctx, "example", &cloudformation.StackSetArgs{
    97  //				AdministrationRoleArn: aWSCloudFormationStackSetAdministrationRole.Arn,
    98  //				Name:                  pulumi.String("example"),
    99  //				Parameters: pulumi.StringMap{
   100  //					"VPCCidr": pulumi.String("10.0.0.0/16"),
   101  //				},
   102  //				TemplateBody: pulumi.String(json0),
   103  //			})
   104  //			if err != nil {
   105  //				return err
   106  //			}
   107  //			aWSCloudFormationStackSetAdministrationRoleExecutionPolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
   108  //				Statements: iam.GetPolicyDocumentStatementArray{
   109  //					&iam.GetPolicyDocumentStatementArgs{
   110  //						Actions: pulumi.StringArray{
   111  //							pulumi.String("sts:AssumeRole"),
   112  //						},
   113  //						Effect: pulumi.String("Allow"),
   114  //						Resources: pulumi.StringArray{
   115  //							example.ExecutionRoleName.ApplyT(func(executionRoleName string) (string, error) {
   116  //								return fmt.Sprintf("arn:aws:iam::*:role/%v", executionRoleName), nil
   117  //							}).(pulumi.StringOutput),
   118  //						},
   119  //					},
   120  //				},
   121  //			}, nil)
   122  //			_, err = iam.NewRolePolicy(ctx, "AWSCloudFormationStackSetAdministrationRole_ExecutionPolicy", &iam.RolePolicyArgs{
   123  //				Name: pulumi.String("ExecutionPolicy"),
   124  //				Policy: aWSCloudFormationStackSetAdministrationRoleExecutionPolicy.ApplyT(func(aWSCloudFormationStackSetAdministrationRoleExecutionPolicy iam.GetPolicyDocumentResult) (*string, error) {
   125  //					return &aWSCloudFormationStackSetAdministrationRoleExecutionPolicy.Json, nil
   126  //				}).(pulumi.StringPtrOutput),
   127  //				Role: aWSCloudFormationStackSetAdministrationRole.Name,
   128  //			})
   129  //			if err != nil {
   130  //				return err
   131  //			}
   132  //			return nil
   133  //		})
   134  //	}
   135  //
   136  // ```
   137  // <!--End PulumiCodeChooser -->
   138  //
   139  // ## Import
   140  //
   141  // Import CloudFormation StackSets when acting a delegated administrator in a member account using the `name` and `call_as` values separated by a comma (`,`). For example:
   142  //
   143  // Using `pulumi import`, import CloudFormation StackSets using the `name`. For example:
   144  //
   145  // ```sh
   146  // $ pulumi import aws:cloudformation/stackSet:StackSet example example
   147  // ```
   148  // Using `pulumi import`, import CloudFormation StackSets when acting a delegated administrator in a member account using the `name` and `call_as` values separated by a comma (`,`). For example:
   149  //
   150  // ```sh
   151  // $ pulumi import aws:cloudformation/stackSet:StackSet example example,DELEGATED_ADMIN
   152  // ```
   153  type StackSet struct {
   154  	pulumi.CustomResourceState
   155  
   156  	// Amazon Resource Number (ARN) of the IAM Role in the administrator account. This must be defined when using the `SELF_MANAGED` permission model.
   157  	AdministrationRoleArn pulumi.StringPtrOutput `pulumi:"administrationRoleArn"`
   158  	// Amazon Resource Name (ARN) of the StackSet.
   159  	Arn pulumi.StringOutput `pulumi:"arn"`
   160  	// Configuration block containing the auto-deployment model for your StackSet. This can only be defined when using the `SERVICE_MANAGED` permission model.
   161  	AutoDeployment StackSetAutoDeploymentPtrOutput `pulumi:"autoDeployment"`
   162  	// 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`.
   163  	CallAs pulumi.StringPtrOutput `pulumi:"callAs"`
   164  	// A list of capabilities. Valid values: `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`, `CAPABILITY_AUTO_EXPAND`.
   165  	Capabilities pulumi.StringArrayOutput `pulumi:"capabilities"`
   166  	// Description of the StackSet.
   167  	Description pulumi.StringPtrOutput `pulumi:"description"`
   168  	// 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.
   169  	ExecutionRoleName pulumi.StringOutput `pulumi:"executionRoleName"`
   170  	// Configuration block to allow StackSets to perform non-conflicting operations concurrently and queues conflicting operations.
   171  	ManagedExecution StackSetManagedExecutionPtrOutput `pulumi:"managedExecution"`
   172  	// 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.
   173  	Name pulumi.StringOutput `pulumi:"name"`
   174  	// Preferences for how AWS CloudFormation performs a stack set update.
   175  	OperationPreferences StackSetOperationPreferencesPtrOutput `pulumi:"operationPreferences"`
   176  	// 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.
   177  	Parameters pulumi.StringMapOutput `pulumi:"parameters"`
   178  	// Describes how the IAM roles required for your StackSet are created. Valid values: `SELF_MANAGED` (default), `SERVICE_MANAGED`.
   179  	PermissionModel pulumi.StringPtrOutput `pulumi:"permissionModel"`
   180  	// Unique identifier of the StackSet.
   181  	StackSetId pulumi.StringOutput `pulumi:"stackSetId"`
   182  	// 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.
   183  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   184  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   185  	//
   186  	// Deprecated: Please use `tags` instead.
   187  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   188  	// String containing the CloudFormation template body. Maximum size: 51,200 bytes. Conflicts with `templateUrl`.
   189  	TemplateBody pulumi.StringOutput `pulumi:"templateBody"`
   190  	// 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`.
   191  	TemplateUrl pulumi.StringPtrOutput `pulumi:"templateUrl"`
   192  }
   193  
   194  // NewStackSet registers a new resource with the given unique name, arguments, and options.
   195  func NewStackSet(ctx *pulumi.Context,
   196  	name string, args *StackSetArgs, opts ...pulumi.ResourceOption) (*StackSet, error) {
   197  	if args == nil {
   198  		args = &StackSetArgs{}
   199  	}
   200  
   201  	opts = internal.PkgResourceDefaultOpts(opts)
   202  	var resource StackSet
   203  	err := ctx.RegisterResource("aws:cloudformation/stackSet:StackSet", name, args, &resource, opts...)
   204  	if err != nil {
   205  		return nil, err
   206  	}
   207  	return &resource, nil
   208  }
   209  
   210  // GetStackSet gets an existing StackSet resource's state with the given name, ID, and optional
   211  // state properties that are used to uniquely qualify the lookup (nil if not required).
   212  func GetStackSet(ctx *pulumi.Context,
   213  	name string, id pulumi.IDInput, state *StackSetState, opts ...pulumi.ResourceOption) (*StackSet, error) {
   214  	var resource StackSet
   215  	err := ctx.ReadResource("aws:cloudformation/stackSet:StackSet", name, id, state, &resource, opts...)
   216  	if err != nil {
   217  		return nil, err
   218  	}
   219  	return &resource, nil
   220  }
   221  
   222  // Input properties used for looking up and filtering StackSet resources.
   223  type stackSetState struct {
   224  	// Amazon Resource Number (ARN) of the IAM Role in the administrator account. This must be defined when using the `SELF_MANAGED` permission model.
   225  	AdministrationRoleArn *string `pulumi:"administrationRoleArn"`
   226  	// Amazon Resource Name (ARN) of the StackSet.
   227  	Arn *string `pulumi:"arn"`
   228  	// Configuration block containing the auto-deployment model for your StackSet. This can only be defined when using the `SERVICE_MANAGED` permission model.
   229  	AutoDeployment *StackSetAutoDeployment `pulumi:"autoDeployment"`
   230  	// 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`.
   231  	CallAs *string `pulumi:"callAs"`
   232  	// A list of capabilities. Valid values: `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`, `CAPABILITY_AUTO_EXPAND`.
   233  	Capabilities []string `pulumi:"capabilities"`
   234  	// Description of the StackSet.
   235  	Description *string `pulumi:"description"`
   236  	// 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.
   237  	ExecutionRoleName *string `pulumi:"executionRoleName"`
   238  	// Configuration block to allow StackSets to perform non-conflicting operations concurrently and queues conflicting operations.
   239  	ManagedExecution *StackSetManagedExecution `pulumi:"managedExecution"`
   240  	// 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.
   241  	Name *string `pulumi:"name"`
   242  	// Preferences for how AWS CloudFormation performs a stack set update.
   243  	OperationPreferences *StackSetOperationPreferences `pulumi:"operationPreferences"`
   244  	// 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.
   245  	Parameters map[string]string `pulumi:"parameters"`
   246  	// Describes how the IAM roles required for your StackSet are created. Valid values: `SELF_MANAGED` (default), `SERVICE_MANAGED`.
   247  	PermissionModel *string `pulumi:"permissionModel"`
   248  	// Unique identifier of the StackSet.
   249  	StackSetId *string `pulumi:"stackSetId"`
   250  	// 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.
   251  	Tags map[string]string `pulumi:"tags"`
   252  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   253  	//
   254  	// Deprecated: Please use `tags` instead.
   255  	TagsAll map[string]string `pulumi:"tagsAll"`
   256  	// String containing the CloudFormation template body. Maximum size: 51,200 bytes. Conflicts with `templateUrl`.
   257  	TemplateBody *string `pulumi:"templateBody"`
   258  	// 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`.
   259  	TemplateUrl *string `pulumi:"templateUrl"`
   260  }
   261  
   262  type StackSetState struct {
   263  	// Amazon Resource Number (ARN) of the IAM Role in the administrator account. This must be defined when using the `SELF_MANAGED` permission model.
   264  	AdministrationRoleArn pulumi.StringPtrInput
   265  	// Amazon Resource Name (ARN) of the StackSet.
   266  	Arn pulumi.StringPtrInput
   267  	// Configuration block containing the auto-deployment model for your StackSet. This can only be defined when using the `SERVICE_MANAGED` permission model.
   268  	AutoDeployment StackSetAutoDeploymentPtrInput
   269  	// 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`.
   270  	CallAs pulumi.StringPtrInput
   271  	// A list of capabilities. Valid values: `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`, `CAPABILITY_AUTO_EXPAND`.
   272  	Capabilities pulumi.StringArrayInput
   273  	// Description of the StackSet.
   274  	Description pulumi.StringPtrInput
   275  	// 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.
   276  	ExecutionRoleName pulumi.StringPtrInput
   277  	// Configuration block to allow StackSets to perform non-conflicting operations concurrently and queues conflicting operations.
   278  	ManagedExecution StackSetManagedExecutionPtrInput
   279  	// 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.
   280  	Name pulumi.StringPtrInput
   281  	// Preferences for how AWS CloudFormation performs a stack set update.
   282  	OperationPreferences StackSetOperationPreferencesPtrInput
   283  	// 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.
   284  	Parameters pulumi.StringMapInput
   285  	// Describes how the IAM roles required for your StackSet are created. Valid values: `SELF_MANAGED` (default), `SERVICE_MANAGED`.
   286  	PermissionModel pulumi.StringPtrInput
   287  	// Unique identifier of the StackSet.
   288  	StackSetId pulumi.StringPtrInput
   289  	// 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.
   290  	Tags pulumi.StringMapInput
   291  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   292  	//
   293  	// Deprecated: Please use `tags` instead.
   294  	TagsAll pulumi.StringMapInput
   295  	// String containing the CloudFormation template body. Maximum size: 51,200 bytes. Conflicts with `templateUrl`.
   296  	TemplateBody pulumi.StringPtrInput
   297  	// 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`.
   298  	TemplateUrl pulumi.StringPtrInput
   299  }
   300  
   301  func (StackSetState) ElementType() reflect.Type {
   302  	return reflect.TypeOf((*stackSetState)(nil)).Elem()
   303  }
   304  
   305  type stackSetArgs struct {
   306  	// Amazon Resource Number (ARN) of the IAM Role in the administrator account. This must be defined when using the `SELF_MANAGED` permission model.
   307  	AdministrationRoleArn *string `pulumi:"administrationRoleArn"`
   308  	// Configuration block containing the auto-deployment model for your StackSet. This can only be defined when using the `SERVICE_MANAGED` permission model.
   309  	AutoDeployment *StackSetAutoDeployment `pulumi:"autoDeployment"`
   310  	// 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`.
   311  	CallAs *string `pulumi:"callAs"`
   312  	// A list of capabilities. Valid values: `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`, `CAPABILITY_AUTO_EXPAND`.
   313  	Capabilities []string `pulumi:"capabilities"`
   314  	// Description of the StackSet.
   315  	Description *string `pulumi:"description"`
   316  	// 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.
   317  	ExecutionRoleName *string `pulumi:"executionRoleName"`
   318  	// Configuration block to allow StackSets to perform non-conflicting operations concurrently and queues conflicting operations.
   319  	ManagedExecution *StackSetManagedExecution `pulumi:"managedExecution"`
   320  	// 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.
   321  	Name *string `pulumi:"name"`
   322  	// Preferences for how AWS CloudFormation performs a stack set update.
   323  	OperationPreferences *StackSetOperationPreferences `pulumi:"operationPreferences"`
   324  	// 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.
   325  	Parameters map[string]string `pulumi:"parameters"`
   326  	// Describes how the IAM roles required for your StackSet are created. Valid values: `SELF_MANAGED` (default), `SERVICE_MANAGED`.
   327  	PermissionModel *string `pulumi:"permissionModel"`
   328  	// 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.
   329  	Tags map[string]string `pulumi:"tags"`
   330  	// String containing the CloudFormation template body. Maximum size: 51,200 bytes. Conflicts with `templateUrl`.
   331  	TemplateBody *string `pulumi:"templateBody"`
   332  	// 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`.
   333  	TemplateUrl *string `pulumi:"templateUrl"`
   334  }
   335  
   336  // The set of arguments for constructing a StackSet resource.
   337  type StackSetArgs struct {
   338  	// Amazon Resource Number (ARN) of the IAM Role in the administrator account. This must be defined when using the `SELF_MANAGED` permission model.
   339  	AdministrationRoleArn pulumi.StringPtrInput
   340  	// Configuration block containing the auto-deployment model for your StackSet. This can only be defined when using the `SERVICE_MANAGED` permission model.
   341  	AutoDeployment StackSetAutoDeploymentPtrInput
   342  	// 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`.
   343  	CallAs pulumi.StringPtrInput
   344  	// A list of capabilities. Valid values: `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`, `CAPABILITY_AUTO_EXPAND`.
   345  	Capabilities pulumi.StringArrayInput
   346  	// Description of the StackSet.
   347  	Description pulumi.StringPtrInput
   348  	// 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.
   349  	ExecutionRoleName pulumi.StringPtrInput
   350  	// Configuration block to allow StackSets to perform non-conflicting operations concurrently and queues conflicting operations.
   351  	ManagedExecution StackSetManagedExecutionPtrInput
   352  	// 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.
   353  	Name pulumi.StringPtrInput
   354  	// Preferences for how AWS CloudFormation performs a stack set update.
   355  	OperationPreferences StackSetOperationPreferencesPtrInput
   356  	// 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.
   357  	Parameters pulumi.StringMapInput
   358  	// Describes how the IAM roles required for your StackSet are created. Valid values: `SELF_MANAGED` (default), `SERVICE_MANAGED`.
   359  	PermissionModel pulumi.StringPtrInput
   360  	// 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.
   361  	Tags pulumi.StringMapInput
   362  	// String containing the CloudFormation template body. Maximum size: 51,200 bytes. Conflicts with `templateUrl`.
   363  	TemplateBody pulumi.StringPtrInput
   364  	// 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`.
   365  	TemplateUrl pulumi.StringPtrInput
   366  }
   367  
   368  func (StackSetArgs) ElementType() reflect.Type {
   369  	return reflect.TypeOf((*stackSetArgs)(nil)).Elem()
   370  }
   371  
   372  type StackSetInput interface {
   373  	pulumi.Input
   374  
   375  	ToStackSetOutput() StackSetOutput
   376  	ToStackSetOutputWithContext(ctx context.Context) StackSetOutput
   377  }
   378  
   379  func (*StackSet) ElementType() reflect.Type {
   380  	return reflect.TypeOf((**StackSet)(nil)).Elem()
   381  }
   382  
   383  func (i *StackSet) ToStackSetOutput() StackSetOutput {
   384  	return i.ToStackSetOutputWithContext(context.Background())
   385  }
   386  
   387  func (i *StackSet) ToStackSetOutputWithContext(ctx context.Context) StackSetOutput {
   388  	return pulumi.ToOutputWithContext(ctx, i).(StackSetOutput)
   389  }
   390  
   391  // StackSetArrayInput is an input type that accepts StackSetArray and StackSetArrayOutput values.
   392  // You can construct a concrete instance of `StackSetArrayInput` via:
   393  //
   394  //	StackSetArray{ StackSetArgs{...} }
   395  type StackSetArrayInput interface {
   396  	pulumi.Input
   397  
   398  	ToStackSetArrayOutput() StackSetArrayOutput
   399  	ToStackSetArrayOutputWithContext(context.Context) StackSetArrayOutput
   400  }
   401  
   402  type StackSetArray []StackSetInput
   403  
   404  func (StackSetArray) ElementType() reflect.Type {
   405  	return reflect.TypeOf((*[]*StackSet)(nil)).Elem()
   406  }
   407  
   408  func (i StackSetArray) ToStackSetArrayOutput() StackSetArrayOutput {
   409  	return i.ToStackSetArrayOutputWithContext(context.Background())
   410  }
   411  
   412  func (i StackSetArray) ToStackSetArrayOutputWithContext(ctx context.Context) StackSetArrayOutput {
   413  	return pulumi.ToOutputWithContext(ctx, i).(StackSetArrayOutput)
   414  }
   415  
   416  // StackSetMapInput is an input type that accepts StackSetMap and StackSetMapOutput values.
   417  // You can construct a concrete instance of `StackSetMapInput` via:
   418  //
   419  //	StackSetMap{ "key": StackSetArgs{...} }
   420  type StackSetMapInput interface {
   421  	pulumi.Input
   422  
   423  	ToStackSetMapOutput() StackSetMapOutput
   424  	ToStackSetMapOutputWithContext(context.Context) StackSetMapOutput
   425  }
   426  
   427  type StackSetMap map[string]StackSetInput
   428  
   429  func (StackSetMap) ElementType() reflect.Type {
   430  	return reflect.TypeOf((*map[string]*StackSet)(nil)).Elem()
   431  }
   432  
   433  func (i StackSetMap) ToStackSetMapOutput() StackSetMapOutput {
   434  	return i.ToStackSetMapOutputWithContext(context.Background())
   435  }
   436  
   437  func (i StackSetMap) ToStackSetMapOutputWithContext(ctx context.Context) StackSetMapOutput {
   438  	return pulumi.ToOutputWithContext(ctx, i).(StackSetMapOutput)
   439  }
   440  
   441  type StackSetOutput struct{ *pulumi.OutputState }
   442  
   443  func (StackSetOutput) ElementType() reflect.Type {
   444  	return reflect.TypeOf((**StackSet)(nil)).Elem()
   445  }
   446  
   447  func (o StackSetOutput) ToStackSetOutput() StackSetOutput {
   448  	return o
   449  }
   450  
   451  func (o StackSetOutput) ToStackSetOutputWithContext(ctx context.Context) StackSetOutput {
   452  	return o
   453  }
   454  
   455  // Amazon Resource Number (ARN) of the IAM Role in the administrator account. This must be defined when using the `SELF_MANAGED` permission model.
   456  func (o StackSetOutput) AdministrationRoleArn() pulumi.StringPtrOutput {
   457  	return o.ApplyT(func(v *StackSet) pulumi.StringPtrOutput { return v.AdministrationRoleArn }).(pulumi.StringPtrOutput)
   458  }
   459  
   460  // Amazon Resource Name (ARN) of the StackSet.
   461  func (o StackSetOutput) Arn() pulumi.StringOutput {
   462  	return o.ApplyT(func(v *StackSet) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   463  }
   464  
   465  // Configuration block containing the auto-deployment model for your StackSet. This can only be defined when using the `SERVICE_MANAGED` permission model.
   466  func (o StackSetOutput) AutoDeployment() StackSetAutoDeploymentPtrOutput {
   467  	return o.ApplyT(func(v *StackSet) StackSetAutoDeploymentPtrOutput { return v.AutoDeployment }).(StackSetAutoDeploymentPtrOutput)
   468  }
   469  
   470  // 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`.
   471  func (o StackSetOutput) CallAs() pulumi.StringPtrOutput {
   472  	return o.ApplyT(func(v *StackSet) pulumi.StringPtrOutput { return v.CallAs }).(pulumi.StringPtrOutput)
   473  }
   474  
   475  // A list of capabilities. Valid values: `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM`, `CAPABILITY_AUTO_EXPAND`.
   476  func (o StackSetOutput) Capabilities() pulumi.StringArrayOutput {
   477  	return o.ApplyT(func(v *StackSet) pulumi.StringArrayOutput { return v.Capabilities }).(pulumi.StringArrayOutput)
   478  }
   479  
   480  // Description of the StackSet.
   481  func (o StackSetOutput) Description() pulumi.StringPtrOutput {
   482  	return o.ApplyT(func(v *StackSet) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   483  }
   484  
   485  // 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.
   486  func (o StackSetOutput) ExecutionRoleName() pulumi.StringOutput {
   487  	return o.ApplyT(func(v *StackSet) pulumi.StringOutput { return v.ExecutionRoleName }).(pulumi.StringOutput)
   488  }
   489  
   490  // Configuration block to allow StackSets to perform non-conflicting operations concurrently and queues conflicting operations.
   491  func (o StackSetOutput) ManagedExecution() StackSetManagedExecutionPtrOutput {
   492  	return o.ApplyT(func(v *StackSet) StackSetManagedExecutionPtrOutput { return v.ManagedExecution }).(StackSetManagedExecutionPtrOutput)
   493  }
   494  
   495  // 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.
   496  func (o StackSetOutput) Name() pulumi.StringOutput {
   497  	return o.ApplyT(func(v *StackSet) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   498  }
   499  
   500  // Preferences for how AWS CloudFormation performs a stack set update.
   501  func (o StackSetOutput) OperationPreferences() StackSetOperationPreferencesPtrOutput {
   502  	return o.ApplyT(func(v *StackSet) StackSetOperationPreferencesPtrOutput { return v.OperationPreferences }).(StackSetOperationPreferencesPtrOutput)
   503  }
   504  
   505  // 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.
   506  func (o StackSetOutput) Parameters() pulumi.StringMapOutput {
   507  	return o.ApplyT(func(v *StackSet) pulumi.StringMapOutput { return v.Parameters }).(pulumi.StringMapOutput)
   508  }
   509  
   510  // Describes how the IAM roles required for your StackSet are created. Valid values: `SELF_MANAGED` (default), `SERVICE_MANAGED`.
   511  func (o StackSetOutput) PermissionModel() pulumi.StringPtrOutput {
   512  	return o.ApplyT(func(v *StackSet) pulumi.StringPtrOutput { return v.PermissionModel }).(pulumi.StringPtrOutput)
   513  }
   514  
   515  // Unique identifier of the StackSet.
   516  func (o StackSetOutput) StackSetId() pulumi.StringOutput {
   517  	return o.ApplyT(func(v *StackSet) pulumi.StringOutput { return v.StackSetId }).(pulumi.StringOutput)
   518  }
   519  
   520  // 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.
   521  func (o StackSetOutput) Tags() pulumi.StringMapOutput {
   522  	return o.ApplyT(func(v *StackSet) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   523  }
   524  
   525  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   526  //
   527  // Deprecated: Please use `tags` instead.
   528  func (o StackSetOutput) TagsAll() pulumi.StringMapOutput {
   529  	return o.ApplyT(func(v *StackSet) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   530  }
   531  
   532  // String containing the CloudFormation template body. Maximum size: 51,200 bytes. Conflicts with `templateUrl`.
   533  func (o StackSetOutput) TemplateBody() pulumi.StringOutput {
   534  	return o.ApplyT(func(v *StackSet) pulumi.StringOutput { return v.TemplateBody }).(pulumi.StringOutput)
   535  }
   536  
   537  // 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`.
   538  func (o StackSetOutput) TemplateUrl() pulumi.StringPtrOutput {
   539  	return o.ApplyT(func(v *StackSet) pulumi.StringPtrOutput { return v.TemplateUrl }).(pulumi.StringPtrOutput)
   540  }
   541  
   542  type StackSetArrayOutput struct{ *pulumi.OutputState }
   543  
   544  func (StackSetArrayOutput) ElementType() reflect.Type {
   545  	return reflect.TypeOf((*[]*StackSet)(nil)).Elem()
   546  }
   547  
   548  func (o StackSetArrayOutput) ToStackSetArrayOutput() StackSetArrayOutput {
   549  	return o
   550  }
   551  
   552  func (o StackSetArrayOutput) ToStackSetArrayOutputWithContext(ctx context.Context) StackSetArrayOutput {
   553  	return o
   554  }
   555  
   556  func (o StackSetArrayOutput) Index(i pulumi.IntInput) StackSetOutput {
   557  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *StackSet {
   558  		return vs[0].([]*StackSet)[vs[1].(int)]
   559  	}).(StackSetOutput)
   560  }
   561  
   562  type StackSetMapOutput struct{ *pulumi.OutputState }
   563  
   564  func (StackSetMapOutput) ElementType() reflect.Type {
   565  	return reflect.TypeOf((*map[string]*StackSet)(nil)).Elem()
   566  }
   567  
   568  func (o StackSetMapOutput) ToStackSetMapOutput() StackSetMapOutput {
   569  	return o
   570  }
   571  
   572  func (o StackSetMapOutput) ToStackSetMapOutputWithContext(ctx context.Context) StackSetMapOutput {
   573  	return o
   574  }
   575  
   576  func (o StackSetMapOutput) MapIndex(k pulumi.StringInput) StackSetOutput {
   577  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *StackSet {
   578  		return vs[0].(map[string]*StackSet)[vs[1].(string)]
   579  	}).(StackSetOutput)
   580  }
   581  
   582  func init() {
   583  	pulumi.RegisterInputType(reflect.TypeOf((*StackSetInput)(nil)).Elem(), &StackSet{})
   584  	pulumi.RegisterInputType(reflect.TypeOf((*StackSetArrayInput)(nil)).Elem(), StackSetArray{})
   585  	pulumi.RegisterInputType(reflect.TypeOf((*StackSetMapInput)(nil)).Elem(), StackSetMap{})
   586  	pulumi.RegisterOutputType(StackSetOutput{})
   587  	pulumi.RegisterOutputType(StackSetArrayOutput{})
   588  	pulumi.RegisterOutputType(StackSetMapOutput{})
   589  }