import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class BlockDeviceMapping { Ebs ? : Ebs ; NoDevice ? : Value < string > ; VirtualName ? : Value < string > ; DeviceName ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotOptions { SpotInstanceType ? : Value < string > ; InstanceInterruptionBehavior ? : Value < string > ; MaxPrice ? : Value < string > ; BlockDurationMinutes ? : Value < number > ; ValidUntil ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ElasticGpuSpecification { Type ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TagSpecification { ResourceType ? : Value < string > ; Tags ? : List < ResourceTag > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Ebs { SnapshotId ? : Value < string > ; VolumeType ? : Value < string > ; KmsKeyId ? : Value < string > ; Encrypted ? : Value < boolean > ; Throughput ? : Value < number > ; Iops ? : Value < number > ; VolumeSize ? : Value < number > ; DeleteOnTermination ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EnclaveOptions { Enabled ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LaunchTemplateData { SecurityGroups ? : List < Value < string > > ; TagSpecifications ? : List < TagSpecification > ; UserData ? : Value < string > ; BlockDeviceMappings ? : List < BlockDeviceMapping > ; IamInstanceProfile ? : IamInstanceProfile ; KernelId ? : Value < string > ; EbsOptimized ? : Value < boolean > ; ElasticGpuSpecifications ? : List < ElasticGpuSpecification > ; ElasticInferenceAccelerators ? : List < LaunchTemplateElasticInferenceAccelerator > ; Placement ? : Placement ; NetworkInterfaces ? : List < NetworkInterface > ; EnclaveOptions ? : EnclaveOptions ; ImageId ? : Value < string > ; InstanceType ? : Value < string > ; Monitoring ? : Monitoring ; HibernationOptions ? : HibernationOptions ; MetadataOptions ? : MetadataOptions ; LicenseSpecifications ? : List < LicenseSpecification > ; InstanceInitiatedShutdownBehavior ? : Value < string > ; CpuOptions ? : CpuOptions ; SecurityGroupIds ? : List < Value < string > > ; KeyName ? : Value < string > ; DisableApiTermination ? : Value < boolean > ; InstanceMarketOptions ? : InstanceMarketOptions ; RamDiskId ? : Value < string > ; CapacityReservationSpecification ? : CapacityReservationSpecification ; CreditSpecification ? : CreditSpecification ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class MetadataOptions { HttpPutResponseHopLimit ? : Value < number > ; HttpTokens ? : Value < string > ; HttpEndpoint ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CapacityReservationSpecification { CapacityReservationPreference ? : Value < string > ; CapacityReservationTarget ? : CapacityReservationTarget ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CapacityReservationTarget { CapacityReservationResourceGroupArn ? : Value < string > ; CapacityReservationId ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CpuOptions { ThreadsPerCore ? : Value < number > ; CoreCount ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class PrivateIpAdd { PrivateIpAddress ? : Value < string > ; Primary ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class IamInstanceProfile { Arn ? : Value < string > ; Name ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LicenseSpecification { LicenseConfigurationArn ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class HibernationOptions { Configured ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstanceMarketOptions { SpotOptions ? : SpotOptions ; MarketType ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CreditSpecification { CpuCredits ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Monitoring { Enabled ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Placement { GroupName ? : Value < string > ; Tenancy ? : Value < string > ; SpreadDomain ? : Value < string > ; PartitionNumber ? : Value < number > ; AvailabilityZone ? : Value < string > ; Affinity ? : Value < string > ; HostId ? : Value < string > ; HostResourceGroupArn ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Ipv6Add { Ipv6Address ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class NetworkInterface { Description ? : Value < string > ; PrivateIpAddress ? : Value < string > ; PrivateIpAddresses ? : List < PrivateIpAdd > ; SecondaryPrivateIpAddressCount ? : Value < number > ; DeviceIndex ? : Value < number > ; SubnetId ? : Value < string > ; Ipv6Addresses ? : List < Ipv6Add > ; AssociatePublicIpAddress ? : Value < boolean > ; NetworkInterfaceId ? : Value < string > ; NetworkCardIndex ? : Value < number > ; InterfaceType ? : Value < string > ; AssociateCarrierIpAddress ? : Value < boolean > ; Ipv6AddressCount ? : Value < number > ; Groups ? : List < Value < string > > ; DeleteOnTermination ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LaunchTemplateElasticInferenceAccelerator { Type ? : Value < string > ; Count ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LaunchTemplateTagSpecification { ResourceType ? : Value < string > ; Tags ? : List < ResourceTag > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface LaunchTemplateProperties { LaunchTemplateName ? : Value < string > ; LaunchTemplateData ? : LaunchTemplateData ; TagSpecifications ? : List < LaunchTemplateTagSpecification > ; } export default class LaunchTemplate extends ResourceBase < LaunchTemplateProperties > { static BlockDeviceMapping = BlockDeviceMapping ; static SpotOptions = SpotOptions ; static ElasticGpuSpecification = ElasticGpuSpecification ; static TagSpecification = TagSpecification ; static Ebs = Ebs ; static EnclaveOptions = EnclaveOptions ; static LaunchTemplateData = LaunchTemplateData ; static MetadataOptions = MetadataOptions ; static CapacityReservationSpecification = CapacityReservationSpecification ; static CapacityReservationTarget = CapacityReservationTarget ; static CpuOptions = CpuOptions ; static PrivateIpAdd = PrivateIpAdd ; static IamInstanceProfile = IamInstanceProfile ; static LicenseSpecification = LicenseSpecification ; static HibernationOptions = HibernationOptions ; static InstanceMarketOptions = InstanceMarketOptions ; static CreditSpecification = CreditSpecification ; static Monitoring = Monitoring ; static Placement = Placement ; static Ipv6Add = Ipv6Add ; static NetworkInterface = NetworkInterface ; static LaunchTemplateElasticInferenceAccelerator = LaunchTemplateElasticInferenceAccelerator ; static LaunchTemplateTagSpecification = LaunchTemplateTagSpecification ; constructor ( properties ? ) { super ( 'AWS::EC2::LaunchTemplate' , properties || { } ) ; } }