github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/opsworks/ecsClusterLayer.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 opsworks
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides an OpsWorks ECS Cluster layer resource.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opsworks"
    26  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    27  //
    28  // )
    29  //
    30  //	func main() {
    31  //		pulumi.Run(func(ctx *pulumi.Context) error {
    32  //			_, err := opsworks.NewEcsClusterLayer(ctx, "example", &opsworks.EcsClusterLayerArgs{
    33  //				StackId:       pulumi.Any(exampleAwsOpsworksStack.Id),
    34  //				EcsClusterArn: pulumi.Any(exampleAwsEcsCluster.Arn),
    35  //			})
    36  //			if err != nil {
    37  //				return err
    38  //			}
    39  //			return nil
    40  //		})
    41  //	}
    42  //
    43  // ```
    44  // <!--End PulumiCodeChooser -->
    45  type EcsClusterLayer struct {
    46  	pulumi.CustomResourceState
    47  
    48  	// The Amazon Resource Name(ARN) of the layer.
    49  	Arn pulumi.StringOutput `pulumi:"arn"`
    50  	// Whether to automatically assign an elastic IP address to the layer's instances.
    51  	AutoAssignElasticIps pulumi.BoolPtrOutput `pulumi:"autoAssignElasticIps"`
    52  	// For stacks belonging to a VPC, whether to automatically assign a public IP address to each of the layer's instances.
    53  	AutoAssignPublicIps pulumi.BoolPtrOutput `pulumi:"autoAssignPublicIps"`
    54  	// Whether to enable auto-healing for the layer.
    55  	AutoHealing             pulumi.BoolPtrOutput                            `pulumi:"autoHealing"`
    56  	CloudwatchConfiguration EcsClusterLayerCloudwatchConfigurationPtrOutput `pulumi:"cloudwatchConfiguration"`
    57  	CustomConfigureRecipes  pulumi.StringArrayOutput                        `pulumi:"customConfigureRecipes"`
    58  	CustomDeployRecipes     pulumi.StringArrayOutput                        `pulumi:"customDeployRecipes"`
    59  	// The ARN of an IAM profile that will be used for the layer's instances.
    60  	CustomInstanceProfileArn pulumi.StringPtrOutput `pulumi:"customInstanceProfileArn"`
    61  	// Custom JSON attributes to apply to the layer.
    62  	CustomJson pulumi.StringPtrOutput `pulumi:"customJson"`
    63  	// Ids for a set of security groups to apply to the layer's instances.
    64  	CustomSecurityGroupIds pulumi.StringArrayOutput `pulumi:"customSecurityGroupIds"`
    65  	CustomSetupRecipes     pulumi.StringArrayOutput `pulumi:"customSetupRecipes"`
    66  	CustomShutdownRecipes  pulumi.StringArrayOutput `pulumi:"customShutdownRecipes"`
    67  	CustomUndeployRecipes  pulumi.StringArrayOutput `pulumi:"customUndeployRecipes"`
    68  	// Whether to enable Elastic Load Balancing connection draining.
    69  	DrainElbOnShutdown pulumi.BoolPtrOutput `pulumi:"drainElbOnShutdown"`
    70  	// `ebsVolume` blocks, as described below, will each create an EBS volume and connect it to the layer's instances.
    71  	EbsVolumes EcsClusterLayerEbsVolumeArrayOutput `pulumi:"ebsVolumes"`
    72  	// The ECS Cluster ARN of the layer.
    73  	EcsClusterArn pulumi.StringOutput `pulumi:"ecsClusterArn"`
    74  	// Name of an Elastic Load Balancer to attach to this layer
    75  	ElasticLoadBalancer pulumi.StringPtrOutput `pulumi:"elasticLoadBalancer"`
    76  	// Whether to install OS and package updates on each instance when it boots.
    77  	InstallUpdatesOnBoot pulumi.BoolPtrOutput `pulumi:"installUpdatesOnBoot"`
    78  	// The time, in seconds, that OpsWorks will wait for Chef to complete after triggering the Shutdown event.
    79  	InstanceShutdownTimeout pulumi.IntPtrOutput                       `pulumi:"instanceShutdownTimeout"`
    80  	LoadBasedAutoScaling    EcsClusterLayerLoadBasedAutoScalingOutput `pulumi:"loadBasedAutoScaling"`
    81  	// A human-readable name for the layer.
    82  	Name pulumi.StringOutput `pulumi:"name"`
    83  	// ID of the stack the layer will belong to.
    84  	StackId pulumi.StringOutput `pulumi:"stackId"`
    85  	// Names of a set of system packages to install on the layer's instances.
    86  	SystemPackages pulumi.StringArrayOutput `pulumi:"systemPackages"`
    87  	// A mapping of tags to assign to the resource.
    88  	//
    89  	// The following extra optional arguments, all lists of Chef recipe names, allow
    90  	// custom Chef recipes to be applied to layer instances at the five different
    91  	// lifecycle events, if custom cookbooks are enabled on the layer's stack:
    92  	Tags pulumi.StringMapOutput `pulumi:"tags"`
    93  	// Deprecated: Please use `tags` instead.
    94  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
    95  	// Whether to use EBS-optimized instances.
    96  	UseEbsOptimizedInstances pulumi.BoolPtrOutput `pulumi:"useEbsOptimizedInstances"`
    97  }
    98  
    99  // NewEcsClusterLayer registers a new resource with the given unique name, arguments, and options.
   100  func NewEcsClusterLayer(ctx *pulumi.Context,
   101  	name string, args *EcsClusterLayerArgs, opts ...pulumi.ResourceOption) (*EcsClusterLayer, error) {
   102  	if args == nil {
   103  		return nil, errors.New("missing one or more required arguments")
   104  	}
   105  
   106  	if args.EcsClusterArn == nil {
   107  		return nil, errors.New("invalid value for required argument 'EcsClusterArn'")
   108  	}
   109  	if args.StackId == nil {
   110  		return nil, errors.New("invalid value for required argument 'StackId'")
   111  	}
   112  	opts = internal.PkgResourceDefaultOpts(opts)
   113  	var resource EcsClusterLayer
   114  	err := ctx.RegisterResource("aws:opsworks/ecsClusterLayer:EcsClusterLayer", name, args, &resource, opts...)
   115  	if err != nil {
   116  		return nil, err
   117  	}
   118  	return &resource, nil
   119  }
   120  
   121  // GetEcsClusterLayer gets an existing EcsClusterLayer resource's state with the given name, ID, and optional
   122  // state properties that are used to uniquely qualify the lookup (nil if not required).
   123  func GetEcsClusterLayer(ctx *pulumi.Context,
   124  	name string, id pulumi.IDInput, state *EcsClusterLayerState, opts ...pulumi.ResourceOption) (*EcsClusterLayer, error) {
   125  	var resource EcsClusterLayer
   126  	err := ctx.ReadResource("aws:opsworks/ecsClusterLayer:EcsClusterLayer", name, id, state, &resource, opts...)
   127  	if err != nil {
   128  		return nil, err
   129  	}
   130  	return &resource, nil
   131  }
   132  
   133  // Input properties used for looking up and filtering EcsClusterLayer resources.
   134  type ecsClusterLayerState struct {
   135  	// The Amazon Resource Name(ARN) of the layer.
   136  	Arn *string `pulumi:"arn"`
   137  	// Whether to automatically assign an elastic IP address to the layer's instances.
   138  	AutoAssignElasticIps *bool `pulumi:"autoAssignElasticIps"`
   139  	// For stacks belonging to a VPC, whether to automatically assign a public IP address to each of the layer's instances.
   140  	AutoAssignPublicIps *bool `pulumi:"autoAssignPublicIps"`
   141  	// Whether to enable auto-healing for the layer.
   142  	AutoHealing             *bool                                   `pulumi:"autoHealing"`
   143  	CloudwatchConfiguration *EcsClusterLayerCloudwatchConfiguration `pulumi:"cloudwatchConfiguration"`
   144  	CustomConfigureRecipes  []string                                `pulumi:"customConfigureRecipes"`
   145  	CustomDeployRecipes     []string                                `pulumi:"customDeployRecipes"`
   146  	// The ARN of an IAM profile that will be used for the layer's instances.
   147  	CustomInstanceProfileArn *string `pulumi:"customInstanceProfileArn"`
   148  	// Custom JSON attributes to apply to the layer.
   149  	CustomJson *string `pulumi:"customJson"`
   150  	// Ids for a set of security groups to apply to the layer's instances.
   151  	CustomSecurityGroupIds []string `pulumi:"customSecurityGroupIds"`
   152  	CustomSetupRecipes     []string `pulumi:"customSetupRecipes"`
   153  	CustomShutdownRecipes  []string `pulumi:"customShutdownRecipes"`
   154  	CustomUndeployRecipes  []string `pulumi:"customUndeployRecipes"`
   155  	// Whether to enable Elastic Load Balancing connection draining.
   156  	DrainElbOnShutdown *bool `pulumi:"drainElbOnShutdown"`
   157  	// `ebsVolume` blocks, as described below, will each create an EBS volume and connect it to the layer's instances.
   158  	EbsVolumes []EcsClusterLayerEbsVolume `pulumi:"ebsVolumes"`
   159  	// The ECS Cluster ARN of the layer.
   160  	EcsClusterArn *string `pulumi:"ecsClusterArn"`
   161  	// Name of an Elastic Load Balancer to attach to this layer
   162  	ElasticLoadBalancer *string `pulumi:"elasticLoadBalancer"`
   163  	// Whether to install OS and package updates on each instance when it boots.
   164  	InstallUpdatesOnBoot *bool `pulumi:"installUpdatesOnBoot"`
   165  	// The time, in seconds, that OpsWorks will wait for Chef to complete after triggering the Shutdown event.
   166  	InstanceShutdownTimeout *int                                 `pulumi:"instanceShutdownTimeout"`
   167  	LoadBasedAutoScaling    *EcsClusterLayerLoadBasedAutoScaling `pulumi:"loadBasedAutoScaling"`
   168  	// A human-readable name for the layer.
   169  	Name *string `pulumi:"name"`
   170  	// ID of the stack the layer will belong to.
   171  	StackId *string `pulumi:"stackId"`
   172  	// Names of a set of system packages to install on the layer's instances.
   173  	SystemPackages []string `pulumi:"systemPackages"`
   174  	// A mapping of tags to assign to the resource.
   175  	//
   176  	// The following extra optional arguments, all lists of Chef recipe names, allow
   177  	// custom Chef recipes to be applied to layer instances at the five different
   178  	// lifecycle events, if custom cookbooks are enabled on the layer's stack:
   179  	Tags map[string]string `pulumi:"tags"`
   180  	// Deprecated: Please use `tags` instead.
   181  	TagsAll map[string]string `pulumi:"tagsAll"`
   182  	// Whether to use EBS-optimized instances.
   183  	UseEbsOptimizedInstances *bool `pulumi:"useEbsOptimizedInstances"`
   184  }
   185  
   186  type EcsClusterLayerState struct {
   187  	// The Amazon Resource Name(ARN) of the layer.
   188  	Arn pulumi.StringPtrInput
   189  	// Whether to automatically assign an elastic IP address to the layer's instances.
   190  	AutoAssignElasticIps pulumi.BoolPtrInput
   191  	// For stacks belonging to a VPC, whether to automatically assign a public IP address to each of the layer's instances.
   192  	AutoAssignPublicIps pulumi.BoolPtrInput
   193  	// Whether to enable auto-healing for the layer.
   194  	AutoHealing             pulumi.BoolPtrInput
   195  	CloudwatchConfiguration EcsClusterLayerCloudwatchConfigurationPtrInput
   196  	CustomConfigureRecipes  pulumi.StringArrayInput
   197  	CustomDeployRecipes     pulumi.StringArrayInput
   198  	// The ARN of an IAM profile that will be used for the layer's instances.
   199  	CustomInstanceProfileArn pulumi.StringPtrInput
   200  	// Custom JSON attributes to apply to the layer.
   201  	CustomJson pulumi.StringPtrInput
   202  	// Ids for a set of security groups to apply to the layer's instances.
   203  	CustomSecurityGroupIds pulumi.StringArrayInput
   204  	CustomSetupRecipes     pulumi.StringArrayInput
   205  	CustomShutdownRecipes  pulumi.StringArrayInput
   206  	CustomUndeployRecipes  pulumi.StringArrayInput
   207  	// Whether to enable Elastic Load Balancing connection draining.
   208  	DrainElbOnShutdown pulumi.BoolPtrInput
   209  	// `ebsVolume` blocks, as described below, will each create an EBS volume and connect it to the layer's instances.
   210  	EbsVolumes EcsClusterLayerEbsVolumeArrayInput
   211  	// The ECS Cluster ARN of the layer.
   212  	EcsClusterArn pulumi.StringPtrInput
   213  	// Name of an Elastic Load Balancer to attach to this layer
   214  	ElasticLoadBalancer pulumi.StringPtrInput
   215  	// Whether to install OS and package updates on each instance when it boots.
   216  	InstallUpdatesOnBoot pulumi.BoolPtrInput
   217  	// The time, in seconds, that OpsWorks will wait for Chef to complete after triggering the Shutdown event.
   218  	InstanceShutdownTimeout pulumi.IntPtrInput
   219  	LoadBasedAutoScaling    EcsClusterLayerLoadBasedAutoScalingPtrInput
   220  	// A human-readable name for the layer.
   221  	Name pulumi.StringPtrInput
   222  	// ID of the stack the layer will belong to.
   223  	StackId pulumi.StringPtrInput
   224  	// Names of a set of system packages to install on the layer's instances.
   225  	SystemPackages pulumi.StringArrayInput
   226  	// A mapping of tags to assign to the resource.
   227  	//
   228  	// The following extra optional arguments, all lists of Chef recipe names, allow
   229  	// custom Chef recipes to be applied to layer instances at the five different
   230  	// lifecycle events, if custom cookbooks are enabled on the layer's stack:
   231  	Tags pulumi.StringMapInput
   232  	// Deprecated: Please use `tags` instead.
   233  	TagsAll pulumi.StringMapInput
   234  	// Whether to use EBS-optimized instances.
   235  	UseEbsOptimizedInstances pulumi.BoolPtrInput
   236  }
   237  
   238  func (EcsClusterLayerState) ElementType() reflect.Type {
   239  	return reflect.TypeOf((*ecsClusterLayerState)(nil)).Elem()
   240  }
   241  
   242  type ecsClusterLayerArgs struct {
   243  	// Whether to automatically assign an elastic IP address to the layer's instances.
   244  	AutoAssignElasticIps *bool `pulumi:"autoAssignElasticIps"`
   245  	// For stacks belonging to a VPC, whether to automatically assign a public IP address to each of the layer's instances.
   246  	AutoAssignPublicIps *bool `pulumi:"autoAssignPublicIps"`
   247  	// Whether to enable auto-healing for the layer.
   248  	AutoHealing             *bool                                   `pulumi:"autoHealing"`
   249  	CloudwatchConfiguration *EcsClusterLayerCloudwatchConfiguration `pulumi:"cloudwatchConfiguration"`
   250  	CustomConfigureRecipes  []string                                `pulumi:"customConfigureRecipes"`
   251  	CustomDeployRecipes     []string                                `pulumi:"customDeployRecipes"`
   252  	// The ARN of an IAM profile that will be used for the layer's instances.
   253  	CustomInstanceProfileArn *string `pulumi:"customInstanceProfileArn"`
   254  	// Custom JSON attributes to apply to the layer.
   255  	CustomJson *string `pulumi:"customJson"`
   256  	// Ids for a set of security groups to apply to the layer's instances.
   257  	CustomSecurityGroupIds []string `pulumi:"customSecurityGroupIds"`
   258  	CustomSetupRecipes     []string `pulumi:"customSetupRecipes"`
   259  	CustomShutdownRecipes  []string `pulumi:"customShutdownRecipes"`
   260  	CustomUndeployRecipes  []string `pulumi:"customUndeployRecipes"`
   261  	// Whether to enable Elastic Load Balancing connection draining.
   262  	DrainElbOnShutdown *bool `pulumi:"drainElbOnShutdown"`
   263  	// `ebsVolume` blocks, as described below, will each create an EBS volume and connect it to the layer's instances.
   264  	EbsVolumes []EcsClusterLayerEbsVolume `pulumi:"ebsVolumes"`
   265  	// The ECS Cluster ARN of the layer.
   266  	EcsClusterArn string `pulumi:"ecsClusterArn"`
   267  	// Name of an Elastic Load Balancer to attach to this layer
   268  	ElasticLoadBalancer *string `pulumi:"elasticLoadBalancer"`
   269  	// Whether to install OS and package updates on each instance when it boots.
   270  	InstallUpdatesOnBoot *bool `pulumi:"installUpdatesOnBoot"`
   271  	// The time, in seconds, that OpsWorks will wait for Chef to complete after triggering the Shutdown event.
   272  	InstanceShutdownTimeout *int                                 `pulumi:"instanceShutdownTimeout"`
   273  	LoadBasedAutoScaling    *EcsClusterLayerLoadBasedAutoScaling `pulumi:"loadBasedAutoScaling"`
   274  	// A human-readable name for the layer.
   275  	Name *string `pulumi:"name"`
   276  	// ID of the stack the layer will belong to.
   277  	StackId string `pulumi:"stackId"`
   278  	// Names of a set of system packages to install on the layer's instances.
   279  	SystemPackages []string `pulumi:"systemPackages"`
   280  	// A mapping of tags to assign to the resource.
   281  	//
   282  	// The following extra optional arguments, all lists of Chef recipe names, allow
   283  	// custom Chef recipes to be applied to layer instances at the five different
   284  	// lifecycle events, if custom cookbooks are enabled on the layer's stack:
   285  	Tags map[string]string `pulumi:"tags"`
   286  	// Whether to use EBS-optimized instances.
   287  	UseEbsOptimizedInstances *bool `pulumi:"useEbsOptimizedInstances"`
   288  }
   289  
   290  // The set of arguments for constructing a EcsClusterLayer resource.
   291  type EcsClusterLayerArgs struct {
   292  	// Whether to automatically assign an elastic IP address to the layer's instances.
   293  	AutoAssignElasticIps pulumi.BoolPtrInput
   294  	// For stacks belonging to a VPC, whether to automatically assign a public IP address to each of the layer's instances.
   295  	AutoAssignPublicIps pulumi.BoolPtrInput
   296  	// Whether to enable auto-healing for the layer.
   297  	AutoHealing             pulumi.BoolPtrInput
   298  	CloudwatchConfiguration EcsClusterLayerCloudwatchConfigurationPtrInput
   299  	CustomConfigureRecipes  pulumi.StringArrayInput
   300  	CustomDeployRecipes     pulumi.StringArrayInput
   301  	// The ARN of an IAM profile that will be used for the layer's instances.
   302  	CustomInstanceProfileArn pulumi.StringPtrInput
   303  	// Custom JSON attributes to apply to the layer.
   304  	CustomJson pulumi.StringPtrInput
   305  	// Ids for a set of security groups to apply to the layer's instances.
   306  	CustomSecurityGroupIds pulumi.StringArrayInput
   307  	CustomSetupRecipes     pulumi.StringArrayInput
   308  	CustomShutdownRecipes  pulumi.StringArrayInput
   309  	CustomUndeployRecipes  pulumi.StringArrayInput
   310  	// Whether to enable Elastic Load Balancing connection draining.
   311  	DrainElbOnShutdown pulumi.BoolPtrInput
   312  	// `ebsVolume` blocks, as described below, will each create an EBS volume and connect it to the layer's instances.
   313  	EbsVolumes EcsClusterLayerEbsVolumeArrayInput
   314  	// The ECS Cluster ARN of the layer.
   315  	EcsClusterArn pulumi.StringInput
   316  	// Name of an Elastic Load Balancer to attach to this layer
   317  	ElasticLoadBalancer pulumi.StringPtrInput
   318  	// Whether to install OS and package updates on each instance when it boots.
   319  	InstallUpdatesOnBoot pulumi.BoolPtrInput
   320  	// The time, in seconds, that OpsWorks will wait for Chef to complete after triggering the Shutdown event.
   321  	InstanceShutdownTimeout pulumi.IntPtrInput
   322  	LoadBasedAutoScaling    EcsClusterLayerLoadBasedAutoScalingPtrInput
   323  	// A human-readable name for the layer.
   324  	Name pulumi.StringPtrInput
   325  	// ID of the stack the layer will belong to.
   326  	StackId pulumi.StringInput
   327  	// Names of a set of system packages to install on the layer's instances.
   328  	SystemPackages pulumi.StringArrayInput
   329  	// A mapping of tags to assign to the resource.
   330  	//
   331  	// The following extra optional arguments, all lists of Chef recipe names, allow
   332  	// custom Chef recipes to be applied to layer instances at the five different
   333  	// lifecycle events, if custom cookbooks are enabled on the layer's stack:
   334  	Tags pulumi.StringMapInput
   335  	// Whether to use EBS-optimized instances.
   336  	UseEbsOptimizedInstances pulumi.BoolPtrInput
   337  }
   338  
   339  func (EcsClusterLayerArgs) ElementType() reflect.Type {
   340  	return reflect.TypeOf((*ecsClusterLayerArgs)(nil)).Elem()
   341  }
   342  
   343  type EcsClusterLayerInput interface {
   344  	pulumi.Input
   345  
   346  	ToEcsClusterLayerOutput() EcsClusterLayerOutput
   347  	ToEcsClusterLayerOutputWithContext(ctx context.Context) EcsClusterLayerOutput
   348  }
   349  
   350  func (*EcsClusterLayer) ElementType() reflect.Type {
   351  	return reflect.TypeOf((**EcsClusterLayer)(nil)).Elem()
   352  }
   353  
   354  func (i *EcsClusterLayer) ToEcsClusterLayerOutput() EcsClusterLayerOutput {
   355  	return i.ToEcsClusterLayerOutputWithContext(context.Background())
   356  }
   357  
   358  func (i *EcsClusterLayer) ToEcsClusterLayerOutputWithContext(ctx context.Context) EcsClusterLayerOutput {
   359  	return pulumi.ToOutputWithContext(ctx, i).(EcsClusterLayerOutput)
   360  }
   361  
   362  // EcsClusterLayerArrayInput is an input type that accepts EcsClusterLayerArray and EcsClusterLayerArrayOutput values.
   363  // You can construct a concrete instance of `EcsClusterLayerArrayInput` via:
   364  //
   365  //	EcsClusterLayerArray{ EcsClusterLayerArgs{...} }
   366  type EcsClusterLayerArrayInput interface {
   367  	pulumi.Input
   368  
   369  	ToEcsClusterLayerArrayOutput() EcsClusterLayerArrayOutput
   370  	ToEcsClusterLayerArrayOutputWithContext(context.Context) EcsClusterLayerArrayOutput
   371  }
   372  
   373  type EcsClusterLayerArray []EcsClusterLayerInput
   374  
   375  func (EcsClusterLayerArray) ElementType() reflect.Type {
   376  	return reflect.TypeOf((*[]*EcsClusterLayer)(nil)).Elem()
   377  }
   378  
   379  func (i EcsClusterLayerArray) ToEcsClusterLayerArrayOutput() EcsClusterLayerArrayOutput {
   380  	return i.ToEcsClusterLayerArrayOutputWithContext(context.Background())
   381  }
   382  
   383  func (i EcsClusterLayerArray) ToEcsClusterLayerArrayOutputWithContext(ctx context.Context) EcsClusterLayerArrayOutput {
   384  	return pulumi.ToOutputWithContext(ctx, i).(EcsClusterLayerArrayOutput)
   385  }
   386  
   387  // EcsClusterLayerMapInput is an input type that accepts EcsClusterLayerMap and EcsClusterLayerMapOutput values.
   388  // You can construct a concrete instance of `EcsClusterLayerMapInput` via:
   389  //
   390  //	EcsClusterLayerMap{ "key": EcsClusterLayerArgs{...} }
   391  type EcsClusterLayerMapInput interface {
   392  	pulumi.Input
   393  
   394  	ToEcsClusterLayerMapOutput() EcsClusterLayerMapOutput
   395  	ToEcsClusterLayerMapOutputWithContext(context.Context) EcsClusterLayerMapOutput
   396  }
   397  
   398  type EcsClusterLayerMap map[string]EcsClusterLayerInput
   399  
   400  func (EcsClusterLayerMap) ElementType() reflect.Type {
   401  	return reflect.TypeOf((*map[string]*EcsClusterLayer)(nil)).Elem()
   402  }
   403  
   404  func (i EcsClusterLayerMap) ToEcsClusterLayerMapOutput() EcsClusterLayerMapOutput {
   405  	return i.ToEcsClusterLayerMapOutputWithContext(context.Background())
   406  }
   407  
   408  func (i EcsClusterLayerMap) ToEcsClusterLayerMapOutputWithContext(ctx context.Context) EcsClusterLayerMapOutput {
   409  	return pulumi.ToOutputWithContext(ctx, i).(EcsClusterLayerMapOutput)
   410  }
   411  
   412  type EcsClusterLayerOutput struct{ *pulumi.OutputState }
   413  
   414  func (EcsClusterLayerOutput) ElementType() reflect.Type {
   415  	return reflect.TypeOf((**EcsClusterLayer)(nil)).Elem()
   416  }
   417  
   418  func (o EcsClusterLayerOutput) ToEcsClusterLayerOutput() EcsClusterLayerOutput {
   419  	return o
   420  }
   421  
   422  func (o EcsClusterLayerOutput) ToEcsClusterLayerOutputWithContext(ctx context.Context) EcsClusterLayerOutput {
   423  	return o
   424  }
   425  
   426  // The Amazon Resource Name(ARN) of the layer.
   427  func (o EcsClusterLayerOutput) Arn() pulumi.StringOutput {
   428  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   429  }
   430  
   431  // Whether to automatically assign an elastic IP address to the layer's instances.
   432  func (o EcsClusterLayerOutput) AutoAssignElasticIps() pulumi.BoolPtrOutput {
   433  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.BoolPtrOutput { return v.AutoAssignElasticIps }).(pulumi.BoolPtrOutput)
   434  }
   435  
   436  // For stacks belonging to a VPC, whether to automatically assign a public IP address to each of the layer's instances.
   437  func (o EcsClusterLayerOutput) AutoAssignPublicIps() pulumi.BoolPtrOutput {
   438  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.BoolPtrOutput { return v.AutoAssignPublicIps }).(pulumi.BoolPtrOutput)
   439  }
   440  
   441  // Whether to enable auto-healing for the layer.
   442  func (o EcsClusterLayerOutput) AutoHealing() pulumi.BoolPtrOutput {
   443  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.BoolPtrOutput { return v.AutoHealing }).(pulumi.BoolPtrOutput)
   444  }
   445  
   446  func (o EcsClusterLayerOutput) CloudwatchConfiguration() EcsClusterLayerCloudwatchConfigurationPtrOutput {
   447  	return o.ApplyT(func(v *EcsClusterLayer) EcsClusterLayerCloudwatchConfigurationPtrOutput {
   448  		return v.CloudwatchConfiguration
   449  	}).(EcsClusterLayerCloudwatchConfigurationPtrOutput)
   450  }
   451  
   452  func (o EcsClusterLayerOutput) CustomConfigureRecipes() pulumi.StringArrayOutput {
   453  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringArrayOutput { return v.CustomConfigureRecipes }).(pulumi.StringArrayOutput)
   454  }
   455  
   456  func (o EcsClusterLayerOutput) CustomDeployRecipes() pulumi.StringArrayOutput {
   457  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringArrayOutput { return v.CustomDeployRecipes }).(pulumi.StringArrayOutput)
   458  }
   459  
   460  // The ARN of an IAM profile that will be used for the layer's instances.
   461  func (o EcsClusterLayerOutput) CustomInstanceProfileArn() pulumi.StringPtrOutput {
   462  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringPtrOutput { return v.CustomInstanceProfileArn }).(pulumi.StringPtrOutput)
   463  }
   464  
   465  // Custom JSON attributes to apply to the layer.
   466  func (o EcsClusterLayerOutput) CustomJson() pulumi.StringPtrOutput {
   467  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringPtrOutput { return v.CustomJson }).(pulumi.StringPtrOutput)
   468  }
   469  
   470  // Ids for a set of security groups to apply to the layer's instances.
   471  func (o EcsClusterLayerOutput) CustomSecurityGroupIds() pulumi.StringArrayOutput {
   472  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringArrayOutput { return v.CustomSecurityGroupIds }).(pulumi.StringArrayOutput)
   473  }
   474  
   475  func (o EcsClusterLayerOutput) CustomSetupRecipes() pulumi.StringArrayOutput {
   476  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringArrayOutput { return v.CustomSetupRecipes }).(pulumi.StringArrayOutput)
   477  }
   478  
   479  func (o EcsClusterLayerOutput) CustomShutdownRecipes() pulumi.StringArrayOutput {
   480  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringArrayOutput { return v.CustomShutdownRecipes }).(pulumi.StringArrayOutput)
   481  }
   482  
   483  func (o EcsClusterLayerOutput) CustomUndeployRecipes() pulumi.StringArrayOutput {
   484  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringArrayOutput { return v.CustomUndeployRecipes }).(pulumi.StringArrayOutput)
   485  }
   486  
   487  // Whether to enable Elastic Load Balancing connection draining.
   488  func (o EcsClusterLayerOutput) DrainElbOnShutdown() pulumi.BoolPtrOutput {
   489  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.BoolPtrOutput { return v.DrainElbOnShutdown }).(pulumi.BoolPtrOutput)
   490  }
   491  
   492  // `ebsVolume` blocks, as described below, will each create an EBS volume and connect it to the layer's instances.
   493  func (o EcsClusterLayerOutput) EbsVolumes() EcsClusterLayerEbsVolumeArrayOutput {
   494  	return o.ApplyT(func(v *EcsClusterLayer) EcsClusterLayerEbsVolumeArrayOutput { return v.EbsVolumes }).(EcsClusterLayerEbsVolumeArrayOutput)
   495  }
   496  
   497  // The ECS Cluster ARN of the layer.
   498  func (o EcsClusterLayerOutput) EcsClusterArn() pulumi.StringOutput {
   499  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringOutput { return v.EcsClusterArn }).(pulumi.StringOutput)
   500  }
   501  
   502  // Name of an Elastic Load Balancer to attach to this layer
   503  func (o EcsClusterLayerOutput) ElasticLoadBalancer() pulumi.StringPtrOutput {
   504  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringPtrOutput { return v.ElasticLoadBalancer }).(pulumi.StringPtrOutput)
   505  }
   506  
   507  // Whether to install OS and package updates on each instance when it boots.
   508  func (o EcsClusterLayerOutput) InstallUpdatesOnBoot() pulumi.BoolPtrOutput {
   509  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.BoolPtrOutput { return v.InstallUpdatesOnBoot }).(pulumi.BoolPtrOutput)
   510  }
   511  
   512  // The time, in seconds, that OpsWorks will wait for Chef to complete after triggering the Shutdown event.
   513  func (o EcsClusterLayerOutput) InstanceShutdownTimeout() pulumi.IntPtrOutput {
   514  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.IntPtrOutput { return v.InstanceShutdownTimeout }).(pulumi.IntPtrOutput)
   515  }
   516  
   517  func (o EcsClusterLayerOutput) LoadBasedAutoScaling() EcsClusterLayerLoadBasedAutoScalingOutput {
   518  	return o.ApplyT(func(v *EcsClusterLayer) EcsClusterLayerLoadBasedAutoScalingOutput { return v.LoadBasedAutoScaling }).(EcsClusterLayerLoadBasedAutoScalingOutput)
   519  }
   520  
   521  // A human-readable name for the layer.
   522  func (o EcsClusterLayerOutput) Name() pulumi.StringOutput {
   523  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   524  }
   525  
   526  // ID of the stack the layer will belong to.
   527  func (o EcsClusterLayerOutput) StackId() pulumi.StringOutput {
   528  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringOutput { return v.StackId }).(pulumi.StringOutput)
   529  }
   530  
   531  // Names of a set of system packages to install on the layer's instances.
   532  func (o EcsClusterLayerOutput) SystemPackages() pulumi.StringArrayOutput {
   533  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringArrayOutput { return v.SystemPackages }).(pulumi.StringArrayOutput)
   534  }
   535  
   536  // A mapping of tags to assign to the resource.
   537  //
   538  // The following extra optional arguments, all lists of Chef recipe names, allow
   539  // custom Chef recipes to be applied to layer instances at the five different
   540  // lifecycle events, if custom cookbooks are enabled on the layer's stack:
   541  func (o EcsClusterLayerOutput) Tags() pulumi.StringMapOutput {
   542  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   543  }
   544  
   545  // Deprecated: Please use `tags` instead.
   546  func (o EcsClusterLayerOutput) TagsAll() pulumi.StringMapOutput {
   547  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   548  }
   549  
   550  // Whether to use EBS-optimized instances.
   551  func (o EcsClusterLayerOutput) UseEbsOptimizedInstances() pulumi.BoolPtrOutput {
   552  	return o.ApplyT(func(v *EcsClusterLayer) pulumi.BoolPtrOutput { return v.UseEbsOptimizedInstances }).(pulumi.BoolPtrOutput)
   553  }
   554  
   555  type EcsClusterLayerArrayOutput struct{ *pulumi.OutputState }
   556  
   557  func (EcsClusterLayerArrayOutput) ElementType() reflect.Type {
   558  	return reflect.TypeOf((*[]*EcsClusterLayer)(nil)).Elem()
   559  }
   560  
   561  func (o EcsClusterLayerArrayOutput) ToEcsClusterLayerArrayOutput() EcsClusterLayerArrayOutput {
   562  	return o
   563  }
   564  
   565  func (o EcsClusterLayerArrayOutput) ToEcsClusterLayerArrayOutputWithContext(ctx context.Context) EcsClusterLayerArrayOutput {
   566  	return o
   567  }
   568  
   569  func (o EcsClusterLayerArrayOutput) Index(i pulumi.IntInput) EcsClusterLayerOutput {
   570  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EcsClusterLayer {
   571  		return vs[0].([]*EcsClusterLayer)[vs[1].(int)]
   572  	}).(EcsClusterLayerOutput)
   573  }
   574  
   575  type EcsClusterLayerMapOutput struct{ *pulumi.OutputState }
   576  
   577  func (EcsClusterLayerMapOutput) ElementType() reflect.Type {
   578  	return reflect.TypeOf((*map[string]*EcsClusterLayer)(nil)).Elem()
   579  }
   580  
   581  func (o EcsClusterLayerMapOutput) ToEcsClusterLayerMapOutput() EcsClusterLayerMapOutput {
   582  	return o
   583  }
   584  
   585  func (o EcsClusterLayerMapOutput) ToEcsClusterLayerMapOutputWithContext(ctx context.Context) EcsClusterLayerMapOutput {
   586  	return o
   587  }
   588  
   589  func (o EcsClusterLayerMapOutput) MapIndex(k pulumi.StringInput) EcsClusterLayerOutput {
   590  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EcsClusterLayer {
   591  		return vs[0].(map[string]*EcsClusterLayer)[vs[1].(string)]
   592  	}).(EcsClusterLayerOutput)
   593  }
   594  
   595  func init() {
   596  	pulumi.RegisterInputType(reflect.TypeOf((*EcsClusterLayerInput)(nil)).Elem(), &EcsClusterLayer{})
   597  	pulumi.RegisterInputType(reflect.TypeOf((*EcsClusterLayerArrayInput)(nil)).Elem(), EcsClusterLayerArray{})
   598  	pulumi.RegisterInputType(reflect.TypeOf((*EcsClusterLayerMapInput)(nil)).Elem(), EcsClusterLayerMap{})
   599  	pulumi.RegisterOutputType(EcsClusterLayerOutput{})
   600  	pulumi.RegisterOutputType(EcsClusterLayerArrayOutput{})
   601  	pulumi.RegisterOutputType(EcsClusterLayerMapOutput{})
   602  }