github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/launchTemplate.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  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    11  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    12  )
    13  
    14  // Provides an EC2 launch template resource. Can be used to create instances or auto scaling groups.
    15  //
    16  // ## Import
    17  //
    18  // Using `pulumi import`, import Launch Templates using the `id`. For example:
    19  //
    20  // ```sh
    21  // $ pulumi import aws:ec2/launchTemplate:LaunchTemplate web lt-12345678
    22  // ```
    23  type LaunchTemplate struct {
    24  	pulumi.CustomResourceState
    25  
    26  	// The Amazon Resource Name (ARN) of the instance profile. Conflicts with `name`.
    27  	Arn pulumi.StringOutput `pulumi:"arn"`
    28  	// Specify volumes to attach to the instance besides the volumes specified by the AMI.
    29  	// See Block Devices below for details.
    30  	BlockDeviceMappings LaunchTemplateBlockDeviceMappingArrayOutput `pulumi:"blockDeviceMappings"`
    31  	// Targeting for EC2 capacity reservations. See Capacity Reservation Specification below for more details.
    32  	CapacityReservationSpecification LaunchTemplateCapacityReservationSpecificationPtrOutput `pulumi:"capacityReservationSpecification"`
    33  	// The CPU options for the instance. See CPU Options below for more details.
    34  	CpuOptions LaunchTemplateCpuOptionsPtrOutput `pulumi:"cpuOptions"`
    35  	// Customize the credit specification of the instance. See Credit
    36  	// Specification below for more details.
    37  	CreditSpecification LaunchTemplateCreditSpecificationPtrOutput `pulumi:"creditSpecification"`
    38  	// Default Version of the launch template.
    39  	DefaultVersion pulumi.IntOutput `pulumi:"defaultVersion"`
    40  	// Description of the launch template.
    41  	Description pulumi.StringPtrOutput `pulumi:"description"`
    42  	// If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection).
    43  	DisableApiStop pulumi.BoolPtrOutput `pulumi:"disableApiStop"`
    44  	// If `true`, enables [EC2 Instance
    45  	// Termination Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITermination)
    46  	DisableApiTermination pulumi.BoolPtrOutput `pulumi:"disableApiTermination"`
    47  	// If `true`, the launched EC2 instance will be EBS-optimized.
    48  	EbsOptimized pulumi.StringPtrOutput `pulumi:"ebsOptimized"`
    49  	// The elastic GPU to attach to the instance. See Elastic GPU
    50  	// below for more details.
    51  	ElasticGpuSpecifications LaunchTemplateElasticGpuSpecificationArrayOutput `pulumi:"elasticGpuSpecifications"`
    52  	// Configuration block containing an Elastic Inference Accelerator to attach to the instance. See Elastic Inference Accelerator below for more details.
    53  	ElasticInferenceAccelerator LaunchTemplateElasticInferenceAcceleratorPtrOutput `pulumi:"elasticInferenceAccelerator"`
    54  	// Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.
    55  	EnclaveOptions LaunchTemplateEnclaveOptionsPtrOutput `pulumi:"enclaveOptions"`
    56  	// The hibernation options for the instance. See Hibernation Options below for more details.
    57  	HibernationOptions LaunchTemplateHibernationOptionsPtrOutput `pulumi:"hibernationOptions"`
    58  	// The IAM Instance Profile to launch the instance with. See Instance Profile
    59  	// below for more details.
    60  	IamInstanceProfile LaunchTemplateIamInstanceProfilePtrOutput `pulumi:"iamInstanceProfile"`
    61  	// The AMI from which to launch the instance.
    62  	ImageId pulumi.StringPtrOutput `pulumi:"imageId"`
    63  	// Shutdown behavior for the instance. Can be `stop` or `terminate`.
    64  	// (Default: `stop`).
    65  	InstanceInitiatedShutdownBehavior pulumi.StringPtrOutput `pulumi:"instanceInitiatedShutdownBehavior"`
    66  	// The market (purchasing) option for the instance. See Market Options
    67  	// below for details.
    68  	InstanceMarketOptions LaunchTemplateInstanceMarketOptionsPtrOutput `pulumi:"instanceMarketOptions"`
    69  	// The attribute requirements for the type of instance. If present then `instanceType` cannot be present.
    70  	InstanceRequirements LaunchTemplateInstanceRequirementsPtrOutput `pulumi:"instanceRequirements"`
    71  	// The type of the instance. If present then `instanceRequirements` cannot be present.
    72  	InstanceType pulumi.StringPtrOutput `pulumi:"instanceType"`
    73  	// The kernel ID.
    74  	KernelId pulumi.StringPtrOutput `pulumi:"kernelId"`
    75  	// The key name to use for the instance.
    76  	KeyName pulumi.StringPtrOutput `pulumi:"keyName"`
    77  	// The latest version of the launch template.
    78  	LatestVersion pulumi.IntOutput `pulumi:"latestVersion"`
    79  	// A list of license specifications to associate with. See License Specification below for more details.
    80  	LicenseSpecifications LaunchTemplateLicenseSpecificationArrayOutput `pulumi:"licenseSpecifications"`
    81  	// The maintenance options for the instance. See Maintenance Options below for more details.
    82  	MaintenanceOptions LaunchTemplateMaintenanceOptionsPtrOutput `pulumi:"maintenanceOptions"`
    83  	// Customize the metadata options for the instance. See Metadata Options below for more details.
    84  	MetadataOptions LaunchTemplateMetadataOptionsOutput `pulumi:"metadataOptions"`
    85  	// The monitoring option for the instance. See Monitoring below for more details.
    86  	Monitoring LaunchTemplateMonitoringPtrOutput `pulumi:"monitoring"`
    87  	// The name of the launch template. If you leave this blank, the provider will auto-generate a unique name.
    88  	Name pulumi.StringOutput `pulumi:"name"`
    89  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
    90  	NamePrefix pulumi.StringOutput `pulumi:"namePrefix"`
    91  	// Customize network interfaces to be attached at instance boot time. See Network
    92  	// Interfaces below for more details.
    93  	NetworkInterfaces LaunchTemplateNetworkInterfaceArrayOutput `pulumi:"networkInterfaces"`
    94  	// The placement of the instance. See Placement below for more details.
    95  	Placement LaunchTemplatePlacementPtrOutput `pulumi:"placement"`
    96  	// The options for the instance hostname. The default values are inherited from the subnet. See Private DNS Name Options below for more details.
    97  	PrivateDnsNameOptions LaunchTemplatePrivateDnsNameOptionsPtrOutput `pulumi:"privateDnsNameOptions"`
    98  	// The ID of the RAM disk.
    99  	RamDiskId pulumi.StringPtrOutput `pulumi:"ramDiskId"`
   100  	// A list of security group names to associate with. If you are creating Instances in a VPC, use
   101  	// `vpcSecurityGroupIds` instead.
   102  	SecurityGroupNames pulumi.StringArrayOutput `pulumi:"securityGroupNames"`
   103  	// The tags to apply to the resources during launch. See Tag Specifications below for more details.
   104  	TagSpecifications LaunchTemplateTagSpecificationArrayOutput `pulumi:"tagSpecifications"`
   105  	// A map of tags to assign to the launch template. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   106  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   107  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   108  	//
   109  	// Deprecated: Please use `tags` instead.
   110  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   111  	// Whether to update Default Version each update. Conflicts with `defaultVersion`.
   112  	UpdateDefaultVersion pulumi.BoolPtrOutput `pulumi:"updateDefaultVersion"`
   113  	// The base64-encoded user data to provide when launching the instance.
   114  	UserData pulumi.StringPtrOutput `pulumi:"userData"`
   115  	// A list of security group IDs to associate with. Conflicts with `network_interfaces.security_groups`
   116  	VpcSecurityGroupIds pulumi.StringArrayOutput `pulumi:"vpcSecurityGroupIds"`
   117  }
   118  
   119  // NewLaunchTemplate registers a new resource with the given unique name, arguments, and options.
   120  func NewLaunchTemplate(ctx *pulumi.Context,
   121  	name string, args *LaunchTemplateArgs, opts ...pulumi.ResourceOption) (*LaunchTemplate, error) {
   122  	if args == nil {
   123  		args = &LaunchTemplateArgs{}
   124  	}
   125  
   126  	opts = internal.PkgResourceDefaultOpts(opts)
   127  	var resource LaunchTemplate
   128  	err := ctx.RegisterResource("aws:ec2/launchTemplate:LaunchTemplate", name, args, &resource, opts...)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  	return &resource, nil
   133  }
   134  
   135  // GetLaunchTemplate gets an existing LaunchTemplate resource's state with the given name, ID, and optional
   136  // state properties that are used to uniquely qualify the lookup (nil if not required).
   137  func GetLaunchTemplate(ctx *pulumi.Context,
   138  	name string, id pulumi.IDInput, state *LaunchTemplateState, opts ...pulumi.ResourceOption) (*LaunchTemplate, error) {
   139  	var resource LaunchTemplate
   140  	err := ctx.ReadResource("aws:ec2/launchTemplate:LaunchTemplate", name, id, state, &resource, opts...)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &resource, nil
   145  }
   146  
   147  // Input properties used for looking up and filtering LaunchTemplate resources.
   148  type launchTemplateState struct {
   149  	// The Amazon Resource Name (ARN) of the instance profile. Conflicts with `name`.
   150  	Arn *string `pulumi:"arn"`
   151  	// Specify volumes to attach to the instance besides the volumes specified by the AMI.
   152  	// See Block Devices below for details.
   153  	BlockDeviceMappings []LaunchTemplateBlockDeviceMapping `pulumi:"blockDeviceMappings"`
   154  	// Targeting for EC2 capacity reservations. See Capacity Reservation Specification below for more details.
   155  	CapacityReservationSpecification *LaunchTemplateCapacityReservationSpecification `pulumi:"capacityReservationSpecification"`
   156  	// The CPU options for the instance. See CPU Options below for more details.
   157  	CpuOptions *LaunchTemplateCpuOptions `pulumi:"cpuOptions"`
   158  	// Customize the credit specification of the instance. See Credit
   159  	// Specification below for more details.
   160  	CreditSpecification *LaunchTemplateCreditSpecification `pulumi:"creditSpecification"`
   161  	// Default Version of the launch template.
   162  	DefaultVersion *int `pulumi:"defaultVersion"`
   163  	// Description of the launch template.
   164  	Description *string `pulumi:"description"`
   165  	// If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection).
   166  	DisableApiStop *bool `pulumi:"disableApiStop"`
   167  	// If `true`, enables [EC2 Instance
   168  	// Termination Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITermination)
   169  	DisableApiTermination *bool `pulumi:"disableApiTermination"`
   170  	// If `true`, the launched EC2 instance will be EBS-optimized.
   171  	EbsOptimized *string `pulumi:"ebsOptimized"`
   172  	// The elastic GPU to attach to the instance. See Elastic GPU
   173  	// below for more details.
   174  	ElasticGpuSpecifications []LaunchTemplateElasticGpuSpecification `pulumi:"elasticGpuSpecifications"`
   175  	// Configuration block containing an Elastic Inference Accelerator to attach to the instance. See Elastic Inference Accelerator below for more details.
   176  	ElasticInferenceAccelerator *LaunchTemplateElasticInferenceAccelerator `pulumi:"elasticInferenceAccelerator"`
   177  	// Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.
   178  	EnclaveOptions *LaunchTemplateEnclaveOptions `pulumi:"enclaveOptions"`
   179  	// The hibernation options for the instance. See Hibernation Options below for more details.
   180  	HibernationOptions *LaunchTemplateHibernationOptions `pulumi:"hibernationOptions"`
   181  	// The IAM Instance Profile to launch the instance with. See Instance Profile
   182  	// below for more details.
   183  	IamInstanceProfile *LaunchTemplateIamInstanceProfile `pulumi:"iamInstanceProfile"`
   184  	// The AMI from which to launch the instance.
   185  	ImageId *string `pulumi:"imageId"`
   186  	// Shutdown behavior for the instance. Can be `stop` or `terminate`.
   187  	// (Default: `stop`).
   188  	InstanceInitiatedShutdownBehavior *string `pulumi:"instanceInitiatedShutdownBehavior"`
   189  	// The market (purchasing) option for the instance. See Market Options
   190  	// below for details.
   191  	InstanceMarketOptions *LaunchTemplateInstanceMarketOptions `pulumi:"instanceMarketOptions"`
   192  	// The attribute requirements for the type of instance. If present then `instanceType` cannot be present.
   193  	InstanceRequirements *LaunchTemplateInstanceRequirements `pulumi:"instanceRequirements"`
   194  	// The type of the instance. If present then `instanceRequirements` cannot be present.
   195  	InstanceType *string `pulumi:"instanceType"`
   196  	// The kernel ID.
   197  	KernelId *string `pulumi:"kernelId"`
   198  	// The key name to use for the instance.
   199  	KeyName *string `pulumi:"keyName"`
   200  	// The latest version of the launch template.
   201  	LatestVersion *int `pulumi:"latestVersion"`
   202  	// A list of license specifications to associate with. See License Specification below for more details.
   203  	LicenseSpecifications []LaunchTemplateLicenseSpecification `pulumi:"licenseSpecifications"`
   204  	// The maintenance options for the instance. See Maintenance Options below for more details.
   205  	MaintenanceOptions *LaunchTemplateMaintenanceOptions `pulumi:"maintenanceOptions"`
   206  	// Customize the metadata options for the instance. See Metadata Options below for more details.
   207  	MetadataOptions *LaunchTemplateMetadataOptions `pulumi:"metadataOptions"`
   208  	// The monitoring option for the instance. See Monitoring below for more details.
   209  	Monitoring *LaunchTemplateMonitoring `pulumi:"monitoring"`
   210  	// The name of the launch template. If you leave this blank, the provider will auto-generate a unique name.
   211  	Name *string `pulumi:"name"`
   212  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   213  	NamePrefix *string `pulumi:"namePrefix"`
   214  	// Customize network interfaces to be attached at instance boot time. See Network
   215  	// Interfaces below for more details.
   216  	NetworkInterfaces []LaunchTemplateNetworkInterface `pulumi:"networkInterfaces"`
   217  	// The placement of the instance. See Placement below for more details.
   218  	Placement *LaunchTemplatePlacement `pulumi:"placement"`
   219  	// The options for the instance hostname. The default values are inherited from the subnet. See Private DNS Name Options below for more details.
   220  	PrivateDnsNameOptions *LaunchTemplatePrivateDnsNameOptions `pulumi:"privateDnsNameOptions"`
   221  	// The ID of the RAM disk.
   222  	RamDiskId *string `pulumi:"ramDiskId"`
   223  	// A list of security group names to associate with. If you are creating Instances in a VPC, use
   224  	// `vpcSecurityGroupIds` instead.
   225  	SecurityGroupNames []string `pulumi:"securityGroupNames"`
   226  	// The tags to apply to the resources during launch. See Tag Specifications below for more details.
   227  	TagSpecifications []LaunchTemplateTagSpecification `pulumi:"tagSpecifications"`
   228  	// A map of tags to assign to the launch template. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   229  	Tags map[string]string `pulumi:"tags"`
   230  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   231  	//
   232  	// Deprecated: Please use `tags` instead.
   233  	TagsAll map[string]string `pulumi:"tagsAll"`
   234  	// Whether to update Default Version each update. Conflicts with `defaultVersion`.
   235  	UpdateDefaultVersion *bool `pulumi:"updateDefaultVersion"`
   236  	// The base64-encoded user data to provide when launching the instance.
   237  	UserData *string `pulumi:"userData"`
   238  	// A list of security group IDs to associate with. Conflicts with `network_interfaces.security_groups`
   239  	VpcSecurityGroupIds []string `pulumi:"vpcSecurityGroupIds"`
   240  }
   241  
   242  type LaunchTemplateState struct {
   243  	// The Amazon Resource Name (ARN) of the instance profile. Conflicts with `name`.
   244  	Arn pulumi.StringPtrInput
   245  	// Specify volumes to attach to the instance besides the volumes specified by the AMI.
   246  	// See Block Devices below for details.
   247  	BlockDeviceMappings LaunchTemplateBlockDeviceMappingArrayInput
   248  	// Targeting for EC2 capacity reservations. See Capacity Reservation Specification below for more details.
   249  	CapacityReservationSpecification LaunchTemplateCapacityReservationSpecificationPtrInput
   250  	// The CPU options for the instance. See CPU Options below for more details.
   251  	CpuOptions LaunchTemplateCpuOptionsPtrInput
   252  	// Customize the credit specification of the instance. See Credit
   253  	// Specification below for more details.
   254  	CreditSpecification LaunchTemplateCreditSpecificationPtrInput
   255  	// Default Version of the launch template.
   256  	DefaultVersion pulumi.IntPtrInput
   257  	// Description of the launch template.
   258  	Description pulumi.StringPtrInput
   259  	// If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection).
   260  	DisableApiStop pulumi.BoolPtrInput
   261  	// If `true`, enables [EC2 Instance
   262  	// Termination Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITermination)
   263  	DisableApiTermination pulumi.BoolPtrInput
   264  	// If `true`, the launched EC2 instance will be EBS-optimized.
   265  	EbsOptimized pulumi.StringPtrInput
   266  	// The elastic GPU to attach to the instance. See Elastic GPU
   267  	// below for more details.
   268  	ElasticGpuSpecifications LaunchTemplateElasticGpuSpecificationArrayInput
   269  	// Configuration block containing an Elastic Inference Accelerator to attach to the instance. See Elastic Inference Accelerator below for more details.
   270  	ElasticInferenceAccelerator LaunchTemplateElasticInferenceAcceleratorPtrInput
   271  	// Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.
   272  	EnclaveOptions LaunchTemplateEnclaveOptionsPtrInput
   273  	// The hibernation options for the instance. See Hibernation Options below for more details.
   274  	HibernationOptions LaunchTemplateHibernationOptionsPtrInput
   275  	// The IAM Instance Profile to launch the instance with. See Instance Profile
   276  	// below for more details.
   277  	IamInstanceProfile LaunchTemplateIamInstanceProfilePtrInput
   278  	// The AMI from which to launch the instance.
   279  	ImageId pulumi.StringPtrInput
   280  	// Shutdown behavior for the instance. Can be `stop` or `terminate`.
   281  	// (Default: `stop`).
   282  	InstanceInitiatedShutdownBehavior pulumi.StringPtrInput
   283  	// The market (purchasing) option for the instance. See Market Options
   284  	// below for details.
   285  	InstanceMarketOptions LaunchTemplateInstanceMarketOptionsPtrInput
   286  	// The attribute requirements for the type of instance. If present then `instanceType` cannot be present.
   287  	InstanceRequirements LaunchTemplateInstanceRequirementsPtrInput
   288  	// The type of the instance. If present then `instanceRequirements` cannot be present.
   289  	InstanceType pulumi.StringPtrInput
   290  	// The kernel ID.
   291  	KernelId pulumi.StringPtrInput
   292  	// The key name to use for the instance.
   293  	KeyName pulumi.StringPtrInput
   294  	// The latest version of the launch template.
   295  	LatestVersion pulumi.IntPtrInput
   296  	// A list of license specifications to associate with. See License Specification below for more details.
   297  	LicenseSpecifications LaunchTemplateLicenseSpecificationArrayInput
   298  	// The maintenance options for the instance. See Maintenance Options below for more details.
   299  	MaintenanceOptions LaunchTemplateMaintenanceOptionsPtrInput
   300  	// Customize the metadata options for the instance. See Metadata Options below for more details.
   301  	MetadataOptions LaunchTemplateMetadataOptionsPtrInput
   302  	// The monitoring option for the instance. See Monitoring below for more details.
   303  	Monitoring LaunchTemplateMonitoringPtrInput
   304  	// The name of the launch template. If you leave this blank, the provider will auto-generate a unique name.
   305  	Name pulumi.StringPtrInput
   306  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   307  	NamePrefix pulumi.StringPtrInput
   308  	// Customize network interfaces to be attached at instance boot time. See Network
   309  	// Interfaces below for more details.
   310  	NetworkInterfaces LaunchTemplateNetworkInterfaceArrayInput
   311  	// The placement of the instance. See Placement below for more details.
   312  	Placement LaunchTemplatePlacementPtrInput
   313  	// The options for the instance hostname. The default values are inherited from the subnet. See Private DNS Name Options below for more details.
   314  	PrivateDnsNameOptions LaunchTemplatePrivateDnsNameOptionsPtrInput
   315  	// The ID of the RAM disk.
   316  	RamDiskId pulumi.StringPtrInput
   317  	// A list of security group names to associate with. If you are creating Instances in a VPC, use
   318  	// `vpcSecurityGroupIds` instead.
   319  	SecurityGroupNames pulumi.StringArrayInput
   320  	// The tags to apply to the resources during launch. See Tag Specifications below for more details.
   321  	TagSpecifications LaunchTemplateTagSpecificationArrayInput
   322  	// A map of tags to assign to the launch template. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   323  	Tags pulumi.StringMapInput
   324  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   325  	//
   326  	// Deprecated: Please use `tags` instead.
   327  	TagsAll pulumi.StringMapInput
   328  	// Whether to update Default Version each update. Conflicts with `defaultVersion`.
   329  	UpdateDefaultVersion pulumi.BoolPtrInput
   330  	// The base64-encoded user data to provide when launching the instance.
   331  	UserData pulumi.StringPtrInput
   332  	// A list of security group IDs to associate with. Conflicts with `network_interfaces.security_groups`
   333  	VpcSecurityGroupIds pulumi.StringArrayInput
   334  }
   335  
   336  func (LaunchTemplateState) ElementType() reflect.Type {
   337  	return reflect.TypeOf((*launchTemplateState)(nil)).Elem()
   338  }
   339  
   340  type launchTemplateArgs struct {
   341  	// Specify volumes to attach to the instance besides the volumes specified by the AMI.
   342  	// See Block Devices below for details.
   343  	BlockDeviceMappings []LaunchTemplateBlockDeviceMapping `pulumi:"blockDeviceMappings"`
   344  	// Targeting for EC2 capacity reservations. See Capacity Reservation Specification below for more details.
   345  	CapacityReservationSpecification *LaunchTemplateCapacityReservationSpecification `pulumi:"capacityReservationSpecification"`
   346  	// The CPU options for the instance. See CPU Options below for more details.
   347  	CpuOptions *LaunchTemplateCpuOptions `pulumi:"cpuOptions"`
   348  	// Customize the credit specification of the instance. See Credit
   349  	// Specification below for more details.
   350  	CreditSpecification *LaunchTemplateCreditSpecification `pulumi:"creditSpecification"`
   351  	// Default Version of the launch template.
   352  	DefaultVersion *int `pulumi:"defaultVersion"`
   353  	// Description of the launch template.
   354  	Description *string `pulumi:"description"`
   355  	// If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection).
   356  	DisableApiStop *bool `pulumi:"disableApiStop"`
   357  	// If `true`, enables [EC2 Instance
   358  	// Termination Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITermination)
   359  	DisableApiTermination *bool `pulumi:"disableApiTermination"`
   360  	// If `true`, the launched EC2 instance will be EBS-optimized.
   361  	EbsOptimized *string `pulumi:"ebsOptimized"`
   362  	// The elastic GPU to attach to the instance. See Elastic GPU
   363  	// below for more details.
   364  	ElasticGpuSpecifications []LaunchTemplateElasticGpuSpecification `pulumi:"elasticGpuSpecifications"`
   365  	// Configuration block containing an Elastic Inference Accelerator to attach to the instance. See Elastic Inference Accelerator below for more details.
   366  	ElasticInferenceAccelerator *LaunchTemplateElasticInferenceAccelerator `pulumi:"elasticInferenceAccelerator"`
   367  	// Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.
   368  	EnclaveOptions *LaunchTemplateEnclaveOptions `pulumi:"enclaveOptions"`
   369  	// The hibernation options for the instance. See Hibernation Options below for more details.
   370  	HibernationOptions *LaunchTemplateHibernationOptions `pulumi:"hibernationOptions"`
   371  	// The IAM Instance Profile to launch the instance with. See Instance Profile
   372  	// below for more details.
   373  	IamInstanceProfile *LaunchTemplateIamInstanceProfile `pulumi:"iamInstanceProfile"`
   374  	// The AMI from which to launch the instance.
   375  	ImageId *string `pulumi:"imageId"`
   376  	// Shutdown behavior for the instance. Can be `stop` or `terminate`.
   377  	// (Default: `stop`).
   378  	InstanceInitiatedShutdownBehavior *string `pulumi:"instanceInitiatedShutdownBehavior"`
   379  	// The market (purchasing) option for the instance. See Market Options
   380  	// below for details.
   381  	InstanceMarketOptions *LaunchTemplateInstanceMarketOptions `pulumi:"instanceMarketOptions"`
   382  	// The attribute requirements for the type of instance. If present then `instanceType` cannot be present.
   383  	InstanceRequirements *LaunchTemplateInstanceRequirements `pulumi:"instanceRequirements"`
   384  	// The type of the instance. If present then `instanceRequirements` cannot be present.
   385  	InstanceType *string `pulumi:"instanceType"`
   386  	// The kernel ID.
   387  	KernelId *string `pulumi:"kernelId"`
   388  	// The key name to use for the instance.
   389  	KeyName *string `pulumi:"keyName"`
   390  	// A list of license specifications to associate with. See License Specification below for more details.
   391  	LicenseSpecifications []LaunchTemplateLicenseSpecification `pulumi:"licenseSpecifications"`
   392  	// The maintenance options for the instance. See Maintenance Options below for more details.
   393  	MaintenanceOptions *LaunchTemplateMaintenanceOptions `pulumi:"maintenanceOptions"`
   394  	// Customize the metadata options for the instance. See Metadata Options below for more details.
   395  	MetadataOptions *LaunchTemplateMetadataOptions `pulumi:"metadataOptions"`
   396  	// The monitoring option for the instance. See Monitoring below for more details.
   397  	Monitoring *LaunchTemplateMonitoring `pulumi:"monitoring"`
   398  	// The name of the launch template. If you leave this blank, the provider will auto-generate a unique name.
   399  	Name *string `pulumi:"name"`
   400  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   401  	NamePrefix *string `pulumi:"namePrefix"`
   402  	// Customize network interfaces to be attached at instance boot time. See Network
   403  	// Interfaces below for more details.
   404  	NetworkInterfaces []LaunchTemplateNetworkInterface `pulumi:"networkInterfaces"`
   405  	// The placement of the instance. See Placement below for more details.
   406  	Placement *LaunchTemplatePlacement `pulumi:"placement"`
   407  	// The options for the instance hostname. The default values are inherited from the subnet. See Private DNS Name Options below for more details.
   408  	PrivateDnsNameOptions *LaunchTemplatePrivateDnsNameOptions `pulumi:"privateDnsNameOptions"`
   409  	// The ID of the RAM disk.
   410  	RamDiskId *string `pulumi:"ramDiskId"`
   411  	// A list of security group names to associate with. If you are creating Instances in a VPC, use
   412  	// `vpcSecurityGroupIds` instead.
   413  	SecurityGroupNames []string `pulumi:"securityGroupNames"`
   414  	// The tags to apply to the resources during launch. See Tag Specifications below for more details.
   415  	TagSpecifications []LaunchTemplateTagSpecification `pulumi:"tagSpecifications"`
   416  	// A map of tags to assign to the launch template. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   417  	Tags map[string]string `pulumi:"tags"`
   418  	// Whether to update Default Version each update. Conflicts with `defaultVersion`.
   419  	UpdateDefaultVersion *bool `pulumi:"updateDefaultVersion"`
   420  	// The base64-encoded user data to provide when launching the instance.
   421  	UserData *string `pulumi:"userData"`
   422  	// A list of security group IDs to associate with. Conflicts with `network_interfaces.security_groups`
   423  	VpcSecurityGroupIds []string `pulumi:"vpcSecurityGroupIds"`
   424  }
   425  
   426  // The set of arguments for constructing a LaunchTemplate resource.
   427  type LaunchTemplateArgs struct {
   428  	// Specify volumes to attach to the instance besides the volumes specified by the AMI.
   429  	// See Block Devices below for details.
   430  	BlockDeviceMappings LaunchTemplateBlockDeviceMappingArrayInput
   431  	// Targeting for EC2 capacity reservations. See Capacity Reservation Specification below for more details.
   432  	CapacityReservationSpecification LaunchTemplateCapacityReservationSpecificationPtrInput
   433  	// The CPU options for the instance. See CPU Options below for more details.
   434  	CpuOptions LaunchTemplateCpuOptionsPtrInput
   435  	// Customize the credit specification of the instance. See Credit
   436  	// Specification below for more details.
   437  	CreditSpecification LaunchTemplateCreditSpecificationPtrInput
   438  	// Default Version of the launch template.
   439  	DefaultVersion pulumi.IntPtrInput
   440  	// Description of the launch template.
   441  	Description pulumi.StringPtrInput
   442  	// If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection).
   443  	DisableApiStop pulumi.BoolPtrInput
   444  	// If `true`, enables [EC2 Instance
   445  	// Termination Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITermination)
   446  	DisableApiTermination pulumi.BoolPtrInput
   447  	// If `true`, the launched EC2 instance will be EBS-optimized.
   448  	EbsOptimized pulumi.StringPtrInput
   449  	// The elastic GPU to attach to the instance. See Elastic GPU
   450  	// below for more details.
   451  	ElasticGpuSpecifications LaunchTemplateElasticGpuSpecificationArrayInput
   452  	// Configuration block containing an Elastic Inference Accelerator to attach to the instance. See Elastic Inference Accelerator below for more details.
   453  	ElasticInferenceAccelerator LaunchTemplateElasticInferenceAcceleratorPtrInput
   454  	// Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.
   455  	EnclaveOptions LaunchTemplateEnclaveOptionsPtrInput
   456  	// The hibernation options for the instance. See Hibernation Options below for more details.
   457  	HibernationOptions LaunchTemplateHibernationOptionsPtrInput
   458  	// The IAM Instance Profile to launch the instance with. See Instance Profile
   459  	// below for more details.
   460  	IamInstanceProfile LaunchTemplateIamInstanceProfilePtrInput
   461  	// The AMI from which to launch the instance.
   462  	ImageId pulumi.StringPtrInput
   463  	// Shutdown behavior for the instance. Can be `stop` or `terminate`.
   464  	// (Default: `stop`).
   465  	InstanceInitiatedShutdownBehavior pulumi.StringPtrInput
   466  	// The market (purchasing) option for the instance. See Market Options
   467  	// below for details.
   468  	InstanceMarketOptions LaunchTemplateInstanceMarketOptionsPtrInput
   469  	// The attribute requirements for the type of instance. If present then `instanceType` cannot be present.
   470  	InstanceRequirements LaunchTemplateInstanceRequirementsPtrInput
   471  	// The type of the instance. If present then `instanceRequirements` cannot be present.
   472  	InstanceType pulumi.StringPtrInput
   473  	// The kernel ID.
   474  	KernelId pulumi.StringPtrInput
   475  	// The key name to use for the instance.
   476  	KeyName pulumi.StringPtrInput
   477  	// A list of license specifications to associate with. See License Specification below for more details.
   478  	LicenseSpecifications LaunchTemplateLicenseSpecificationArrayInput
   479  	// The maintenance options for the instance. See Maintenance Options below for more details.
   480  	MaintenanceOptions LaunchTemplateMaintenanceOptionsPtrInput
   481  	// Customize the metadata options for the instance. See Metadata Options below for more details.
   482  	MetadataOptions LaunchTemplateMetadataOptionsPtrInput
   483  	// The monitoring option for the instance. See Monitoring below for more details.
   484  	Monitoring LaunchTemplateMonitoringPtrInput
   485  	// The name of the launch template. If you leave this blank, the provider will auto-generate a unique name.
   486  	Name pulumi.StringPtrInput
   487  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   488  	NamePrefix pulumi.StringPtrInput
   489  	// Customize network interfaces to be attached at instance boot time. See Network
   490  	// Interfaces below for more details.
   491  	NetworkInterfaces LaunchTemplateNetworkInterfaceArrayInput
   492  	// The placement of the instance. See Placement below for more details.
   493  	Placement LaunchTemplatePlacementPtrInput
   494  	// The options for the instance hostname. The default values are inherited from the subnet. See Private DNS Name Options below for more details.
   495  	PrivateDnsNameOptions LaunchTemplatePrivateDnsNameOptionsPtrInput
   496  	// The ID of the RAM disk.
   497  	RamDiskId pulumi.StringPtrInput
   498  	// A list of security group names to associate with. If you are creating Instances in a VPC, use
   499  	// `vpcSecurityGroupIds` instead.
   500  	SecurityGroupNames pulumi.StringArrayInput
   501  	// The tags to apply to the resources during launch. See Tag Specifications below for more details.
   502  	TagSpecifications LaunchTemplateTagSpecificationArrayInput
   503  	// A map of tags to assign to the launch template. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   504  	Tags pulumi.StringMapInput
   505  	// Whether to update Default Version each update. Conflicts with `defaultVersion`.
   506  	UpdateDefaultVersion pulumi.BoolPtrInput
   507  	// The base64-encoded user data to provide when launching the instance.
   508  	UserData pulumi.StringPtrInput
   509  	// A list of security group IDs to associate with. Conflicts with `network_interfaces.security_groups`
   510  	VpcSecurityGroupIds pulumi.StringArrayInput
   511  }
   512  
   513  func (LaunchTemplateArgs) ElementType() reflect.Type {
   514  	return reflect.TypeOf((*launchTemplateArgs)(nil)).Elem()
   515  }
   516  
   517  type LaunchTemplateInput interface {
   518  	pulumi.Input
   519  
   520  	ToLaunchTemplateOutput() LaunchTemplateOutput
   521  	ToLaunchTemplateOutputWithContext(ctx context.Context) LaunchTemplateOutput
   522  }
   523  
   524  func (*LaunchTemplate) ElementType() reflect.Type {
   525  	return reflect.TypeOf((**LaunchTemplate)(nil)).Elem()
   526  }
   527  
   528  func (i *LaunchTemplate) ToLaunchTemplateOutput() LaunchTemplateOutput {
   529  	return i.ToLaunchTemplateOutputWithContext(context.Background())
   530  }
   531  
   532  func (i *LaunchTemplate) ToLaunchTemplateOutputWithContext(ctx context.Context) LaunchTemplateOutput {
   533  	return pulumi.ToOutputWithContext(ctx, i).(LaunchTemplateOutput)
   534  }
   535  
   536  // LaunchTemplateArrayInput is an input type that accepts LaunchTemplateArray and LaunchTemplateArrayOutput values.
   537  // You can construct a concrete instance of `LaunchTemplateArrayInput` via:
   538  //
   539  //	LaunchTemplateArray{ LaunchTemplateArgs{...} }
   540  type LaunchTemplateArrayInput interface {
   541  	pulumi.Input
   542  
   543  	ToLaunchTemplateArrayOutput() LaunchTemplateArrayOutput
   544  	ToLaunchTemplateArrayOutputWithContext(context.Context) LaunchTemplateArrayOutput
   545  }
   546  
   547  type LaunchTemplateArray []LaunchTemplateInput
   548  
   549  func (LaunchTemplateArray) ElementType() reflect.Type {
   550  	return reflect.TypeOf((*[]*LaunchTemplate)(nil)).Elem()
   551  }
   552  
   553  func (i LaunchTemplateArray) ToLaunchTemplateArrayOutput() LaunchTemplateArrayOutput {
   554  	return i.ToLaunchTemplateArrayOutputWithContext(context.Background())
   555  }
   556  
   557  func (i LaunchTemplateArray) ToLaunchTemplateArrayOutputWithContext(ctx context.Context) LaunchTemplateArrayOutput {
   558  	return pulumi.ToOutputWithContext(ctx, i).(LaunchTemplateArrayOutput)
   559  }
   560  
   561  // LaunchTemplateMapInput is an input type that accepts LaunchTemplateMap and LaunchTemplateMapOutput values.
   562  // You can construct a concrete instance of `LaunchTemplateMapInput` via:
   563  //
   564  //	LaunchTemplateMap{ "key": LaunchTemplateArgs{...} }
   565  type LaunchTemplateMapInput interface {
   566  	pulumi.Input
   567  
   568  	ToLaunchTemplateMapOutput() LaunchTemplateMapOutput
   569  	ToLaunchTemplateMapOutputWithContext(context.Context) LaunchTemplateMapOutput
   570  }
   571  
   572  type LaunchTemplateMap map[string]LaunchTemplateInput
   573  
   574  func (LaunchTemplateMap) ElementType() reflect.Type {
   575  	return reflect.TypeOf((*map[string]*LaunchTemplate)(nil)).Elem()
   576  }
   577  
   578  func (i LaunchTemplateMap) ToLaunchTemplateMapOutput() LaunchTemplateMapOutput {
   579  	return i.ToLaunchTemplateMapOutputWithContext(context.Background())
   580  }
   581  
   582  func (i LaunchTemplateMap) ToLaunchTemplateMapOutputWithContext(ctx context.Context) LaunchTemplateMapOutput {
   583  	return pulumi.ToOutputWithContext(ctx, i).(LaunchTemplateMapOutput)
   584  }
   585  
   586  type LaunchTemplateOutput struct{ *pulumi.OutputState }
   587  
   588  func (LaunchTemplateOutput) ElementType() reflect.Type {
   589  	return reflect.TypeOf((**LaunchTemplate)(nil)).Elem()
   590  }
   591  
   592  func (o LaunchTemplateOutput) ToLaunchTemplateOutput() LaunchTemplateOutput {
   593  	return o
   594  }
   595  
   596  func (o LaunchTemplateOutput) ToLaunchTemplateOutputWithContext(ctx context.Context) LaunchTemplateOutput {
   597  	return o
   598  }
   599  
   600  // The Amazon Resource Name (ARN) of the instance profile. Conflicts with `name`.
   601  func (o LaunchTemplateOutput) Arn() pulumi.StringOutput {
   602  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   603  }
   604  
   605  // Specify volumes to attach to the instance besides the volumes specified by the AMI.
   606  // See Block Devices below for details.
   607  func (o LaunchTemplateOutput) BlockDeviceMappings() LaunchTemplateBlockDeviceMappingArrayOutput {
   608  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateBlockDeviceMappingArrayOutput { return v.BlockDeviceMappings }).(LaunchTemplateBlockDeviceMappingArrayOutput)
   609  }
   610  
   611  // Targeting for EC2 capacity reservations. See Capacity Reservation Specification below for more details.
   612  func (o LaunchTemplateOutput) CapacityReservationSpecification() LaunchTemplateCapacityReservationSpecificationPtrOutput {
   613  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateCapacityReservationSpecificationPtrOutput {
   614  		return v.CapacityReservationSpecification
   615  	}).(LaunchTemplateCapacityReservationSpecificationPtrOutput)
   616  }
   617  
   618  // The CPU options for the instance. See CPU Options below for more details.
   619  func (o LaunchTemplateOutput) CpuOptions() LaunchTemplateCpuOptionsPtrOutput {
   620  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateCpuOptionsPtrOutput { return v.CpuOptions }).(LaunchTemplateCpuOptionsPtrOutput)
   621  }
   622  
   623  // Customize the credit specification of the instance. See Credit
   624  // Specification below for more details.
   625  func (o LaunchTemplateOutput) CreditSpecification() LaunchTemplateCreditSpecificationPtrOutput {
   626  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateCreditSpecificationPtrOutput { return v.CreditSpecification }).(LaunchTemplateCreditSpecificationPtrOutput)
   627  }
   628  
   629  // Default Version of the launch template.
   630  func (o LaunchTemplateOutput) DefaultVersion() pulumi.IntOutput {
   631  	return o.ApplyT(func(v *LaunchTemplate) pulumi.IntOutput { return v.DefaultVersion }).(pulumi.IntOutput)
   632  }
   633  
   634  // Description of the launch template.
   635  func (o LaunchTemplateOutput) Description() pulumi.StringPtrOutput {
   636  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   637  }
   638  
   639  // If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection).
   640  func (o LaunchTemplateOutput) DisableApiStop() pulumi.BoolPtrOutput {
   641  	return o.ApplyT(func(v *LaunchTemplate) pulumi.BoolPtrOutput { return v.DisableApiStop }).(pulumi.BoolPtrOutput)
   642  }
   643  
   644  // If `true`, enables [EC2 Instance
   645  // Termination Protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITermination)
   646  func (o LaunchTemplateOutput) DisableApiTermination() pulumi.BoolPtrOutput {
   647  	return o.ApplyT(func(v *LaunchTemplate) pulumi.BoolPtrOutput { return v.DisableApiTermination }).(pulumi.BoolPtrOutput)
   648  }
   649  
   650  // If `true`, the launched EC2 instance will be EBS-optimized.
   651  func (o LaunchTemplateOutput) EbsOptimized() pulumi.StringPtrOutput {
   652  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.EbsOptimized }).(pulumi.StringPtrOutput)
   653  }
   654  
   655  // The elastic GPU to attach to the instance. See Elastic GPU
   656  // below for more details.
   657  func (o LaunchTemplateOutput) ElasticGpuSpecifications() LaunchTemplateElasticGpuSpecificationArrayOutput {
   658  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateElasticGpuSpecificationArrayOutput {
   659  		return v.ElasticGpuSpecifications
   660  	}).(LaunchTemplateElasticGpuSpecificationArrayOutput)
   661  }
   662  
   663  // Configuration block containing an Elastic Inference Accelerator to attach to the instance. See Elastic Inference Accelerator below for more details.
   664  func (o LaunchTemplateOutput) ElasticInferenceAccelerator() LaunchTemplateElasticInferenceAcceleratorPtrOutput {
   665  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateElasticInferenceAcceleratorPtrOutput {
   666  		return v.ElasticInferenceAccelerator
   667  	}).(LaunchTemplateElasticInferenceAcceleratorPtrOutput)
   668  }
   669  
   670  // Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.
   671  func (o LaunchTemplateOutput) EnclaveOptions() LaunchTemplateEnclaveOptionsPtrOutput {
   672  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateEnclaveOptionsPtrOutput { return v.EnclaveOptions }).(LaunchTemplateEnclaveOptionsPtrOutput)
   673  }
   674  
   675  // The hibernation options for the instance. See Hibernation Options below for more details.
   676  func (o LaunchTemplateOutput) HibernationOptions() LaunchTemplateHibernationOptionsPtrOutput {
   677  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateHibernationOptionsPtrOutput { return v.HibernationOptions }).(LaunchTemplateHibernationOptionsPtrOutput)
   678  }
   679  
   680  // The IAM Instance Profile to launch the instance with. See Instance Profile
   681  // below for more details.
   682  func (o LaunchTemplateOutput) IamInstanceProfile() LaunchTemplateIamInstanceProfilePtrOutput {
   683  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateIamInstanceProfilePtrOutput { return v.IamInstanceProfile }).(LaunchTemplateIamInstanceProfilePtrOutput)
   684  }
   685  
   686  // The AMI from which to launch the instance.
   687  func (o LaunchTemplateOutput) ImageId() pulumi.StringPtrOutput {
   688  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.ImageId }).(pulumi.StringPtrOutput)
   689  }
   690  
   691  // Shutdown behavior for the instance. Can be `stop` or `terminate`.
   692  // (Default: `stop`).
   693  func (o LaunchTemplateOutput) InstanceInitiatedShutdownBehavior() pulumi.StringPtrOutput {
   694  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.InstanceInitiatedShutdownBehavior }).(pulumi.StringPtrOutput)
   695  }
   696  
   697  // The market (purchasing) option for the instance. See Market Options
   698  // below for details.
   699  func (o LaunchTemplateOutput) InstanceMarketOptions() LaunchTemplateInstanceMarketOptionsPtrOutput {
   700  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateInstanceMarketOptionsPtrOutput { return v.InstanceMarketOptions }).(LaunchTemplateInstanceMarketOptionsPtrOutput)
   701  }
   702  
   703  // The attribute requirements for the type of instance. If present then `instanceType` cannot be present.
   704  func (o LaunchTemplateOutput) InstanceRequirements() LaunchTemplateInstanceRequirementsPtrOutput {
   705  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateInstanceRequirementsPtrOutput { return v.InstanceRequirements }).(LaunchTemplateInstanceRequirementsPtrOutput)
   706  }
   707  
   708  // The type of the instance. If present then `instanceRequirements` cannot be present.
   709  func (o LaunchTemplateOutput) InstanceType() pulumi.StringPtrOutput {
   710  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.InstanceType }).(pulumi.StringPtrOutput)
   711  }
   712  
   713  // The kernel ID.
   714  func (o LaunchTemplateOutput) KernelId() pulumi.StringPtrOutput {
   715  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.KernelId }).(pulumi.StringPtrOutput)
   716  }
   717  
   718  // The key name to use for the instance.
   719  func (o LaunchTemplateOutput) KeyName() pulumi.StringPtrOutput {
   720  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.KeyName }).(pulumi.StringPtrOutput)
   721  }
   722  
   723  // The latest version of the launch template.
   724  func (o LaunchTemplateOutput) LatestVersion() pulumi.IntOutput {
   725  	return o.ApplyT(func(v *LaunchTemplate) pulumi.IntOutput { return v.LatestVersion }).(pulumi.IntOutput)
   726  }
   727  
   728  // A list of license specifications to associate with. See License Specification below for more details.
   729  func (o LaunchTemplateOutput) LicenseSpecifications() LaunchTemplateLicenseSpecificationArrayOutput {
   730  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateLicenseSpecificationArrayOutput { return v.LicenseSpecifications }).(LaunchTemplateLicenseSpecificationArrayOutput)
   731  }
   732  
   733  // The maintenance options for the instance. See Maintenance Options below for more details.
   734  func (o LaunchTemplateOutput) MaintenanceOptions() LaunchTemplateMaintenanceOptionsPtrOutput {
   735  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateMaintenanceOptionsPtrOutput { return v.MaintenanceOptions }).(LaunchTemplateMaintenanceOptionsPtrOutput)
   736  }
   737  
   738  // Customize the metadata options for the instance. See Metadata Options below for more details.
   739  func (o LaunchTemplateOutput) MetadataOptions() LaunchTemplateMetadataOptionsOutput {
   740  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateMetadataOptionsOutput { return v.MetadataOptions }).(LaunchTemplateMetadataOptionsOutput)
   741  }
   742  
   743  // The monitoring option for the instance. See Monitoring below for more details.
   744  func (o LaunchTemplateOutput) Monitoring() LaunchTemplateMonitoringPtrOutput {
   745  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateMonitoringPtrOutput { return v.Monitoring }).(LaunchTemplateMonitoringPtrOutput)
   746  }
   747  
   748  // The name of the launch template. If you leave this blank, the provider will auto-generate a unique name.
   749  func (o LaunchTemplateOutput) Name() pulumi.StringOutput {
   750  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   751  }
   752  
   753  // Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   754  func (o LaunchTemplateOutput) NamePrefix() pulumi.StringOutput {
   755  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput)
   756  }
   757  
   758  // Customize network interfaces to be attached at instance boot time. See Network
   759  // Interfaces below for more details.
   760  func (o LaunchTemplateOutput) NetworkInterfaces() LaunchTemplateNetworkInterfaceArrayOutput {
   761  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateNetworkInterfaceArrayOutput { return v.NetworkInterfaces }).(LaunchTemplateNetworkInterfaceArrayOutput)
   762  }
   763  
   764  // The placement of the instance. See Placement below for more details.
   765  func (o LaunchTemplateOutput) Placement() LaunchTemplatePlacementPtrOutput {
   766  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplatePlacementPtrOutput { return v.Placement }).(LaunchTemplatePlacementPtrOutput)
   767  }
   768  
   769  // The options for the instance hostname. The default values are inherited from the subnet. See Private DNS Name Options below for more details.
   770  func (o LaunchTemplateOutput) PrivateDnsNameOptions() LaunchTemplatePrivateDnsNameOptionsPtrOutput {
   771  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplatePrivateDnsNameOptionsPtrOutput { return v.PrivateDnsNameOptions }).(LaunchTemplatePrivateDnsNameOptionsPtrOutput)
   772  }
   773  
   774  // The ID of the RAM disk.
   775  func (o LaunchTemplateOutput) RamDiskId() pulumi.StringPtrOutput {
   776  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.RamDiskId }).(pulumi.StringPtrOutput)
   777  }
   778  
   779  // A list of security group names to associate with. If you are creating Instances in a VPC, use
   780  // `vpcSecurityGroupIds` instead.
   781  func (o LaunchTemplateOutput) SecurityGroupNames() pulumi.StringArrayOutput {
   782  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringArrayOutput { return v.SecurityGroupNames }).(pulumi.StringArrayOutput)
   783  }
   784  
   785  // The tags to apply to the resources during launch. See Tag Specifications below for more details.
   786  func (o LaunchTemplateOutput) TagSpecifications() LaunchTemplateTagSpecificationArrayOutput {
   787  	return o.ApplyT(func(v *LaunchTemplate) LaunchTemplateTagSpecificationArrayOutput { return v.TagSpecifications }).(LaunchTemplateTagSpecificationArrayOutput)
   788  }
   789  
   790  // A map of tags to assign to the launch template. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   791  func (o LaunchTemplateOutput) Tags() pulumi.StringMapOutput {
   792  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   793  }
   794  
   795  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   796  //
   797  // Deprecated: Please use `tags` instead.
   798  func (o LaunchTemplateOutput) TagsAll() pulumi.StringMapOutput {
   799  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   800  }
   801  
   802  // Whether to update Default Version each update. Conflicts with `defaultVersion`.
   803  func (o LaunchTemplateOutput) UpdateDefaultVersion() pulumi.BoolPtrOutput {
   804  	return o.ApplyT(func(v *LaunchTemplate) pulumi.BoolPtrOutput { return v.UpdateDefaultVersion }).(pulumi.BoolPtrOutput)
   805  }
   806  
   807  // The base64-encoded user data to provide when launching the instance.
   808  func (o LaunchTemplateOutput) UserData() pulumi.StringPtrOutput {
   809  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringPtrOutput { return v.UserData }).(pulumi.StringPtrOutput)
   810  }
   811  
   812  // A list of security group IDs to associate with. Conflicts with `network_interfaces.security_groups`
   813  func (o LaunchTemplateOutput) VpcSecurityGroupIds() pulumi.StringArrayOutput {
   814  	return o.ApplyT(func(v *LaunchTemplate) pulumi.StringArrayOutput { return v.VpcSecurityGroupIds }).(pulumi.StringArrayOutput)
   815  }
   816  
   817  type LaunchTemplateArrayOutput struct{ *pulumi.OutputState }
   818  
   819  func (LaunchTemplateArrayOutput) ElementType() reflect.Type {
   820  	return reflect.TypeOf((*[]*LaunchTemplate)(nil)).Elem()
   821  }
   822  
   823  func (o LaunchTemplateArrayOutput) ToLaunchTemplateArrayOutput() LaunchTemplateArrayOutput {
   824  	return o
   825  }
   826  
   827  func (o LaunchTemplateArrayOutput) ToLaunchTemplateArrayOutputWithContext(ctx context.Context) LaunchTemplateArrayOutput {
   828  	return o
   829  }
   830  
   831  func (o LaunchTemplateArrayOutput) Index(i pulumi.IntInput) LaunchTemplateOutput {
   832  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LaunchTemplate {
   833  		return vs[0].([]*LaunchTemplate)[vs[1].(int)]
   834  	}).(LaunchTemplateOutput)
   835  }
   836  
   837  type LaunchTemplateMapOutput struct{ *pulumi.OutputState }
   838  
   839  func (LaunchTemplateMapOutput) ElementType() reflect.Type {
   840  	return reflect.TypeOf((*map[string]*LaunchTemplate)(nil)).Elem()
   841  }
   842  
   843  func (o LaunchTemplateMapOutput) ToLaunchTemplateMapOutput() LaunchTemplateMapOutput {
   844  	return o
   845  }
   846  
   847  func (o LaunchTemplateMapOutput) ToLaunchTemplateMapOutputWithContext(ctx context.Context) LaunchTemplateMapOutput {
   848  	return o
   849  }
   850  
   851  func (o LaunchTemplateMapOutput) MapIndex(k pulumi.StringInput) LaunchTemplateOutput {
   852  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LaunchTemplate {
   853  		return vs[0].(map[string]*LaunchTemplate)[vs[1].(string)]
   854  	}).(LaunchTemplateOutput)
   855  }
   856  
   857  func init() {
   858  	pulumi.RegisterInputType(reflect.TypeOf((*LaunchTemplateInput)(nil)).Elem(), &LaunchTemplate{})
   859  	pulumi.RegisterInputType(reflect.TypeOf((*LaunchTemplateArrayInput)(nil)).Elem(), LaunchTemplateArray{})
   860  	pulumi.RegisterInputType(reflect.TypeOf((*LaunchTemplateMapInput)(nil)).Elem(), LaunchTemplateMap{})
   861  	pulumi.RegisterOutputType(LaunchTemplateOutput{})
   862  	pulumi.RegisterOutputType(LaunchTemplateArrayOutput{})
   863  	pulumi.RegisterOutputType(LaunchTemplateMapOutput{})
   864  }