import * as core from "@terrascript/core"; export interface SpotOptionsArgs extends core.SchemaArgs { blockDurationMinutes?: number | core.NumberOut; instanceInterruptionBehavior?: string | core.StringOut; maxPrice?: string | core.StringOut; spotInstanceType?: string | core.StringOut; validUntil?: string | core.StringOut; } export class SpotOptions extends core.Schema { @core.attr(Number) public blockDurationMinutes?: number | core.NumberOut; @core.attr(String) public instanceInterruptionBehavior?: string | core.StringOut; @core.attr(String) public maxPrice?: string | core.StringOut; @core.attr(String) public spotInstanceType?: string | core.StringOut; @core.attr(String, { computed: true }) public validUntil?: string | core.StringOut; } export interface InstanceMarketOptionsArgs extends core.SchemaArgs { marketType?: string | core.StringOut; spotOptions?: SpotOptions; } export class InstanceMarketOptions extends core.Schema { @core.attr(String) public marketType?: string | core.StringOut; @core.attr(SpotOptions) public spotOptions?: SpotOptions; } export interface PlacementArgs extends core.SchemaArgs { affinity?: string | core.StringOut; availabilityZone?: string | core.StringOut; groupName?: string | core.StringOut; hostId?: string | core.StringOut; hostResourceGroupArn?: string | core.StringOut; partitionNumber?: number | core.NumberOut; spreadDomain?: string | core.StringOut; tenancy?: string | core.StringOut; } export class Placement extends core.Schema { @core.attr(String) public affinity?: string | core.StringOut; @core.attr(String) public availabilityZone?: string | core.StringOut; @core.attr(String) public groupName?: string | core.StringOut; @core.attr(String) public hostId?: string | core.StringOut; @core.attr(String) public hostResourceGroupArn?: string | core.StringOut; @core.attr(Number) public partitionNumber?: number | core.NumberOut; @core.attr(String) public spreadDomain?: string | core.StringOut; @core.attr(String) public tenancy?: string | core.StringOut; } export interface EbsArgs extends core.SchemaArgs { deleteOnTermination?: string | core.StringOut; encrypted?: string | core.StringOut; iops?: number | core.NumberOut; kmsKeyId?: string | core.StringOut; snapshotId?: string | core.StringOut; throughput?: number | core.NumberOut; volumeSize?: number | core.NumberOut; volumeType?: string | core.StringOut; } export class Ebs extends core.Schema { @core.attr(String) public deleteOnTermination?: string | core.StringOut; @core.attr(String) public encrypted?: string | core.StringOut; @core.attr(Number, { computed: true }) public iops?: number | core.NumberOut; @core.attr(String) public kmsKeyId?: string | core.StringOut; @core.attr(String) public snapshotId?: string | core.StringOut; @core.attr(Number, { computed: true }) public throughput?: number | core.NumberOut; @core.attr(Number, { computed: true }) public volumeSize?: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeType?: string | core.StringOut; } export interface BlockDeviceMappingsArgs extends core.SchemaArgs { deviceName?: string | core.StringOut; ebs?: Ebs; noDevice?: string | core.StringOut; virtualName?: string | core.StringOut; } export class BlockDeviceMappings extends core.Schema { @core.attr(String) public deviceName?: string | core.StringOut; @core.attr(Ebs) public ebs?: Ebs; @core.attr(String) public noDevice?: string | core.StringOut; @core.attr(String) public virtualName?: string | core.StringOut; } export interface PrivateDnsNameOptionsArgs extends core.SchemaArgs { enableResourceNameDnsARecord?: boolean | core.BooleanOut; enableResourceNameDnsAaaaRecord?: boolean | core.BooleanOut; hostnameType?: string | core.StringOut; } export class PrivateDnsNameOptions extends core.Schema { @core.attr(Boolean) public enableResourceNameDnsARecord?: boolean | core.BooleanOut; @core.attr(Boolean) public enableResourceNameDnsAaaaRecord?: boolean | core.BooleanOut; @core.attr(String) public hostnameType?: string | core.StringOut; } export interface MaintenanceOptionsArgs extends core.SchemaArgs { autoRecovery?: string | core.StringOut; } export class MaintenanceOptions extends core.Schema { @core.attr(String) public autoRecovery?: string | core.StringOut; } export interface VcpuCountArgs extends core.SchemaArgs { max?: number | core.NumberOut; min: number | core.NumberOut; } export class VcpuCount extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min!: number | core.NumberOut; } export interface BaselineEbsBandwidthMbpsArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class BaselineEbsBandwidthMbps extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface MemoryMibArgs extends core.SchemaArgs { max?: number | core.NumberOut; min: number | core.NumberOut; } export class MemoryMib extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min!: number | core.NumberOut; } export interface TotalLocalStorageGbArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class TotalLocalStorageGb extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface AcceleratorCountArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class AcceleratorCount extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface AcceleratorTotalMemoryMibArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class AcceleratorTotalMemoryMib extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface MemoryGibPerVcpuArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class MemoryGibPerVcpu extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface NetworkInterfaceCountArgs extends core.SchemaArgs { max?: number | core.NumberOut; min?: number | core.NumberOut; } export class NetworkInterfaceCount extends core.Schema { @core.attr(Number) public max?: number | core.NumberOut; @core.attr(Number) public min?: number | core.NumberOut; } export interface InstanceRequirementsArgs extends core.SchemaArgs { acceleratorCount?: AcceleratorCount; acceleratorManufacturers?: core.Array | core.ArrayOut; acceleratorNames?: core.Array | core.ArrayOut; acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib; acceleratorTypes?: core.Array | core.ArrayOut; bareMetal?: string | core.StringOut; baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps; burstablePerformance?: string | core.StringOut; cpuManufacturers?: core.Array | core.ArrayOut; excludedInstanceTypes?: core.Array | core.ArrayOut; instanceGenerations?: core.Array | core.ArrayOut; localStorage?: string | core.StringOut; localStorageTypes?: core.Array | core.ArrayOut; memoryGibPerVcpu?: MemoryGibPerVcpu; memoryMib: MemoryMib; networkInterfaceCount?: NetworkInterfaceCount; onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut; requireHibernateSupport?: boolean | core.BooleanOut; spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut; totalLocalStorageGb?: TotalLocalStorageGb; vcpuCount: VcpuCount; } export class InstanceRequirements extends core.Schema { @core.attr(AcceleratorCount) public acceleratorCount?: AcceleratorCount; @core.attr(String, { kind: "array" }) public acceleratorManufacturers?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public acceleratorNames?: core.Array | core.ArrayOut; @core.attr(AcceleratorTotalMemoryMib) public acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib; @core.attr(String, { kind: "array" }) public acceleratorTypes?: core.Array | core.ArrayOut; @core.attr(String) public bareMetal?: string | core.StringOut; @core.attr(BaselineEbsBandwidthMbps) public baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps; @core.attr(String) public burstablePerformance?: string | core.StringOut; @core.attr(String, { kind: "array" }) public cpuManufacturers?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public excludedInstanceTypes?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public instanceGenerations?: | core.Array | core.ArrayOut; @core.attr(String) public localStorage?: string | core.StringOut; @core.attr(String, { kind: "array" }) public localStorageTypes?: core.Array | core.ArrayOut; @core.attr(MemoryGibPerVcpu) public memoryGibPerVcpu?: MemoryGibPerVcpu; @core.attr(MemoryMib) public memoryMib!: MemoryMib; @core.attr(NetworkInterfaceCount) public networkInterfaceCount?: NetworkInterfaceCount; @core.attr(Number) public onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut; @core.attr(Boolean) public requireHibernateSupport?: boolean | core.BooleanOut; @core.attr(Number) public spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut; @core.attr(TotalLocalStorageGb) public totalLocalStorageGb?: TotalLocalStorageGb; @core.attr(VcpuCount) public vcpuCount!: VcpuCount; } export interface ElasticInferenceAcceleratorArgs extends core.SchemaArgs { type: string | core.StringOut; } export class ElasticInferenceAccelerator extends core.Schema { @core.attr(String) public type!: string | core.StringOut; } export interface CapacityReservationTargetArgs extends core.SchemaArgs { capacityReservationId?: string | core.StringOut; capacityReservationResourceGroupArn?: string | core.StringOut; } export class CapacityReservationTarget extends core.Schema { @core.attr(String) public capacityReservationId?: string | core.StringOut; @core.attr(String) public capacityReservationResourceGroupArn?: string | core.StringOut; } export interface CapacityReservationSpecificationArgs extends core.SchemaArgs { capacityReservationPreference?: string | core.StringOut; capacityReservationTarget?: CapacityReservationTarget; } export class CapacityReservationSpecification extends core.Schema { @core.attr(String) public capacityReservationPreference?: string | core.StringOut; @core.attr(CapacityReservationTarget) public capacityReservationTarget?: CapacityReservationTarget; } export interface HibernationOptionsArgs extends core.SchemaArgs { configured: boolean | core.BooleanOut; } export class HibernationOptions extends core.Schema { @core.attr(Boolean) public configured!: boolean | core.BooleanOut; } export interface LicenseSpecificationArgs extends core.SchemaArgs { licenseConfigurationArn: string | core.StringOut; } export class LicenseSpecification extends core.Schema { @core.attr(String) public licenseConfigurationArn!: string | core.StringOut; } export interface TagSpecificationsArgs extends core.SchemaArgs { resourceType?: string | core.StringOut; tags?: core.Map | core.MapOut; } export class TagSpecifications extends core.Schema { @core.attr(String) public resourceType?: string | core.StringOut; @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; } export interface ElasticGpuSpecificationsArgs extends core.SchemaArgs { type: string | core.StringOut; } export class ElasticGpuSpecifications extends core.Schema { @core.attr(String) public type!: string | core.StringOut; } export interface MonitoringArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; } export class Monitoring extends core.Schema { @core.attr(Boolean) public enabled?: boolean | core.BooleanOut; } export interface MetadataOptionsArgs extends core.SchemaArgs { httpEndpoint?: string | core.StringOut; httpProtocolIpv6?: string | core.StringOut; httpPutResponseHopLimit?: number | core.NumberOut; httpTokens?: string | core.StringOut; instanceMetadataTags?: string | core.StringOut; } export class MetadataOptions extends core.Schema { @core.attr(String, { computed: true }) public httpEndpoint?: string | core.StringOut; @core.attr(String) public httpProtocolIpv6?: string | core.StringOut; @core.attr(Number, { computed: true }) public httpPutResponseHopLimit?: number | core.NumberOut; @core.attr(String, { computed: true }) public httpTokens?: string | core.StringOut; @core.attr(String) public instanceMetadataTags?: string | core.StringOut; } export interface IamInstanceProfileArgs extends core.SchemaArgs { arn?: string | core.StringOut; name?: string | core.StringOut; } export class IamInstanceProfile extends core.Schema { @core.attr(String) public arn?: string | core.StringOut; @core.attr(String) public name?: string | core.StringOut; } export interface NetworkInterfacesArgs extends core.SchemaArgs { associateCarrierIpAddress?: string | core.StringOut; associatePublicIpAddress?: string | core.StringOut; deleteOnTermination?: string | core.StringOut; description?: string | core.StringOut; deviceIndex?: number | core.NumberOut; interfaceType?: string | core.StringOut; ipv4AddressCount?: number | core.NumberOut; ipv4Addresses?: core.Array | core.ArrayOut; ipv4PrefixCount?: number | core.NumberOut; ipv4Prefixes?: core.Array | core.ArrayOut; ipv6AddressCount?: number | core.NumberOut; ipv6Addresses?: core.Array | core.ArrayOut; ipv6PrefixCount?: number | core.NumberOut; ipv6Prefixes?: core.Array | core.ArrayOut; networkCardIndex?: number | core.NumberOut; networkInterfaceId?: string | core.StringOut; privateIpAddress?: string | core.StringOut; securityGroups?: core.Array | core.ArrayOut; subnetId?: string | core.StringOut; } export class NetworkInterfaces extends core.Schema { @core.attr(String) public associateCarrierIpAddress?: string | core.StringOut; @core.attr(String) public associatePublicIpAddress?: string | core.StringOut; @core.attr(String) public deleteOnTermination?: string | core.StringOut; @core.attr(String) public description?: string | core.StringOut; @core.attr(Number) public deviceIndex?: number | core.NumberOut; @core.attr(String) public interfaceType?: string | core.StringOut; @core.attr(Number) public ipv4AddressCount?: number | core.NumberOut; @core.attr(String, { kind: "array" }) public ipv4Addresses?: core.Array | core.ArrayOut; @core.attr(Number) public ipv4PrefixCount?: number | core.NumberOut; @core.attr(String, { kind: "array" }) public ipv4Prefixes?: core.Array | core.ArrayOut; @core.attr(Number) public ipv6AddressCount?: number | core.NumberOut; @core.attr(String, { kind: "array" }) public ipv6Addresses?: core.Array | core.ArrayOut; @core.attr(Number) public ipv6PrefixCount?: number | core.NumberOut; @core.attr(String, { kind: "array" }) public ipv6Prefixes?: core.Array | core.ArrayOut; @core.attr(Number) public networkCardIndex?: number | core.NumberOut; @core.attr(String) public networkInterfaceId?: string | core.StringOut; @core.attr(String) public privateIpAddress?: string | core.StringOut; @core.attr(String, { kind: "array" }) public securityGroups?: core.Array | core.ArrayOut; @core.attr(String) public subnetId?: string | core.StringOut; } export interface CpuOptionsArgs extends core.SchemaArgs { coreCount?: number | core.NumberOut; threadsPerCore?: number | core.NumberOut; } export class CpuOptions extends core.Schema { @core.attr(Number) public coreCount?: number | core.NumberOut; @core.attr(Number) public threadsPerCore?: number | core.NumberOut; } export interface EnclaveOptionsArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; } export class EnclaveOptions extends core.Schema { @core.attr(Boolean) public enabled?: boolean | core.BooleanOut; } export interface CreditSpecificationArgs extends core.SchemaArgs { cpuCredits?: string | core.StringOut; } export class CreditSpecification extends core.Schema { @core.attr(String) public cpuCredits?: string | core.StringOut; } export interface LaunchTemplateArgs extends core.ResourceArgs { /** * (Optional) Specify volumes to attach to the instance besides the volumes specified by the AMI. */ blockDeviceMappings?: | core.Array | core.ArrayOut; /** * (Optional) Targeting for EC2 capacity reservations. See [Capacity Reservation Specification](#capaci * ty-reservation-specification) below for more details. */ capacityReservationSpecification?: CapacityReservationSpecification; /** * (Optional) The CPU options for the instance. See [CPU Options](#cpu-options) below for more details. */ cpuOptions?: CpuOptions; /** * (Optional) Customize the credit specification of the instance. See [Credit */ creditSpecification?: CreditSpecification; /** * (Optional) Default Version of the launch template. */ defaultVersion?: number | core.NumberOut; /** * (Optional) Description of the launch template. */ description?: string | core.StringOut; /** * (Optional) If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest * /UserGuide/Stop_Start.html#Using_StopProtection). */ disableApiStop?: boolean | core.BooleanOut; /** * (Optional) If `true`, enables [EC2 Instance */ disableApiTermination?: boolean | core.BooleanOut; /** * (Optional) If `true`, the launched EC2 instance will be EBS-optimized. */ ebsOptimized?: string | core.StringOut; /** * (Optional) The elastic GPU to attach to the instance. See [Elastic GPU](#elastic-gpu) */ elasticGpuSpecifications?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block containing an Elastic Inference Accelerator to attach to the instance * . See [Elastic Inference Accelerator](#elastic-inference-accelerator) below for more details. */ elasticInferenceAccelerator?: ElasticInferenceAccelerator; /** * (Optional) Enable Nitro Enclaves on launched instances. See [Enclave Options](#enclave-options) belo * w for more details. */ enclaveOptions?: EnclaveOptions; /** * (Optional) The hibernation options for the instance. See [Hibernation Options](#hibernation-options) * below for more details. */ hibernationOptions?: HibernationOptions; /** * (Optional) The IAM Instance Profile to launch the instance with. See [Instance Profile](#instance-pr * ofile) */ iamInstanceProfile?: IamInstanceProfile; /** * (Optional) The AMI from which to launch the instance. */ imageId?: string | core.StringOut; /** * (Optional) Shutdown behavior for the instance. Can be `stop` or `terminate`. */ instanceInitiatedShutdownBehavior?: string | core.StringOut; /** * (Optional) The market (purchasing) option for the instance. See [Market Options](#market-options) */ instanceMarketOptions?: InstanceMarketOptions; /** * (Optional) The attribute requirements for the type of instance. If present then `instance_type` cann * ot be present. */ instanceRequirements?: InstanceRequirements; /** * (Optional) The type of the instance. If present then `instance_requirements` cannot be present. */ instanceType?: string | core.StringOut; /** * (Optional) The kernel ID. */ kernelId?: string | core.StringOut; /** * (Optional) The key name to use for the instance. */ keyName?: string | core.StringOut; /** * (Optional) A list of license specifications to associate with. See [License Specification](#license- * specification) below for more details. */ licenseSpecification?: | core.Array | core.ArrayOut; /** * (Optional) The maintenance options for the instance. See [Maintenance Options](#maintenance-options) * below for more details. */ maintenanceOptions?: MaintenanceOptions; /** * (Optional) Customize the metadata options for the instance. See [Metadata Options](#metadata-options * ) below for more details. */ metadataOptions?: MetadataOptions; /** * (Optional) The monitoring option for the instance. See [Monitoring](#monitoring) below for more deta * ils. */ monitoring?: Monitoring; /** * (Optional) The name of the launch template. If you leave this blank, Terraform will auto-generate a * unique name. */ name?: string | core.StringOut; /** * (Optional) Creates a unique name beginning with the specified prefix. Conflicts with `name`. */ namePrefix?: string | core.StringOut; /** * (Optional) Customize network interfaces to be attached at instance boot time. See [Network */ networkInterfaces?: | core.Array | core.ArrayOut; /** * (Optional) The placement of the instance. See [Placement](#placement) below for more details. */ placement?: Placement; /** * (Optional) The options for the instance hostname. The default values are inherited from the subnet. * See [Private DNS Name Options](#private-dns-name-options) below for more details. */ privateDnsNameOptions?: PrivateDnsNameOptions; /** * (Optional) The ID of the RAM disk. */ ramDiskId?: string | core.StringOut; /** * (Optional) A list of security group names to associate with. If you are creating Instances in a VPC, * use */ securityGroupNames?: core.Array | core.ArrayOut; /** * (Optional) The tags to apply to the resources during launch. See [Tag Specifications](#tag-specifica * tions) below for more details. */ tagSpecifications?: | core.Array | core.ArrayOut; /** * (Optional) A map of tags to assign to the launch template. If configured with a provider [`default_t * ags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_ * tags-configuration-block) present, tags with matching keys will overwrite those defined at the provi * der-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Optional) Whether to update Default Version each update. Conflicts with `default_version`. */ updateDefaultVersion?: boolean | core.BooleanOut; /** * (Optional) The base64-encoded user data to provide when launching the instance. */ userData?: string | core.StringOut; /** * (Optional) A list of security group IDs to associate with. Conflicts with `network_interfaces.securi * ty_groups` */ vpcSecurityGroupIds?: core.Array | core.ArrayOut; } export class LaunchTemplate extends core.Resource { /** * The Amazon Resource Name (ARN) of the instance profile. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Specify volumes to attach to the instance besides the volumes specified by the AMI. */ @core.attr(BlockDeviceMappings, { kind: "array" }) public blockDeviceMappings?: | core.Array | core.ArrayOut; /** * (Optional) Targeting for EC2 capacity reservations. See [Capacity Reservation Specification](#capaci * ty-reservation-specification) below for more details. */ @core.attr(CapacityReservationSpecification) public capacityReservationSpecification?: CapacityReservationSpecification; /** * (Optional) The CPU options for the instance. See [CPU Options](#cpu-options) below for more details. */ @core.attr(CpuOptions) public cpuOptions?: CpuOptions; /** * (Optional) Customize the credit specification of the instance. See [Credit */ @core.attr(CreditSpecification) public creditSpecification?: CreditSpecification; /** * (Optional) Default Version of the launch template. */ @core.attr(Number, { computed: true }) public defaultVersion?: number | core.NumberOut; /** * (Optional) Description of the launch template. */ @core.attr(String) public description?: string | core.StringOut; /** * (Optional) If true, enables [EC2 Instance Stop Protection](https://docs.aws.amazon.com/AWSEC2/latest * /UserGuide/Stop_Start.html#Using_StopProtection). */ @core.attr(Boolean) public disableApiStop?: boolean | core.BooleanOut; /** * (Optional) If `true`, enables [EC2 Instance */ @core.attr(Boolean) public disableApiTermination?: boolean | core.BooleanOut; /** * (Optional) If `true`, the launched EC2 instance will be EBS-optimized. */ @core.attr(String) public ebsOptimized?: string | core.StringOut; /** * (Optional) The elastic GPU to attach to the instance. See [Elastic GPU](#elastic-gpu) */ @core.attr(ElasticGpuSpecifications, { kind: "array" }) public elasticGpuSpecifications?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block containing an Elastic Inference Accelerator to attach to the instance * . See [Elastic Inference Accelerator](#elastic-inference-accelerator) below for more details. */ @core.attr(ElasticInferenceAccelerator) public elasticInferenceAccelerator?: ElasticInferenceAccelerator; /** * (Optional) Enable Nitro Enclaves on launched instances. See [Enclave Options](#enclave-options) belo * w for more details. */ @core.attr(EnclaveOptions) public enclaveOptions?: EnclaveOptions; /** * (Optional) The hibernation options for the instance. See [Hibernation Options](#hibernation-options) * below for more details. */ @core.attr(HibernationOptions) public hibernationOptions?: HibernationOptions; /** * (Optional) The IAM Instance Profile to launch the instance with. See [Instance Profile](#instance-pr * ofile) */ @core.attr(IamInstanceProfile) public iamInstanceProfile?: IamInstanceProfile; /** * The ID of the launch template. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) The AMI from which to launch the instance. */ @core.attr(String) public imageId?: string | core.StringOut; /** * (Optional) Shutdown behavior for the instance. Can be `stop` or `terminate`. */ @core.attr(String) public instanceInitiatedShutdownBehavior?: string | core.StringOut; /** * (Optional) The market (purchasing) option for the instance. See [Market Options](#market-options) */ @core.attr(InstanceMarketOptions) public instanceMarketOptions?: InstanceMarketOptions; /** * (Optional) The attribute requirements for the type of instance. If present then `instance_type` cann * ot be present. */ @core.attr(InstanceRequirements) public instanceRequirements?: InstanceRequirements; /** * (Optional) The type of the instance. If present then `instance_requirements` cannot be present. */ @core.attr(String) public instanceType?: string | core.StringOut; /** * (Optional) The kernel ID. */ @core.attr(String) public kernelId?: string | core.StringOut; /** * (Optional) The key name to use for the instance. */ @core.attr(String) public keyName?: string | core.StringOut; /** * The latest version of the launch template. */ @core.attr(Number, { computed: true }) public latestVersion!: number | core.NumberOut; /** * (Optional) A list of license specifications to associate with. See [License Specification](#license- * specification) below for more details. */ @core.attr(LicenseSpecification, { kind: "array" }) public licenseSpecification?: | core.Array | core.ArrayOut; /** * (Optional) The maintenance options for the instance. See [Maintenance Options](#maintenance-options) * below for more details. */ @core.attr(MaintenanceOptions) public maintenanceOptions?: MaintenanceOptions; /** * (Optional) Customize the metadata options for the instance. See [Metadata Options](#metadata-options * ) below for more details. */ @core.attr(MetadataOptions, { computed: true }) public metadataOptions?: MetadataOptions; /** * (Optional) The monitoring option for the instance. See [Monitoring](#monitoring) below for more deta * ils. */ @core.attr(Monitoring) public monitoring?: Monitoring; /** * (Optional) The name of the launch template. If you leave this blank, Terraform will auto-generate a * unique name. */ @core.attr(String, { computed: true }) public name?: string | core.StringOut; /** * (Optional) Creates a unique name beginning with the specified prefix. Conflicts with `name`. */ @core.attr(String, { computed: true }) public namePrefix?: string | core.StringOut; /** * (Optional) Customize network interfaces to be attached at instance boot time. See [Network */ @core.attr(NetworkInterfaces, { kind: "array" }) public networkInterfaces?: | core.Array | core.ArrayOut; /** * (Optional) The placement of the instance. See [Placement](#placement) below for more details. */ @core.attr(Placement) public placement?: Placement; /** * (Optional) The options for the instance hostname. The default values are inherited from the subnet. * See [Private DNS Name Options](#private-dns-name-options) below for more details. */ @core.attr(PrivateDnsNameOptions) public privateDnsNameOptions?: PrivateDnsNameOptions; /** * (Optional) The ID of the RAM disk. */ @core.attr(String) public ramDiskId?: string | core.StringOut; /** * (Optional) A list of security group names to associate with. If you are creating Instances in a VPC, * use */ @core.attr(String, { kind: "array" }) public securityGroupNames?: | core.Array | core.ArrayOut; /** * (Optional) The tags to apply to the resources during launch. See [Tag Specifications](#tag-specifica * tions) below for more details. */ @core.attr(TagSpecifications, { kind: "array" }) public tagSpecifications?: | core.Array | core.ArrayOut; /** * (Optional) A map of tags to assign to the launch template. If configured with a provider [`default_t * ags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_ * tags-configuration-block) present, tags with matching keys will overwrite those defined at the provi * der-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Optional) Whether to update Default Version each update. Conflicts with `default_version`. */ @core.attr(Boolean) public updateDefaultVersion?: boolean | core.BooleanOut; /** * (Optional) The base64-encoded user data to provide when launching the instance. */ @core.attr(String) public userData?: string | core.StringOut; /** * (Optional) A list of security group IDs to associate with. Conflicts with `network_interfaces.securi * ty_groups` */ @core.attr(String, { kind: "array" }) public vpcSecurityGroupIds?: | core.Array | core.ArrayOut; constructor(name: string, args?: LaunchTemplateArgs) { super(name, "aws_launch_template", args); } public override getNamespace(): string { return "aws_ec2"; } }