import * as core from "@terrascript/core"; export interface EbsBlockDeviceArgs extends core.SchemaArgs { deleteOnTermination?: boolean | core.BooleanOut; deviceName: string | core.StringOut; encrypted?: boolean | core.BooleanOut; iops?: number | core.NumberOut; noDevice?: boolean | core.BooleanOut; snapshotId?: string | core.StringOut; throughput?: number | core.NumberOut; volumeSize?: number | core.NumberOut; volumeType?: string | core.StringOut; } export class EbsBlockDevice extends core.Schema { @core.attr(Boolean) public deleteOnTermination?: boolean | core.BooleanOut; @core.attr(String) public deviceName!: string | core.StringOut; @core.attr(Boolean, { computed: true }) public encrypted?: boolean | core.BooleanOut; @core.attr(Number, { computed: true }) public iops?: number | core.NumberOut; @core.attr(Boolean) public noDevice?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) 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 MetadataOptionsArgs extends core.SchemaArgs { httpEndpoint?: string | core.StringOut; httpPutResponseHopLimit?: number | core.NumberOut; httpTokens?: string | core.StringOut; } export class MetadataOptions extends core.Schema { @core.attr(String, { computed: true }) public httpEndpoint?: string | core.StringOut; @core.attr(Number, { computed: true }) public httpPutResponseHopLimit?: number | core.NumberOut; @core.attr(String, { computed: true }) public httpTokens?: string | core.StringOut; } export interface RootBlockDeviceArgs extends core.SchemaArgs { deleteOnTermination?: boolean | core.BooleanOut; encrypted?: boolean | core.BooleanOut; iops?: number | core.NumberOut; throughput?: number | core.NumberOut; volumeSize?: number | core.NumberOut; volumeType?: string | core.StringOut; } export class RootBlockDevice extends core.Schema { @core.attr(Boolean) public deleteOnTermination?: boolean | core.BooleanOut; @core.attr(Boolean, { computed: true }) public encrypted?: boolean | core.BooleanOut; @core.attr(Number, { computed: true }) public iops?: number | core.NumberOut; @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 EphemeralBlockDeviceArgs extends core.SchemaArgs { deviceName: string | core.StringOut; noDevice?: boolean | core.BooleanOut; virtualName?: string | core.StringOut; } export class EphemeralBlockDevice extends core.Schema { @core.attr(String) public deviceName!: string | core.StringOut; @core.attr(Boolean) public noDevice?: boolean | core.BooleanOut; @core.attr(String) public virtualName?: string | core.StringOut; } export interface LaunchConfigurationArgs extends core.ResourceArgs { /** * (Optional) Associate a public ip address with an instance in a VPC. */ associatePublicIpAddress?: boolean | core.BooleanOut; /** * (Optional) Additional EBS block devices to attach to the */ ebsBlockDevice?: core.Array | core.ArrayOut; /** * (Optional) If true, the launched EC2 instance will be EBS-optimized. */ ebsOptimized?: boolean | core.BooleanOut; /** * (Optional) Enables/disables detailed monitoring. This is enabled by default. */ enableMonitoring?: boolean | core.BooleanOut; /** * (Optional) Customize Ephemeral (also known as */ ephemeralBlockDevice?: | core.Array | core.ArrayOut; /** * (Optional) The name attribute of the IAM instance profile to associate */ iamInstanceProfile?: string | core.StringOut; /** * (Required) The EC2 image ID to launch. */ imageId: string | core.StringOut; /** * (Required) The size of instance to launch. */ instanceType: string | core.StringOut; /** * (Optional) The key name that should be used for the instance. */ keyName?: string | core.StringOut; /** * The metadata options for the instance. */ metadataOptions?: MetadataOptions; /** * (Optional) The name of the launch configuration. If you leave */ name?: string | core.StringOut; /** * (Optional) Creates a unique name beginning with the specified */ namePrefix?: string | core.StringOut; /** * (Optional) The tenancy of the instance. Valid values are */ placementTenancy?: string | core.StringOut; /** * (Optional) Customize details about the root block */ rootBlockDevice?: RootBlockDevice; /** * (Optional) A list of associated security group IDS. */ securityGroups?: core.Array | core.ArrayOut; /** * (Optional; Default: On-demand price) The maximum price to use for reserving spot instances. */ spotPrice?: string | core.StringOut; /** * (Optional) The user data to provide when launching the instance. Do not pass gzip-compressed data vi * a this argument; see `user_data_base64` instead. */ userData?: string | core.StringOut; /** * (Optional) Can be used instead of `user_data` to pass base64-encoded binary data directly. Use this * instead of `user_data` whenever the value is not a valid UTF-8 string. For example, gzip-encoded use * r data must be base64-encoded and passed via this argument to avoid corruption. */ userDataBase64?: string | core.StringOut; /** * (Optional) The ID of a ClassicLink-enabled VPC. Only applies to EC2-Classic instances. (eg. `vpc-273 * 0681a`) */ vpcClassicLinkId?: string | core.StringOut; /** * (Optional) The IDs of one or more security groups for the specified ClassicLink-enabled VPC (eg. `sg * 46ae3d11`). */ vpcClassicLinkSecurityGroups?: | core.Array | core.ArrayOut; } export class LaunchConfiguration extends core.Resource { /** * The Amazon Resource Name of the launch configuration. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Associate a public ip address with an instance in a VPC. */ @core.attr(Boolean, { computed: true }) public associatePublicIpAddress?: boolean | core.BooleanOut; /** * (Optional) Additional EBS block devices to attach to the */ @core.attr(EbsBlockDevice, { computed: true, kind: "array" }) public ebsBlockDevice?: | core.Array | core.ArrayOut; /** * (Optional) If true, the launched EC2 instance will be EBS-optimized. */ @core.attr(Boolean, { computed: true }) public ebsOptimized?: boolean | core.BooleanOut; /** * (Optional) Enables/disables detailed monitoring. This is enabled by default. */ @core.attr(Boolean) public enableMonitoring?: boolean | core.BooleanOut; /** * (Optional) Customize Ephemeral (also known as */ @core.attr(EphemeralBlockDevice, { kind: "array" }) public ephemeralBlockDevice?: | core.Array | core.ArrayOut; /** * (Optional) The name attribute of the IAM instance profile to associate */ @core.attr(String) public iamInstanceProfile?: string | core.StringOut; /** * The ID of the launch configuration. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The EC2 image ID to launch. */ @core.attr(String) public imageId!: string | core.StringOut; /** * (Required) The size of instance to launch. */ @core.attr(String) public instanceType!: string | core.StringOut; /** * (Optional) The key name that should be used for the instance. */ @core.attr(String, { computed: true }) public keyName?: string | core.StringOut; /** * The metadata options for the instance. */ @core.attr(MetadataOptions, { computed: true }) public metadataOptions?: MetadataOptions; /** * (Optional) The name of the launch configuration. If you leave */ @core.attr(String, { computed: true }) public name?: string | core.StringOut; /** * (Optional) Creates a unique name beginning with the specified */ @core.attr(String, { computed: true }) public namePrefix?: string | core.StringOut; /** * (Optional) The tenancy of the instance. Valid values are */ @core.attr(String) public placementTenancy?: string | core.StringOut; /** * (Optional) Customize details about the root block */ @core.attr(RootBlockDevice, { computed: true }) public rootBlockDevice?: RootBlockDevice; /** * (Optional) A list of associated security group IDS. */ @core.attr(String, { kind: "array" }) public securityGroups?: core.Array | core.ArrayOut; /** * (Optional; Default: On-demand price) The maximum price to use for reserving spot instances. */ @core.attr(String) public spotPrice?: string | core.StringOut; /** * (Optional) The user data to provide when launching the instance. Do not pass gzip-compressed data vi * a this argument; see `user_data_base64` instead. */ @core.attr(String) public userData?: string | core.StringOut; /** * (Optional) Can be used instead of `user_data` to pass base64-encoded binary data directly. Use this * instead of `user_data` whenever the value is not a valid UTF-8 string. For example, gzip-encoded use * r data must be base64-encoded and passed via this argument to avoid corruption. */ @core.attr(String) public userDataBase64?: string | core.StringOut; /** * (Optional) The ID of a ClassicLink-enabled VPC. Only applies to EC2-Classic instances. (eg. `vpc-273 * 0681a`) */ @core.attr(String) public vpcClassicLinkId?: string | core.StringOut; /** * (Optional) The IDs of one or more security groups for the specified ClassicLink-enabled VPC (eg. `sg * 46ae3d11`). */ @core.attr(String, { kind: "array" }) public vpcClassicLinkSecurityGroups?: | core.Array | core.ArrayOut; constructor(name: string, args?: LaunchConfigurationArgs) { super(name, "aws_launch_configuration", args); } public override getNamespace(): string { return "aws_auto_scaling"; } }