github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/launchConfiguration.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 ec2
     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 a resource to create a new launch configuration, used for autoscaling groups.
    16  //
    17  // !> **WARNING:** The use of launch configurations is discouraged in favour of launch templates. Read more in the [AWS EC2 Documentation](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-configurations.html).
    18  //
    19  // > **Note** When using `ec2.LaunchConfiguration` with `autoscaling.Group`, it is recommended to use the `namePrefix` (Optional) instead of the `name` (Optional) attribute.
    20  //
    21  // ## Example Usage
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    30  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    31  //
    32  // )
    33  //
    34  //	func main() {
    35  //		pulumi.Run(func(ctx *pulumi.Context) error {
    36  //			ubuntu, err := ec2.LookupAmi(ctx, &ec2.LookupAmiArgs{
    37  //				MostRecent: pulumi.BoolRef(true),
    38  //				Filters: []ec2.GetAmiFilter{
    39  //					{
    40  //						Name: "name",
    41  //						Values: []string{
    42  //							"ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*",
    43  //						},
    44  //					},
    45  //					{
    46  //						Name: "virtualization-type",
    47  //						Values: []string{
    48  //							"hvm",
    49  //						},
    50  //					},
    51  //				},
    52  //				Owners: []string{
    53  //					"099720109477",
    54  //				},
    55  //			}, nil)
    56  //			if err != nil {
    57  //				return err
    58  //			}
    59  //			_, err = ec2.NewLaunchConfiguration(ctx, "as_conf", &ec2.LaunchConfigurationArgs{
    60  //				Name:         pulumi.String("web_config"),
    61  //				ImageId:      pulumi.String(ubuntu.Id),
    62  //				InstanceType: pulumi.String("t2.micro"),
    63  //			})
    64  //			if err != nil {
    65  //				return err
    66  //			}
    67  //			return nil
    68  //		})
    69  //	}
    70  //
    71  // ```
    72  // <!--End PulumiCodeChooser -->
    73  //
    74  // ## Import
    75  //
    76  // Using `pulumi import`, import launch configurations using the `name`. For example:
    77  //
    78  // ```sh
    79  // $ pulumi import aws:ec2/launchConfiguration:LaunchConfiguration as_conf pulumi-lg-123456
    80  // ```
    81  type LaunchConfiguration struct {
    82  	pulumi.CustomResourceState
    83  
    84  	// The Amazon Resource Name of the launch configuration.
    85  	Arn pulumi.StringOutput `pulumi:"arn"`
    86  	// Associate a public ip address with an instance in a VPC.
    87  	AssociatePublicIpAddress pulumi.BoolPtrOutput `pulumi:"associatePublicIpAddress"`
    88  	// Additional EBS block devices to attach to the instance. See Block Devices below for details.
    89  	EbsBlockDevices LaunchConfigurationEbsBlockDeviceArrayOutput `pulumi:"ebsBlockDevices"`
    90  	// If true, the launched EC2 instance will be EBS-optimized.
    91  	EbsOptimized pulumi.BoolOutput `pulumi:"ebsOptimized"`
    92  	// Enables/disables detailed monitoring. This is enabled by default.
    93  	EnableMonitoring pulumi.BoolPtrOutput `pulumi:"enableMonitoring"`
    94  	// Customize Ephemeral (also known as "Instance Store") volumes on the instance. See Block Devices below for details.
    95  	EphemeralBlockDevices LaunchConfigurationEphemeralBlockDeviceArrayOutput `pulumi:"ephemeralBlockDevices"`
    96  	// The name attribute of the IAM instance profile to associate with launched instances.
    97  	IamInstanceProfile pulumi.StringPtrOutput `pulumi:"iamInstanceProfile"`
    98  	// The EC2 image ID to launch.
    99  	ImageId pulumi.StringOutput `pulumi:"imageId"`
   100  	// The size of instance to launch.
   101  	//
   102  	// The following arguments are optional:
   103  	InstanceType pulumi.StringOutput `pulumi:"instanceType"`
   104  	// The key name that should be used for the instance.
   105  	KeyName pulumi.StringOutput `pulumi:"keyName"`
   106  	// The metadata options for the instance.
   107  	MetadataOptions LaunchConfigurationMetadataOptionsOutput `pulumi:"metadataOptions"`
   108  	// The name of the launch configuration. If you leave this blank, this provider will auto-generate a unique name. Conflicts with `namePrefix`.
   109  	Name pulumi.StringOutput `pulumi:"name"`
   110  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   111  	NamePrefix pulumi.StringOutput `pulumi:"namePrefix"`
   112  	// The tenancy of the instance. Valid values are `default` or `dedicated`, see [AWS's Create Launch Configuration](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html) for more details.
   113  	PlacementTenancy pulumi.StringPtrOutput `pulumi:"placementTenancy"`
   114  	// Customize details about the root block device of the instance. See Block Devices below for details.
   115  	RootBlockDevice LaunchConfigurationRootBlockDeviceOutput `pulumi:"rootBlockDevice"`
   116  	// A list of associated security group IDS.
   117  	SecurityGroups pulumi.StringArrayOutput `pulumi:"securityGroups"`
   118  	// The maximum price to use for reserving spot instances.
   119  	SpotPrice pulumi.StringPtrOutput `pulumi:"spotPrice"`
   120  	// The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `userDataBase64` instead.
   121  	UserData pulumi.StringPtrOutput `pulumi:"userData"`
   122  	// Can be used instead of `userData` to pass base64-encoded binary data directly. Use this instead of `userData` whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.
   123  	UserDataBase64 pulumi.StringPtrOutput `pulumi:"userDataBase64"`
   124  }
   125  
   126  // NewLaunchConfiguration registers a new resource with the given unique name, arguments, and options.
   127  func NewLaunchConfiguration(ctx *pulumi.Context,
   128  	name string, args *LaunchConfigurationArgs, opts ...pulumi.ResourceOption) (*LaunchConfiguration, error) {
   129  	if args == nil {
   130  		return nil, errors.New("missing one or more required arguments")
   131  	}
   132  
   133  	if args.ImageId == nil {
   134  		return nil, errors.New("invalid value for required argument 'ImageId'")
   135  	}
   136  	if args.InstanceType == nil {
   137  		return nil, errors.New("invalid value for required argument 'InstanceType'")
   138  	}
   139  	opts = internal.PkgResourceDefaultOpts(opts)
   140  	var resource LaunchConfiguration
   141  	err := ctx.RegisterResource("aws:ec2/launchConfiguration:LaunchConfiguration", name, args, &resource, opts...)
   142  	if err != nil {
   143  		return nil, err
   144  	}
   145  	return &resource, nil
   146  }
   147  
   148  // GetLaunchConfiguration gets an existing LaunchConfiguration resource's state with the given name, ID, and optional
   149  // state properties that are used to uniquely qualify the lookup (nil if not required).
   150  func GetLaunchConfiguration(ctx *pulumi.Context,
   151  	name string, id pulumi.IDInput, state *LaunchConfigurationState, opts ...pulumi.ResourceOption) (*LaunchConfiguration, error) {
   152  	var resource LaunchConfiguration
   153  	err := ctx.ReadResource("aws:ec2/launchConfiguration:LaunchConfiguration", name, id, state, &resource, opts...)
   154  	if err != nil {
   155  		return nil, err
   156  	}
   157  	return &resource, nil
   158  }
   159  
   160  // Input properties used for looking up and filtering LaunchConfiguration resources.
   161  type launchConfigurationState struct {
   162  	// The Amazon Resource Name of the launch configuration.
   163  	Arn *string `pulumi:"arn"`
   164  	// Associate a public ip address with an instance in a VPC.
   165  	AssociatePublicIpAddress *bool `pulumi:"associatePublicIpAddress"`
   166  	// Additional EBS block devices to attach to the instance. See Block Devices below for details.
   167  	EbsBlockDevices []LaunchConfigurationEbsBlockDevice `pulumi:"ebsBlockDevices"`
   168  	// If true, the launched EC2 instance will be EBS-optimized.
   169  	EbsOptimized *bool `pulumi:"ebsOptimized"`
   170  	// Enables/disables detailed monitoring. This is enabled by default.
   171  	EnableMonitoring *bool `pulumi:"enableMonitoring"`
   172  	// Customize Ephemeral (also known as "Instance Store") volumes on the instance. See Block Devices below for details.
   173  	EphemeralBlockDevices []LaunchConfigurationEphemeralBlockDevice `pulumi:"ephemeralBlockDevices"`
   174  	// The name attribute of the IAM instance profile to associate with launched instances.
   175  	IamInstanceProfile interface{} `pulumi:"iamInstanceProfile"`
   176  	// The EC2 image ID to launch.
   177  	ImageId *string `pulumi:"imageId"`
   178  	// The size of instance to launch.
   179  	//
   180  	// The following arguments are optional:
   181  	InstanceType *string `pulumi:"instanceType"`
   182  	// The key name that should be used for the instance.
   183  	KeyName *string `pulumi:"keyName"`
   184  	// The metadata options for the instance.
   185  	MetadataOptions *LaunchConfigurationMetadataOptions `pulumi:"metadataOptions"`
   186  	// The name of the launch configuration. If you leave this blank, this provider will auto-generate a unique name. Conflicts with `namePrefix`.
   187  	Name *string `pulumi:"name"`
   188  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   189  	NamePrefix *string `pulumi:"namePrefix"`
   190  	// The tenancy of the instance. Valid values are `default` or `dedicated`, see [AWS's Create Launch Configuration](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html) for more details.
   191  	PlacementTenancy *string `pulumi:"placementTenancy"`
   192  	// Customize details about the root block device of the instance. See Block Devices below for details.
   193  	RootBlockDevice *LaunchConfigurationRootBlockDevice `pulumi:"rootBlockDevice"`
   194  	// A list of associated security group IDS.
   195  	SecurityGroups []string `pulumi:"securityGroups"`
   196  	// The maximum price to use for reserving spot instances.
   197  	SpotPrice *string `pulumi:"spotPrice"`
   198  	// The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `userDataBase64` instead.
   199  	UserData *string `pulumi:"userData"`
   200  	// Can be used instead of `userData` to pass base64-encoded binary data directly. Use this instead of `userData` whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.
   201  	UserDataBase64 *string `pulumi:"userDataBase64"`
   202  }
   203  
   204  type LaunchConfigurationState struct {
   205  	// The Amazon Resource Name of the launch configuration.
   206  	Arn pulumi.StringPtrInput
   207  	// Associate a public ip address with an instance in a VPC.
   208  	AssociatePublicIpAddress pulumi.BoolPtrInput
   209  	// Additional EBS block devices to attach to the instance. See Block Devices below for details.
   210  	EbsBlockDevices LaunchConfigurationEbsBlockDeviceArrayInput
   211  	// If true, the launched EC2 instance will be EBS-optimized.
   212  	EbsOptimized pulumi.BoolPtrInput
   213  	// Enables/disables detailed monitoring. This is enabled by default.
   214  	EnableMonitoring pulumi.BoolPtrInput
   215  	// Customize Ephemeral (also known as "Instance Store") volumes on the instance. See Block Devices below for details.
   216  	EphemeralBlockDevices LaunchConfigurationEphemeralBlockDeviceArrayInput
   217  	// The name attribute of the IAM instance profile to associate with launched instances.
   218  	IamInstanceProfile pulumi.Input
   219  	// The EC2 image ID to launch.
   220  	ImageId pulumi.StringPtrInput
   221  	// The size of instance to launch.
   222  	//
   223  	// The following arguments are optional:
   224  	InstanceType pulumi.StringPtrInput
   225  	// The key name that should be used for the instance.
   226  	KeyName pulumi.StringPtrInput
   227  	// The metadata options for the instance.
   228  	MetadataOptions LaunchConfigurationMetadataOptionsPtrInput
   229  	// The name of the launch configuration. If you leave this blank, this provider will auto-generate a unique name. Conflicts with `namePrefix`.
   230  	Name pulumi.StringPtrInput
   231  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   232  	NamePrefix pulumi.StringPtrInput
   233  	// The tenancy of the instance. Valid values are `default` or `dedicated`, see [AWS's Create Launch Configuration](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html) for more details.
   234  	PlacementTenancy pulumi.StringPtrInput
   235  	// Customize details about the root block device of the instance. See Block Devices below for details.
   236  	RootBlockDevice LaunchConfigurationRootBlockDevicePtrInput
   237  	// A list of associated security group IDS.
   238  	SecurityGroups pulumi.StringArrayInput
   239  	// The maximum price to use for reserving spot instances.
   240  	SpotPrice pulumi.StringPtrInput
   241  	// The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `userDataBase64` instead.
   242  	UserData pulumi.StringPtrInput
   243  	// Can be used instead of `userData` to pass base64-encoded binary data directly. Use this instead of `userData` whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.
   244  	UserDataBase64 pulumi.StringPtrInput
   245  }
   246  
   247  func (LaunchConfigurationState) ElementType() reflect.Type {
   248  	return reflect.TypeOf((*launchConfigurationState)(nil)).Elem()
   249  }
   250  
   251  type launchConfigurationArgs struct {
   252  	// Associate a public ip address with an instance in a VPC.
   253  	AssociatePublicIpAddress *bool `pulumi:"associatePublicIpAddress"`
   254  	// Additional EBS block devices to attach to the instance. See Block Devices below for details.
   255  	EbsBlockDevices []LaunchConfigurationEbsBlockDevice `pulumi:"ebsBlockDevices"`
   256  	// If true, the launched EC2 instance will be EBS-optimized.
   257  	EbsOptimized *bool `pulumi:"ebsOptimized"`
   258  	// Enables/disables detailed monitoring. This is enabled by default.
   259  	EnableMonitoring *bool `pulumi:"enableMonitoring"`
   260  	// Customize Ephemeral (also known as "Instance Store") volumes on the instance. See Block Devices below for details.
   261  	EphemeralBlockDevices []LaunchConfigurationEphemeralBlockDevice `pulumi:"ephemeralBlockDevices"`
   262  	// The name attribute of the IAM instance profile to associate with launched instances.
   263  	IamInstanceProfile interface{} `pulumi:"iamInstanceProfile"`
   264  	// The EC2 image ID to launch.
   265  	ImageId string `pulumi:"imageId"`
   266  	// The size of instance to launch.
   267  	//
   268  	// The following arguments are optional:
   269  	InstanceType string `pulumi:"instanceType"`
   270  	// The key name that should be used for the instance.
   271  	KeyName *string `pulumi:"keyName"`
   272  	// The metadata options for the instance.
   273  	MetadataOptions *LaunchConfigurationMetadataOptions `pulumi:"metadataOptions"`
   274  	// The name of the launch configuration. If you leave this blank, this provider will auto-generate a unique name. Conflicts with `namePrefix`.
   275  	Name *string `pulumi:"name"`
   276  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   277  	NamePrefix *string `pulumi:"namePrefix"`
   278  	// The tenancy of the instance. Valid values are `default` or `dedicated`, see [AWS's Create Launch Configuration](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html) for more details.
   279  	PlacementTenancy *string `pulumi:"placementTenancy"`
   280  	// Customize details about the root block device of the instance. See Block Devices below for details.
   281  	RootBlockDevice *LaunchConfigurationRootBlockDevice `pulumi:"rootBlockDevice"`
   282  	// A list of associated security group IDS.
   283  	SecurityGroups []string `pulumi:"securityGroups"`
   284  	// The maximum price to use for reserving spot instances.
   285  	SpotPrice *string `pulumi:"spotPrice"`
   286  	// The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `userDataBase64` instead.
   287  	UserData *string `pulumi:"userData"`
   288  	// Can be used instead of `userData` to pass base64-encoded binary data directly. Use this instead of `userData` whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.
   289  	UserDataBase64 *string `pulumi:"userDataBase64"`
   290  }
   291  
   292  // The set of arguments for constructing a LaunchConfiguration resource.
   293  type LaunchConfigurationArgs struct {
   294  	// Associate a public ip address with an instance in a VPC.
   295  	AssociatePublicIpAddress pulumi.BoolPtrInput
   296  	// Additional EBS block devices to attach to the instance. See Block Devices below for details.
   297  	EbsBlockDevices LaunchConfigurationEbsBlockDeviceArrayInput
   298  	// If true, the launched EC2 instance will be EBS-optimized.
   299  	EbsOptimized pulumi.BoolPtrInput
   300  	// Enables/disables detailed monitoring. This is enabled by default.
   301  	EnableMonitoring pulumi.BoolPtrInput
   302  	// Customize Ephemeral (also known as "Instance Store") volumes on the instance. See Block Devices below for details.
   303  	EphemeralBlockDevices LaunchConfigurationEphemeralBlockDeviceArrayInput
   304  	// The name attribute of the IAM instance profile to associate with launched instances.
   305  	IamInstanceProfile pulumi.Input
   306  	// The EC2 image ID to launch.
   307  	ImageId pulumi.StringInput
   308  	// The size of instance to launch.
   309  	//
   310  	// The following arguments are optional:
   311  	InstanceType pulumi.StringInput
   312  	// The key name that should be used for the instance.
   313  	KeyName pulumi.StringPtrInput
   314  	// The metadata options for the instance.
   315  	MetadataOptions LaunchConfigurationMetadataOptionsPtrInput
   316  	// The name of the launch configuration. If you leave this blank, this provider will auto-generate a unique name. Conflicts with `namePrefix`.
   317  	Name pulumi.StringPtrInput
   318  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   319  	NamePrefix pulumi.StringPtrInput
   320  	// The tenancy of the instance. Valid values are `default` or `dedicated`, see [AWS's Create Launch Configuration](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html) for more details.
   321  	PlacementTenancy pulumi.StringPtrInput
   322  	// Customize details about the root block device of the instance. See Block Devices below for details.
   323  	RootBlockDevice LaunchConfigurationRootBlockDevicePtrInput
   324  	// A list of associated security group IDS.
   325  	SecurityGroups pulumi.StringArrayInput
   326  	// The maximum price to use for reserving spot instances.
   327  	SpotPrice pulumi.StringPtrInput
   328  	// The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `userDataBase64` instead.
   329  	UserData pulumi.StringPtrInput
   330  	// Can be used instead of `userData` to pass base64-encoded binary data directly. Use this instead of `userData` whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.
   331  	UserDataBase64 pulumi.StringPtrInput
   332  }
   333  
   334  func (LaunchConfigurationArgs) ElementType() reflect.Type {
   335  	return reflect.TypeOf((*launchConfigurationArgs)(nil)).Elem()
   336  }
   337  
   338  type LaunchConfigurationInput interface {
   339  	pulumi.Input
   340  
   341  	ToLaunchConfigurationOutput() LaunchConfigurationOutput
   342  	ToLaunchConfigurationOutputWithContext(ctx context.Context) LaunchConfigurationOutput
   343  }
   344  
   345  func (*LaunchConfiguration) ElementType() reflect.Type {
   346  	return reflect.TypeOf((**LaunchConfiguration)(nil)).Elem()
   347  }
   348  
   349  func (i *LaunchConfiguration) ToLaunchConfigurationOutput() LaunchConfigurationOutput {
   350  	return i.ToLaunchConfigurationOutputWithContext(context.Background())
   351  }
   352  
   353  func (i *LaunchConfiguration) ToLaunchConfigurationOutputWithContext(ctx context.Context) LaunchConfigurationOutput {
   354  	return pulumi.ToOutputWithContext(ctx, i).(LaunchConfigurationOutput)
   355  }
   356  
   357  // LaunchConfigurationArrayInput is an input type that accepts LaunchConfigurationArray and LaunchConfigurationArrayOutput values.
   358  // You can construct a concrete instance of `LaunchConfigurationArrayInput` via:
   359  //
   360  //	LaunchConfigurationArray{ LaunchConfigurationArgs{...} }
   361  type LaunchConfigurationArrayInput interface {
   362  	pulumi.Input
   363  
   364  	ToLaunchConfigurationArrayOutput() LaunchConfigurationArrayOutput
   365  	ToLaunchConfigurationArrayOutputWithContext(context.Context) LaunchConfigurationArrayOutput
   366  }
   367  
   368  type LaunchConfigurationArray []LaunchConfigurationInput
   369  
   370  func (LaunchConfigurationArray) ElementType() reflect.Type {
   371  	return reflect.TypeOf((*[]*LaunchConfiguration)(nil)).Elem()
   372  }
   373  
   374  func (i LaunchConfigurationArray) ToLaunchConfigurationArrayOutput() LaunchConfigurationArrayOutput {
   375  	return i.ToLaunchConfigurationArrayOutputWithContext(context.Background())
   376  }
   377  
   378  func (i LaunchConfigurationArray) ToLaunchConfigurationArrayOutputWithContext(ctx context.Context) LaunchConfigurationArrayOutput {
   379  	return pulumi.ToOutputWithContext(ctx, i).(LaunchConfigurationArrayOutput)
   380  }
   381  
   382  // LaunchConfigurationMapInput is an input type that accepts LaunchConfigurationMap and LaunchConfigurationMapOutput values.
   383  // You can construct a concrete instance of `LaunchConfigurationMapInput` via:
   384  //
   385  //	LaunchConfigurationMap{ "key": LaunchConfigurationArgs{...} }
   386  type LaunchConfigurationMapInput interface {
   387  	pulumi.Input
   388  
   389  	ToLaunchConfigurationMapOutput() LaunchConfigurationMapOutput
   390  	ToLaunchConfigurationMapOutputWithContext(context.Context) LaunchConfigurationMapOutput
   391  }
   392  
   393  type LaunchConfigurationMap map[string]LaunchConfigurationInput
   394  
   395  func (LaunchConfigurationMap) ElementType() reflect.Type {
   396  	return reflect.TypeOf((*map[string]*LaunchConfiguration)(nil)).Elem()
   397  }
   398  
   399  func (i LaunchConfigurationMap) ToLaunchConfigurationMapOutput() LaunchConfigurationMapOutput {
   400  	return i.ToLaunchConfigurationMapOutputWithContext(context.Background())
   401  }
   402  
   403  func (i LaunchConfigurationMap) ToLaunchConfigurationMapOutputWithContext(ctx context.Context) LaunchConfigurationMapOutput {
   404  	return pulumi.ToOutputWithContext(ctx, i).(LaunchConfigurationMapOutput)
   405  }
   406  
   407  type LaunchConfigurationOutput struct{ *pulumi.OutputState }
   408  
   409  func (LaunchConfigurationOutput) ElementType() reflect.Type {
   410  	return reflect.TypeOf((**LaunchConfiguration)(nil)).Elem()
   411  }
   412  
   413  func (o LaunchConfigurationOutput) ToLaunchConfigurationOutput() LaunchConfigurationOutput {
   414  	return o
   415  }
   416  
   417  func (o LaunchConfigurationOutput) ToLaunchConfigurationOutputWithContext(ctx context.Context) LaunchConfigurationOutput {
   418  	return o
   419  }
   420  
   421  // The Amazon Resource Name of the launch configuration.
   422  func (o LaunchConfigurationOutput) Arn() pulumi.StringOutput {
   423  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   424  }
   425  
   426  // Associate a public ip address with an instance in a VPC.
   427  func (o LaunchConfigurationOutput) AssociatePublicIpAddress() pulumi.BoolPtrOutput {
   428  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.BoolPtrOutput { return v.AssociatePublicIpAddress }).(pulumi.BoolPtrOutput)
   429  }
   430  
   431  // Additional EBS block devices to attach to the instance. See Block Devices below for details.
   432  func (o LaunchConfigurationOutput) EbsBlockDevices() LaunchConfigurationEbsBlockDeviceArrayOutput {
   433  	return o.ApplyT(func(v *LaunchConfiguration) LaunchConfigurationEbsBlockDeviceArrayOutput { return v.EbsBlockDevices }).(LaunchConfigurationEbsBlockDeviceArrayOutput)
   434  }
   435  
   436  // If true, the launched EC2 instance will be EBS-optimized.
   437  func (o LaunchConfigurationOutput) EbsOptimized() pulumi.BoolOutput {
   438  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.BoolOutput { return v.EbsOptimized }).(pulumi.BoolOutput)
   439  }
   440  
   441  // Enables/disables detailed monitoring. This is enabled by default.
   442  func (o LaunchConfigurationOutput) EnableMonitoring() pulumi.BoolPtrOutput {
   443  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.BoolPtrOutput { return v.EnableMonitoring }).(pulumi.BoolPtrOutput)
   444  }
   445  
   446  // Customize Ephemeral (also known as "Instance Store") volumes on the instance. See Block Devices below for details.
   447  func (o LaunchConfigurationOutput) EphemeralBlockDevices() LaunchConfigurationEphemeralBlockDeviceArrayOutput {
   448  	return o.ApplyT(func(v *LaunchConfiguration) LaunchConfigurationEphemeralBlockDeviceArrayOutput {
   449  		return v.EphemeralBlockDevices
   450  	}).(LaunchConfigurationEphemeralBlockDeviceArrayOutput)
   451  }
   452  
   453  // The name attribute of the IAM instance profile to associate with launched instances.
   454  func (o LaunchConfigurationOutput) IamInstanceProfile() pulumi.StringPtrOutput {
   455  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringPtrOutput { return v.IamInstanceProfile }).(pulumi.StringPtrOutput)
   456  }
   457  
   458  // The EC2 image ID to launch.
   459  func (o LaunchConfigurationOutput) ImageId() pulumi.StringOutput {
   460  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringOutput { return v.ImageId }).(pulumi.StringOutput)
   461  }
   462  
   463  // The size of instance to launch.
   464  //
   465  // The following arguments are optional:
   466  func (o LaunchConfigurationOutput) InstanceType() pulumi.StringOutput {
   467  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringOutput { return v.InstanceType }).(pulumi.StringOutput)
   468  }
   469  
   470  // The key name that should be used for the instance.
   471  func (o LaunchConfigurationOutput) KeyName() pulumi.StringOutput {
   472  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringOutput { return v.KeyName }).(pulumi.StringOutput)
   473  }
   474  
   475  // The metadata options for the instance.
   476  func (o LaunchConfigurationOutput) MetadataOptions() LaunchConfigurationMetadataOptionsOutput {
   477  	return o.ApplyT(func(v *LaunchConfiguration) LaunchConfigurationMetadataOptionsOutput { return v.MetadataOptions }).(LaunchConfigurationMetadataOptionsOutput)
   478  }
   479  
   480  // The name of the launch configuration. If you leave this blank, this provider will auto-generate a unique name. Conflicts with `namePrefix`.
   481  func (o LaunchConfigurationOutput) Name() pulumi.StringOutput {
   482  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   483  }
   484  
   485  // Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   486  func (o LaunchConfigurationOutput) NamePrefix() pulumi.StringOutput {
   487  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput)
   488  }
   489  
   490  // The tenancy of the instance. Valid values are `default` or `dedicated`, see [AWS's Create Launch Configuration](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html) for more details.
   491  func (o LaunchConfigurationOutput) PlacementTenancy() pulumi.StringPtrOutput {
   492  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringPtrOutput { return v.PlacementTenancy }).(pulumi.StringPtrOutput)
   493  }
   494  
   495  // Customize details about the root block device of the instance. See Block Devices below for details.
   496  func (o LaunchConfigurationOutput) RootBlockDevice() LaunchConfigurationRootBlockDeviceOutput {
   497  	return o.ApplyT(func(v *LaunchConfiguration) LaunchConfigurationRootBlockDeviceOutput { return v.RootBlockDevice }).(LaunchConfigurationRootBlockDeviceOutput)
   498  }
   499  
   500  // A list of associated security group IDS.
   501  func (o LaunchConfigurationOutput) SecurityGroups() pulumi.StringArrayOutput {
   502  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringArrayOutput { return v.SecurityGroups }).(pulumi.StringArrayOutput)
   503  }
   504  
   505  // The maximum price to use for reserving spot instances.
   506  func (o LaunchConfigurationOutput) SpotPrice() pulumi.StringPtrOutput {
   507  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringPtrOutput { return v.SpotPrice }).(pulumi.StringPtrOutput)
   508  }
   509  
   510  // The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see `userDataBase64` instead.
   511  func (o LaunchConfigurationOutput) UserData() pulumi.StringPtrOutput {
   512  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringPtrOutput { return v.UserData }).(pulumi.StringPtrOutput)
   513  }
   514  
   515  // Can be used instead of `userData` to pass base64-encoded binary data directly. Use this instead of `userData` whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.
   516  func (o LaunchConfigurationOutput) UserDataBase64() pulumi.StringPtrOutput {
   517  	return o.ApplyT(func(v *LaunchConfiguration) pulumi.StringPtrOutput { return v.UserDataBase64 }).(pulumi.StringPtrOutput)
   518  }
   519  
   520  type LaunchConfigurationArrayOutput struct{ *pulumi.OutputState }
   521  
   522  func (LaunchConfigurationArrayOutput) ElementType() reflect.Type {
   523  	return reflect.TypeOf((*[]*LaunchConfiguration)(nil)).Elem()
   524  }
   525  
   526  func (o LaunchConfigurationArrayOutput) ToLaunchConfigurationArrayOutput() LaunchConfigurationArrayOutput {
   527  	return o
   528  }
   529  
   530  func (o LaunchConfigurationArrayOutput) ToLaunchConfigurationArrayOutputWithContext(ctx context.Context) LaunchConfigurationArrayOutput {
   531  	return o
   532  }
   533  
   534  func (o LaunchConfigurationArrayOutput) Index(i pulumi.IntInput) LaunchConfigurationOutput {
   535  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LaunchConfiguration {
   536  		return vs[0].([]*LaunchConfiguration)[vs[1].(int)]
   537  	}).(LaunchConfigurationOutput)
   538  }
   539  
   540  type LaunchConfigurationMapOutput struct{ *pulumi.OutputState }
   541  
   542  func (LaunchConfigurationMapOutput) ElementType() reflect.Type {
   543  	return reflect.TypeOf((*map[string]*LaunchConfiguration)(nil)).Elem()
   544  }
   545  
   546  func (o LaunchConfigurationMapOutput) ToLaunchConfigurationMapOutput() LaunchConfigurationMapOutput {
   547  	return o
   548  }
   549  
   550  func (o LaunchConfigurationMapOutput) ToLaunchConfigurationMapOutputWithContext(ctx context.Context) LaunchConfigurationMapOutput {
   551  	return o
   552  }
   553  
   554  func (o LaunchConfigurationMapOutput) MapIndex(k pulumi.StringInput) LaunchConfigurationOutput {
   555  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LaunchConfiguration {
   556  		return vs[0].(map[string]*LaunchConfiguration)[vs[1].(string)]
   557  	}).(LaunchConfigurationOutput)
   558  }
   559  
   560  func init() {
   561  	pulumi.RegisterInputType(reflect.TypeOf((*LaunchConfigurationInput)(nil)).Elem(), &LaunchConfiguration{})
   562  	pulumi.RegisterInputType(reflect.TypeOf((*LaunchConfigurationArrayInput)(nil)).Elem(), LaunchConfigurationArray{})
   563  	pulumi.RegisterInputType(reflect.TypeOf((*LaunchConfigurationMapInput)(nil)).Elem(), LaunchConfigurationMap{})
   564  	pulumi.RegisterOutputType(LaunchConfigurationOutput{})
   565  	pulumi.RegisterOutputType(LaunchConfigurationArrayOutput{})
   566  	pulumi.RegisterOutputType(LaunchConfigurationMapOutput{})
   567  }