import * as core from "@terrascript/core"; export interface PreferencesArgs extends core.SchemaArgs { checkpointDelay?: string | core.StringOut; checkpointPercentages?: core.Array | core.ArrayOut; instanceWarmup?: string | core.StringOut; minHealthyPercentage?: number | core.NumberOut; skipMatching?: boolean | core.BooleanOut; } export class Preferences extends core.Schema { @core.attr(String) public checkpointDelay?: string | core.StringOut; @core.attr(Number, { kind: "array" }) public checkpointPercentages?: | core.Array | core.ArrayOut; @core.attr(String) public instanceWarmup?: string | core.StringOut; @core.attr(Number) public minHealthyPercentage?: number | core.NumberOut; @core.attr(Boolean) public skipMatching?: boolean | core.BooleanOut; } export interface InstanceRefreshArgs extends core.SchemaArgs { preferences?: Preferences; strategy: string | core.StringOut; triggers?: core.Array | core.ArrayOut; } export class InstanceRefresh extends core.Schema { @core.attr(Preferences) public preferences?: Preferences; @core.attr(String) public strategy!: string | core.StringOut; @core.attr(String, { kind: "array" }) public triggers?: core.Array | core.ArrayOut; } export interface TagArgs extends core.SchemaArgs { key: string | core.StringOut; propagateAtLaunch: boolean | core.BooleanOut; value: string | core.StringOut; } export class Tag extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(Boolean) public propagateAtLaunch!: boolean | core.BooleanOut; @core.attr(String) public value!: string | core.StringOut; } export interface InitialLifecycleHookArgs extends core.SchemaArgs { defaultResult?: string | core.StringOut; heartbeatTimeout?: number | core.NumberOut; lifecycleTransition: string | core.StringOut; name: string | core.StringOut; notificationMetadata?: string | core.StringOut; notificationTargetArn?: string | core.StringOut; roleArn?: string | core.StringOut; } export class InitialLifecycleHook extends core.Schema { @core.attr(String, { computed: true }) public defaultResult?: string | core.StringOut; @core.attr(Number) public heartbeatTimeout?: number | core.NumberOut; @core.attr(String) public lifecycleTransition!: string | core.StringOut; @core.attr(String) public name!: string | core.StringOut; @core.attr(String) public notificationMetadata?: string | core.StringOut; @core.attr(String) public notificationTargetArn?: string | core.StringOut; @core.attr(String) public roleArn?: string | core.StringOut; } export interface LaunchTemplateArgs extends core.SchemaArgs { id?: string | core.StringOut; name?: string | core.StringOut; version?: string | core.StringOut; } export class LaunchTemplate extends core.Schema { @core.attr(String, { computed: true }) public id?: string | core.StringOut; @core.attr(String, { computed: true }) public name?: string | core.StringOut; @core.attr(String) public version?: string | core.StringOut; } export interface InstanceReusePolicyArgs extends core.SchemaArgs { reuseOnScaleIn?: boolean | core.BooleanOut; } export class InstanceReusePolicy extends core.Schema { @core.attr(Boolean) public reuseOnScaleIn?: boolean | core.BooleanOut; } export interface WarmPoolArgs extends core.SchemaArgs { instanceReusePolicy?: InstanceReusePolicy; maxGroupPreparedCapacity?: number | core.NumberOut; minSize?: number | core.NumberOut; poolState?: string | core.StringOut; } export class WarmPool extends core.Schema { @core.attr(InstanceReusePolicy) public instanceReusePolicy?: InstanceReusePolicy; @core.attr(Number) public maxGroupPreparedCapacity?: number | core.NumberOut; @core.attr(Number) public minSize?: number | core.NumberOut; @core.attr(String) public poolState?: string | core.StringOut; } export interface InstancesDistributionArgs extends core.SchemaArgs { onDemandAllocationStrategy?: string | core.StringOut; onDemandBaseCapacity?: number | core.NumberOut; onDemandPercentageAboveBaseCapacity?: number | core.NumberOut; spotAllocationStrategy?: string | core.StringOut; spotInstancePools?: number | core.NumberOut; spotMaxPrice?: string | core.StringOut; } export class InstancesDistribution extends core.Schema { @core.attr(String, { computed: true }) public onDemandAllocationStrategy?: string | core.StringOut; @core.attr(Number, { computed: true }) public onDemandBaseCapacity?: number | core.NumberOut; @core.attr(Number, { computed: true }) public onDemandPercentageAboveBaseCapacity?: number | core.NumberOut; @core.attr(String, { computed: true }) public spotAllocationStrategy?: string | core.StringOut; @core.attr(Number, { computed: true }) public spotInstancePools?: number | core.NumberOut; @core.attr(String) public spotMaxPrice?: string | core.StringOut; } export interface LaunchTemplateSpecificationArgs extends core.SchemaArgs { launchTemplateId?: string | core.StringOut; launchTemplateName?: string | core.StringOut; version?: string | core.StringOut; } export class LaunchTemplateSpecification extends core.Schema { @core.attr(String, { computed: true }) public launchTemplateId?: string | core.StringOut; @core.attr(String, { computed: true }) public launchTemplateName?: string | core.StringOut; @core.attr(String) public version?: string | core.StringOut; } 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 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 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 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 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 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 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 OverrideArgs extends core.SchemaArgs { instanceRequirements?: InstanceRequirements; instanceType?: string | core.StringOut; launchTemplateSpecification?: LaunchTemplateSpecification; weightedCapacity?: string | core.StringOut; } export class Override extends core.Schema { @core.attr(InstanceRequirements) public instanceRequirements?: InstanceRequirements; @core.attr(String) public instanceType?: string | core.StringOut; @core.attr(LaunchTemplateSpecification) public launchTemplateSpecification?: LaunchTemplateSpecification; @core.attr(String) public weightedCapacity?: string | core.StringOut; } export interface MixedInstancesPolicyLaunchTemplateArgs extends core.SchemaArgs { launchTemplateSpecification: LaunchTemplateSpecification; override?: core.Array | core.ArrayOut; } export class MixedInstancesPolicyLaunchTemplate extends core.Schema { @core.attr(LaunchTemplateSpecification) public launchTemplateSpecification!: LaunchTemplateSpecification; @core.attr(Override, { kind: "array" }) public override?: core.Array | core.ArrayOut; } export interface MixedInstancesPolicyArgs extends core.SchemaArgs { instancesDistribution?: InstancesDistribution; launchTemplate: MixedInstancesPolicyLaunchTemplate; } export class MixedInstancesPolicy extends core.Schema { @core.attr(InstancesDistribution, { computed: true }) public instancesDistribution?: InstancesDistribution; @core.attr(MixedInstancesPolicyLaunchTemplate) public launchTemplate!: MixedInstancesPolicyLaunchTemplate; } export interface GroupArgs extends core.ResourceArgs { /** * (Optional) A list of one or more availability zones for the group. Used for EC2-Classic, attaching a * network interface via id from a launch template and default subnets when not specified with `vpc_zo * ne_identifier` argument. Conflicts with `vpc_zone_identifier`. */ availabilityZones?: core.Array | core.ArrayOut; /** * (Optional) Indicates whether capacity rebalance is enabled. Otherwise, capacity rebalance is disable * d. */ capacityRebalance?: boolean | core.BooleanOut; /** * (Optional) Reserved. */ context?: string | core.StringOut; /** * (Optional) The amount of time, in seconds, after a scaling activity completes before another scaling * activity can start. */ defaultCooldown?: number | core.NumberOut; /** * (Optional) The amount of time, in seconds, until a newly launched instance can contribute to the Ama * zon CloudWatch metrics. This delay lets an instance finish initializing before Amazon EC2 Auto Scali * ng aggregates instance metrics, resulting in more reliable usage data. Set this value equal to the a * mount of time that it takes for resource consumption to become stable after an instance reaches the * InService state. (See [Set the default instance warmup for an Auto Scaling group](https://docs.aws.a * mazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html)) */ defaultInstanceWarmup?: number | core.NumberOut; /** * (Optional) The number of Amazon EC2 instances that */ desiredCapacity?: number | core.NumberOut; /** * (Optional) A list of metrics to collect. The allowed values are defined by the [underlying AWS API]( * https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_EnableMetricsCollection.html). */ enabledMetrics?: core.Array | core.ArrayOut; /** * (Optional) Allows deleting the Auto Scaling Group without waiting */ forceDelete?: boolean | core.BooleanOut; forceDeleteWarmPool?: boolean | core.BooleanOut; /** * (Optional, Default: 300) Time (in seconds) after instance comes into service before checking health. */ healthCheckGracePeriod?: number | core.NumberOut; /** * (Optional) "EC2" or "ELB". Controls how health checking is done. */ healthCheckType?: string | core.StringOut; /** * (Optional) One or more */ initialLifecycleHook?: | core.Array | core.ArrayOut; /** * (Optional) If this block is configured, start an */ instanceRefresh?: InstanceRefresh; /** * (Optional) The name of the launch configuration to use. */ launchConfiguration?: string | core.StringOut; /** * (Optional) Nested argument with Launch template specification to use to launch instances. See [Launc * h Template](#launch_template) below for more details. */ launchTemplate?: LaunchTemplate; loadBalancers?: core.Array | core.ArrayOut; maxInstanceLifetime?: number | core.NumberOut; /** * (Required) The maximum size of the Auto Scaling Group. */ maxSize: number | core.NumberOut; /** * (Optional) The granularity to associate with the metrics to collect. The only valid value is `1Minut * e`. Default is `1Minute`. */ metricsGranularity?: string | core.StringOut; /** * (Optional) Setting this causes Terraform to wait for */ minElbCapacity?: number | core.NumberOut; /** * (Required) The minimum size of the Auto Scaling Group. */ minSize: number | core.NumberOut; mixedInstancesPolicy?: MixedInstancesPolicy; /** * (Optional) The name of the Auto Scaling Group. By default generated by Terraform. Conflicts with `na * me_prefix`. */ name?: string | core.StringOut; /** * (Optional) Creates a unique name beginning with the specified */ namePrefix?: string | core.StringOut; placementGroup?: string | core.StringOut; protectFromScaleIn?: boolean | core.BooleanOut; serviceLinkedRoleArn?: string | core.StringOut; /** * (Optional) A list of processes to suspend for the Auto Scaling Group. The allowed values are `Launch * , `Terminate`, `HealthCheck`, `ReplaceUnhealthy`, `AZRebalance`, `AlarmNotification`, `ScheduledAct * ions`, `AddToLoadBalancer`, `InstanceRefresh`. */ suspendedProcesses?: core.Array | core.ArrayOut; tag?: core.Array | core.ArrayOut; tags?: core.Array> | core.MapArrayOut; targetGroupArns?: core.Array | core.ArrayOut; terminationPolicies?: core.Array | core.ArrayOut; vpcZoneIdentifier?: core.Array | core.ArrayOut; waitForCapacityTimeout?: string | core.StringOut; /** * (Optional) Setting this will cause Terraform to wait */ waitForElbCapacity?: number | core.NumberOut; /** * (Optional) If this block is configured, add a [Warm Pool](https://docs.aws.amazon.com/autoscaling/ec * 2/userguide/ec2-auto-scaling-warm-pools.html) */ warmPool?: WarmPool; } export class Group extends core.Resource { /** * The ARN for this Auto Scaling Group */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) A list of one or more availability zones for the group. Used for EC2-Classic, attaching a * network interface via id from a launch template and default subnets when not specified with `vpc_zo * ne_identifier` argument. Conflicts with `vpc_zone_identifier`. */ @core.attr(String, { computed: true, kind: "array" }) public availabilityZones?: core.Array | core.ArrayOut; /** * (Optional) Indicates whether capacity rebalance is enabled. Otherwise, capacity rebalance is disable * d. */ @core.attr(Boolean) public capacityRebalance?: boolean | core.BooleanOut; /** * (Optional) Reserved. */ @core.attr(String) public context?: string | core.StringOut; /** * (Optional) The amount of time, in seconds, after a scaling activity completes before another scaling * activity can start. */ @core.attr(Number, { computed: true }) public defaultCooldown?: number | core.NumberOut; /** * (Optional) The amount of time, in seconds, until a newly launched instance can contribute to the Ama * zon CloudWatch metrics. This delay lets an instance finish initializing before Amazon EC2 Auto Scali * ng aggregates instance metrics, resulting in more reliable usage data. Set this value equal to the a * mount of time that it takes for resource consumption to become stable after an instance reaches the * InService state. (See [Set the default instance warmup for an Auto Scaling group](https://docs.aws.a * mazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html)) */ @core.attr(Number) public defaultInstanceWarmup?: number | core.NumberOut; /** * (Optional) The number of Amazon EC2 instances that */ @core.attr(Number, { computed: true }) public desiredCapacity?: number | core.NumberOut; /** * (Optional) A list of metrics to collect. The allowed values are defined by the [underlying AWS API]( * https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_EnableMetricsCollection.html). */ @core.attr(String, { kind: "array" }) public enabledMetrics?: core.Array | core.ArrayOut; /** * (Optional) Allows deleting the Auto Scaling Group without waiting */ @core.attr(Boolean) public forceDelete?: boolean | core.BooleanOut; @core.attr(Boolean) public forceDeleteWarmPool?: boolean | core.BooleanOut; /** * (Optional, Default: 300) Time (in seconds) after instance comes into service before checking health. */ @core.attr(Number) public healthCheckGracePeriod?: number | core.NumberOut; /** * (Optional) "EC2" or "ELB". Controls how health checking is done. */ @core.attr(String, { computed: true }) public healthCheckType?: string | core.StringOut; /** * (Optional) The ID of the launch template. Conflicts with `name`. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) One or more */ @core.attr(InitialLifecycleHook, { kind: "array" }) public initialLifecycleHook?: | core.Array | core.ArrayOut; /** * (Optional) If this block is configured, start an */ @core.attr(InstanceRefresh) public instanceRefresh?: InstanceRefresh; /** * (Optional) The name of the launch configuration to use. */ @core.attr(String) public launchConfiguration?: string | core.StringOut; /** * (Optional) Nested argument with Launch template specification to use to launch instances. See [Launc * h Template](#launch_template) below for more details. */ @core.attr(LaunchTemplate) public launchTemplate?: LaunchTemplate; @core.attr(String, { kind: "array" }) public loadBalancers?: core.Array | core.ArrayOut; @core.attr(Number) public maxInstanceLifetime?: number | core.NumberOut; /** * (Required) The maximum size of the Auto Scaling Group. */ @core.attr(Number) public maxSize!: number | core.NumberOut; /** * (Optional) The granularity to associate with the metrics to collect. The only valid value is `1Minut * e`. Default is `1Minute`. */ @core.attr(String) public metricsGranularity?: string | core.StringOut; /** * (Optional) Setting this causes Terraform to wait for */ @core.attr(Number) public minElbCapacity?: number | core.NumberOut; /** * (Required) The minimum size of the Auto Scaling Group. */ @core.attr(Number) public minSize!: number | core.NumberOut; @core.attr(MixedInstancesPolicy) public mixedInstancesPolicy?: MixedInstancesPolicy; /** * (Optional) The name of the Auto Scaling Group. By default generated by Terraform. Conflicts with `na * me_prefix`. */ @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; @core.attr(String) public placementGroup?: string | core.StringOut; @core.attr(Boolean) public protectFromScaleIn?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public serviceLinkedRoleArn?: string | core.StringOut; /** * (Optional) A list of processes to suspend for the Auto Scaling Group. The allowed values are `Launch * , `Terminate`, `HealthCheck`, `ReplaceUnhealthy`, `AZRebalance`, `AlarmNotification`, `ScheduledAct * ions`, `AddToLoadBalancer`, `InstanceRefresh`. */ @core.attr(String, { kind: "array" }) public suspendedProcesses?: | core.Array | core.ArrayOut; @core.attr(Tag, { kind: "array" }) public tag?: core.Array | core.ArrayOut; @core.attr(String, { kind: "map_array" }) public tags?: | core.Array> | core.MapArrayOut; @core.attr(String, { kind: "array" }) public targetGroupArns?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public terminationPolicies?: | core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public vpcZoneIdentifier?: core.Array | core.ArrayOut; @core.attr(String) public waitForCapacityTimeout?: string | core.StringOut; /** * (Optional) Setting this will cause Terraform to wait */ @core.attr(Number) public waitForElbCapacity?: number | core.NumberOut; /** * (Optional) If this block is configured, add a [Warm Pool](https://docs.aws.amazon.com/autoscaling/ec * 2/userguide/ec2-auto-scaling-warm-pools.html) */ @core.attr(WarmPool) public warmPool?: WarmPool; constructor(name: string, args?: GroupArgs) { super(name, "aws_autoscaling_group", args); } public override getNamespace(): string { return "aws_autoscaling"; } }