![JAR search and dependency download from the Maven repository](/logo.png)
io.cloudshiftdev.awscdk.services.autoscaling.CfnAutoScalingGroupProps.kt Maven / Gradle / Ivy
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")
package io.cloudshiftdev.awscdk.services.autoscaling
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.Number
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName
/**
* Properties for defining a `CfnAutoScalingGroup`.
*
* Example:
*
* ```
* // The code below shows an example of how to instantiate this type.
* // The values are placeholders you should change.
* import io.cloudshiftdev.awscdk.services.autoscaling.*;
* CfnAutoScalingGroupProps cfnAutoScalingGroupProps = CfnAutoScalingGroupProps.builder()
* .maxSize("maxSize")
* .minSize("minSize")
* // the properties below are optional
* .autoScalingGroupName("autoScalingGroupName")
* .availabilityZones(List.of("availabilityZones"))
* .capacityRebalance(false)
* .context("context")
* .cooldown("cooldown")
* .defaultInstanceWarmup(123)
* .desiredCapacity("desiredCapacity")
* .desiredCapacityType("desiredCapacityType")
* .healthCheckGracePeriod(123)
* .healthCheckType("healthCheckType")
* .instanceId("instanceId")
* .instanceMaintenancePolicy(InstanceMaintenancePolicyProperty.builder()
* .maxHealthyPercentage(123)
* .minHealthyPercentage(123)
* .build())
* .launchConfigurationName("launchConfigurationName")
* .launchTemplate(LaunchTemplateSpecificationProperty.builder()
* .version("version")
* // the properties below are optional
* .launchTemplateId("launchTemplateId")
* .launchTemplateName("launchTemplateName")
* .build())
* .lifecycleHookSpecificationList(List.of(LifecycleHookSpecificationProperty.builder()
* .lifecycleHookName("lifecycleHookName")
* .lifecycleTransition("lifecycleTransition")
* // the properties below are optional
* .defaultResult("defaultResult")
* .heartbeatTimeout(123)
* .notificationMetadata("notificationMetadata")
* .notificationTargetArn("notificationTargetArn")
* .roleArn("roleArn")
* .build()))
* .loadBalancerNames(List.of("loadBalancerNames"))
* .maxInstanceLifetime(123)
* .metricsCollection(List.of(MetricsCollectionProperty.builder()
* .granularity("granularity")
* // the properties below are optional
* .metrics(List.of("metrics"))
* .build()))
* .mixedInstancesPolicy(MixedInstancesPolicyProperty.builder()
* .launchTemplate(LaunchTemplateProperty.builder()
* .launchTemplateSpecification(LaunchTemplateSpecificationProperty.builder()
* .version("version")
* // the properties below are optional
* .launchTemplateId("launchTemplateId")
* .launchTemplateName("launchTemplateName")
* .build())
* // the properties below are optional
* .overrides(List.of(LaunchTemplateOverridesProperty.builder()
* .instanceRequirements(InstanceRequirementsProperty.builder()
* .memoryMiB(MemoryMiBRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .vCpuCount(VCpuCountRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* // the properties below are optional
* .acceleratorCount(AcceleratorCountRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .acceleratorManufacturers(List.of("acceleratorManufacturers"))
* .acceleratorNames(List.of("acceleratorNames"))
* .acceleratorTotalMemoryMiB(AcceleratorTotalMemoryMiBRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .acceleratorTypes(List.of("acceleratorTypes"))
* .allowedInstanceTypes(List.of("allowedInstanceTypes"))
* .bareMetal("bareMetal")
* .baselineEbsBandwidthMbps(BaselineEbsBandwidthMbpsRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .burstablePerformance("burstablePerformance")
* .cpuManufacturers(List.of("cpuManufacturers"))
* .excludedInstanceTypes(List.of("excludedInstanceTypes"))
* .instanceGenerations(List.of("instanceGenerations"))
* .localStorage("localStorage")
* .localStorageTypes(List.of("localStorageTypes"))
* .maxSpotPriceAsPercentageOfOptimalOnDemandPrice(123)
* .memoryGiBPerVCpu(MemoryGiBPerVCpuRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .networkBandwidthGbps(NetworkBandwidthGbpsRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .networkInterfaceCount(NetworkInterfaceCountRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .onDemandMaxPricePercentageOverLowestPrice(123)
* .requireHibernateSupport(false)
* .spotMaxPricePercentageOverLowestPrice(123)
* .totalLocalStorageGb(TotalLocalStorageGBRequestProperty.builder()
* .max(123)
* .min(123)
* .build())
* .build())
* .instanceType("instanceType")
* .launchTemplateSpecification(LaunchTemplateSpecificationProperty.builder()
* .version("version")
* // the properties below are optional
* .launchTemplateId("launchTemplateId")
* .launchTemplateName("launchTemplateName")
* .build())
* .weightedCapacity("weightedCapacity")
* .build()))
* .build())
* // the properties below are optional
* .instancesDistribution(InstancesDistributionProperty.builder()
* .onDemandAllocationStrategy("onDemandAllocationStrategy")
* .onDemandBaseCapacity(123)
* .onDemandPercentageAboveBaseCapacity(123)
* .spotAllocationStrategy("spotAllocationStrategy")
* .spotInstancePools(123)
* .spotMaxPrice("spotMaxPrice")
* .build())
* .build())
* .newInstancesProtectedFromScaleIn(false)
* .notificationConfiguration(NotificationConfigurationProperty.builder()
* .topicArn("topicArn")
* // the properties below are optional
* .notificationTypes(List.of("notificationTypes"))
* .build())
* .notificationConfigurations(List.of(NotificationConfigurationProperty.builder()
* .topicArn("topicArn")
* // the properties below are optional
* .notificationTypes(List.of("notificationTypes"))
* .build()))
* .placementGroup("placementGroup")
* .serviceLinkedRoleArn("serviceLinkedRoleArn")
* .tags(List.of(TagPropertyProperty.builder()
* .key("key")
* .propagateAtLaunch(false)
* .value("value")
* .build()))
* .targetGroupArns(List.of("targetGroupArns"))
* .terminationPolicies(List.of("terminationPolicies"))
* .vpcZoneIdentifier(List.of("vpcZoneIdentifier"))
* .build();
* ```
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
*/
public interface CfnAutoScalingGroupProps {
/**
* The name of the Auto Scaling group. This name must be unique per Region per account.
*
* The name can contain any ASCII character 33 to 126 including most punctuation characters,
* digits, and upper and lowercased letters.
*
*
* You cannot use a colon (:) in the name.
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-autoscalinggroupname)
*/
public fun autoScalingGroupName(): String? = unwrap(this).getAutoScalingGroupName()
/**
* A list of Availability Zones where instances in the Auto Scaling group can be created.
*
* Used for launching into the default VPC subnet in each Availability Zone when not using the
* `VPCZoneIdentifier` property, or for attaching a network interface when an existing network
* interface ID is specified in a launch template.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzones)
*/
public fun availabilityZones(): List = unwrap(this).getAvailabilityZones() ?: emptyList()
/**
* Indicates whether Capacity Rebalancing is enabled.
*
* Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon EC2
* Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot Instance
* is at an elevated risk of interruption. After launching a new instance, it then terminates an old
* instance. For more information, see [Use Capacity Rebalancing to handle Amazon EC2 Spot
* Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)
* in the in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-capacityrebalance)
*/
public fun capacityRebalance(): Any? = unwrap(this).getCapacityRebalance()
/**
* Reserved.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-context)
*/
public fun context(): String? = unwrap(this).getContext()
/**
* *Only needed if you use simple scaling policies.*.
*
* The amount of time, in seconds, between one scaling activity ending and another one starting
* due to simple scaling policies. For more information, see [Scaling cooldowns for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `300` seconds
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-cooldown)
*/
public fun cooldown(): String? = unwrap(this).getCooldown()
/**
* The amount of time, in seconds, until a new instance is considered to have finished
* initializing and resource consumption to become stable after it enters the `InService` state.
*
* During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after it
* replaces an instance before it moves on to replacing the next instance. Amazon EC2 Auto Scaling
* also waits for the warm-up period before aggregating the metrics for new instances with existing
* instances in the Amazon CloudWatch metrics that are used for scaling, resulting in more reliable
* usage data. For more information, see [Set the default instance warmup for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
*
* To manage various warm-up settings at the group level, we recommend that you set the default
* instance warmup, *even if it is set to 0 seconds* . To remove a value that you previously set,
* include the property but specify `-1` for the value. However, we strongly recommend keeping the
* default instance warmup enabled by specifying a value of `0` or other nominal value.
*
*
* Default: None
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-defaultinstancewarmup)
*/
public fun defaultInstanceWarmup(): Number? = unwrap(this).getDefaultInstanceWarmup()
/**
* The desired capacity is the initial capacity of the Auto Scaling group at the time of its
* creation and the capacity it attempts to maintain.
*
* It can scale beyond this capacity if you configure automatic scaling.
*
* The number must be greater than or equal to the minimum size of the group and less than or
* equal to the maximum size of the group. If you do not specify a desired capacity when creating the
* stack, the default is the minimum size of the group.
*
* CloudFormation marks the Auto Scaling group as successful (by setting its status to
* CREATE_COMPLETE) when the desired capacity is reached. However, if a maximum Spot price is set in
* the launch template or launch configuration that you specified, then desired capacity is not used
* as a criteria for success. Whether your request is fulfilled depends on Spot Instance capacity and
* your maximum price.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacity)
*/
public fun desiredCapacity(): String? = unwrap(this).getDesiredCapacity()
/**
* The unit of measurement for the value specified for desired capacity.
*
* Amazon EC2 Auto Scaling supports `DesiredCapacityType` for attribute-based instance type
* selection only. For more information, see [Create a mixed instances group using attribute-based
* instance type
* selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* By default, Amazon EC2 Auto Scaling specifies `units` , which translates into number of
* instances.
*
* Valid values: `units` | `vcpu` | `memory-mib`
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacitytype)
*/
public fun desiredCapacityType(): String? = unwrap(this).getDesiredCapacityType()
/**
* The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health
* status of an EC2 instance that has come into service and marking it unhealthy due to a failed
* health check.
*
* This is useful if your instances do not immediately pass their health checks after they enter
* the `InService` state. For more information, see [Set the health check grace period for an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `0` seconds
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthcheckgraceperiod)
*/
public fun healthCheckGracePeriod(): Number? = unwrap(this).getHealthCheckGracePeriod()
/**
* A comma-separated value string of one or more health check types.
*
* The valid values are `EC2` , `EBS` , `ELB` , and `VPC_LATTICE` . `EC2` is the default health
* check and cannot be disabled. For more information, see [Health checks for instances in an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Only specify `EC2` if you must clear a value that was previously set.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthchecktype)
*/
public fun healthCheckType(): String? = unwrap(this).getHealthCheckType()
/**
* The ID of the instance used to base the launch configuration on.
*
* For more information, see [Create an Auto Scaling group using an EC2
* instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* If you specify `LaunchTemplate` , `MixedInstancesPolicy` , or `LaunchConfigurationName` , don't
* specify `InstanceId` .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instanceid)
*/
public fun instanceId(): String? = unwrap(this).getInstanceId()
/**
* An instance maintenance policy.
*
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instancemaintenancepolicy)
*/
public fun instanceMaintenancePolicy(): Any? = unwrap(this).getInstanceMaintenancePolicy()
/**
* The name of the launch configuration to use to launch instances.
*
* Required only if you don't specify `LaunchTemplate` , `MixedInstancesPolicy` , or `InstanceId`
* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchconfigurationname)
*/
public fun launchConfigurationName(): String? = unwrap(this).getLaunchConfigurationName()
/**
* Information used to specify the launch template and version to use to launch instances.
*
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` , `LaunchConfigurationName`
* , or `InstanceId` .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchtemplate)
*/
public fun launchTemplate(): Any? = unwrap(this).getLaunchTemplate()
/**
* One or more lifecycle hooks to add to the Auto Scaling group before instances are launched.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecificationlist)
*/
public fun lifecycleHookSpecificationList(): Any? =
unwrap(this).getLifecycleHookSpecificationList()
/**
* A list of Classic Load Balancers associated with this Auto Scaling group.
*
* For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify the
* `TargetGroupARNs` property instead.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-loadbalancernames)
*/
public fun loadBalancerNames(): List = unwrap(this).getLoadBalancerNames() ?: emptyList()
/**
* The maximum amount of time, in seconds, that an instance can be in service.
*
* The default is null. If specified, the value must be either 0 or a number equal to or greater
* than 86,400 seconds (1 day). For more information, see [Replace Auto Scaling instances based on
* maximum instance
* lifetime](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxinstancelifetime)
*/
public fun maxInstanceLifetime(): Number? = unwrap(this).getMaxInstanceLifetime()
/**
* The maximum size of the group.
*
*
* With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need to
* go above `MaxSize` to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling will
* never go above `MaxSize` by more than your largest instance weight (weights that define how many
* units each instance contributes to the desired capacity of the group).
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxsize)
*/
public fun maxSize(): String
/**
* Enables the monitoring of group metrics of an Auto Scaling group.
*
* By default, these metrics are disabled.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-metricscollection)
*/
public fun metricsCollection(): Any? = unwrap(this).getMetricsCollection()
/**
* The minimum size of the group.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-minsize)
*/
public fun minSize(): String
/**
* An embedded object that specifies a mixed instances policy.
*
* The policy includes properties that not only define the distribution of On-Demand Instances and
* Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto Scaling
* group allocates instance types to fulfill On-Demand and Spot capacities, but also the properties
* that specify the instance configuration information—the launch template and instance types. The
* policy can also include a weight for each instance type and different launch templates for
* individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-mixedinstancespolicy)
*/
public fun mixedInstancesPolicy(): Any? = unwrap(this).getMixedInstancesPolicy()
/**
* Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto
* Scaling when scaling in.
*
* For more information about preventing instances from terminating on scale in, see [Use instance
* scale-in
* protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-newinstancesprotectedfromscalein)
*/
public fun newInstancesProtectedFromScaleIn(): Any? =
unwrap(this).getNewInstancesProtectedFromScaleIn()
/**
* (deprecated) A structure that specifies an Amazon SNS notification configuration for the
* `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in the
* *Amazon EC2 Auto Scaling User Guide*.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-notificationconfiguration)
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
public fun notificationConfiguration(): Any? = unwrap(this).getNotificationConfiguration()
/**
* Configures an Auto Scaling group to send notifications when specified events take place.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-notificationconfigurations)
*/
public fun notificationConfigurations(): Any? = unwrap(this).getNotificationConfigurations()
/**
* The name of the placement group into which to launch your instances.
*
* For more information, see [Placement
* groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the *Amazon
* EC2 User Guide for Linux Instances* .
*
*
* A *cluster* placement group is a logical grouping of instances within a single Availability
* Zone. You cannot specify multiple Availability Zones and a cluster placement group.
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-placementgroup)
*/
public fun placementGroup(): String? = unwrap(this).getPlacementGroup()
/**
* The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to
* call other AWS service on your behalf.
*
* By default, Amazon EC2 Auto Scaling uses a service-linked role named
* `AWSServiceRoleForAutoScaling` , which it creates if it does not exist. For more information, see
* [Service-linked
* roles](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-servicelinkedrolearn)
*/
public fun serviceLinkedRoleArn(): String? = unwrap(this).getServiceLinkedRoleArn()
/**
* One or more tags.
*
* You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it
* launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes,
* specify the tags in a launch template but use caution. If the launch template specifies an
* instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto Scaling
* overrides the value of that instance tag with the value specified by the Auto Scaling group. For
* more information, see [Tag Auto Scaling groups and
* instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-tags)
*/
public fun tags(): List =
unwrap(this).getTags()?.map(CfnAutoScalingGroup.TagPropertyProperty::wrap) ?: emptyList()
/**
* The Amazon Resource Names (ARN) of the Elastic Load Balancing target groups to associate with
* the Auto Scaling group.
*
* Instances are registered as targets with the target groups. The target groups receive incoming
* traffic and route requests to one or more registered targets. For more information, see [Use
* Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-targetgrouparns)
*/
public fun targetGroupArns(): List = unwrap(this).getTargetGroupArns() ?: emptyList()
/**
* A policy or a list of policies that are used to select the instance to terminate.
*
* These policies are executed in the order that you list them. For more information, see
* [Configure termination policies for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Valid values: `Default` | `AllocationStrategy` | `ClosestToNextInstanceHour` | `NewestInstance`
* | `OldestInstance` | `OldestLaunchConfiguration` | `OldestLaunchTemplate` |
* `arn:aws:lambda:region:account-id:function:my-function:my-alias`
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-terminationpolicies)
*/
public fun terminationPolicies(): List = unwrap(this).getTerminationPolicies() ?:
emptyList()
/**
* A list of subnet IDs for a virtual private cloud (VPC) where instances in the Auto Scaling
* group can be created.
*
* If this resource specifies public subnets and is also in a VPC that is defined in the same
* stack template, you must use the [DependsOn
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
* to declare a dependency on the [VPC-gateway
* attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html)
* .
*
*
* When you update `VPCZoneIdentifier` , this retains the same Auto Scaling group and replaces old
* instances with new ones, according to the specified subnets. You can optionally specify how
* CloudFormation handles these updates by using an [UpdatePolicy
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)
* .
*
*
* Required to launch instances into a nondefault VPC. If you specify `VPCZoneIdentifier` with
* `AvailabilityZones` , the subnets that you specify for this property must reside in those
* Availability Zones.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-vpczoneidentifier)
*/
public fun vpcZoneIdentifier(): List = unwrap(this).getVpcZoneIdentifier() ?: emptyList()
/**
* A builder for [CfnAutoScalingGroupProps]
*/
@CdkDslMarker
public interface Builder {
/**
* @param autoScalingGroupName The name of the Auto Scaling group. This name must be unique per
* Region per account.
* The name can contain any ASCII character 33 to 126 including most punctuation characters,
* digits, and upper and lowercased letters.
*
*
* You cannot use a colon (:) in the name.
*/
public fun autoScalingGroupName(autoScalingGroupName: String)
/**
* @param availabilityZones A list of Availability Zones where instances in the Auto Scaling
* group can be created.
* Used for launching into the default VPC subnet in each Availability Zone when not using the
* `VPCZoneIdentifier` property, or for attaching a network interface when an existing network
* interface ID is specified in a launch template.
*/
public fun availabilityZones(availabilityZones: List)
/**
* @param availabilityZones A list of Availability Zones where instances in the Auto Scaling
* group can be created.
* Used for launching into the default VPC subnet in each Availability Zone when not using the
* `VPCZoneIdentifier` property, or for attaching a network interface when an existing network
* interface ID is specified in a launch template.
*/
public fun availabilityZones(vararg availabilityZones: String)
/**
* @param capacityRebalance Indicates whether Capacity Rebalancing is enabled.
* Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon
* EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot
* Instance is at an elevated risk of interruption. After launching a new instance, it then
* terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon
* EC2 Spot
* Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)
* in the in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun capacityRebalance(capacityRebalance: Boolean)
/**
* @param capacityRebalance Indicates whether Capacity Rebalancing is enabled.
* Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon
* EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot
* Instance is at an elevated risk of interruption. After launching a new instance, it then
* terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon
* EC2 Spot
* Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)
* in the in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun capacityRebalance(capacityRebalance: IResolvable)
/**
* @param context Reserved.
*/
public fun context(context: String)
/**
* @param cooldown *Only needed if you use simple scaling policies.*.
* The amount of time, in seconds, between one scaling activity ending and another one starting
* due to simple scaling policies. For more information, see [Scaling cooldowns for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `300` seconds
*/
public fun cooldown(cooldown: String)
/**
* @param defaultInstanceWarmup The amount of time, in seconds, until a new instance is
* considered to have finished initializing and resource consumption to become stable after it
* enters the `InService` state.
* During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after it
* replaces an instance before it moves on to replacing the next instance. Amazon EC2 Auto Scaling
* also waits for the warm-up period before aggregating the metrics for new instances with existing
* instances in the Amazon CloudWatch metrics that are used for scaling, resulting in more reliable
* usage data. For more information, see [Set the default instance warmup for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
*
* To manage various warm-up settings at the group level, we recommend that you set the default
* instance warmup, *even if it is set to 0 seconds* . To remove a value that you previously set,
* include the property but specify `-1` for the value. However, we strongly recommend keeping the
* default instance warmup enabled by specifying a value of `0` or other nominal value.
*
*
* Default: None
*/
public fun defaultInstanceWarmup(defaultInstanceWarmup: Number)
/**
* @param desiredCapacity The desired capacity is the initial capacity of the Auto Scaling group
* at the time of its creation and the capacity it attempts to maintain.
* It can scale beyond this capacity if you configure automatic scaling.
*
* The number must be greater than or equal to the minimum size of the group and less than or
* equal to the maximum size of the group. If you do not specify a desired capacity when creating
* the stack, the default is the minimum size of the group.
*
* CloudFormation marks the Auto Scaling group as successful (by setting its status to
* CREATE_COMPLETE) when the desired capacity is reached. However, if a maximum Spot price is set
* in the launch template or launch configuration that you specified, then desired capacity is not
* used as a criteria for success. Whether your request is fulfilled depends on Spot Instance
* capacity and your maximum price.
*/
public fun desiredCapacity(desiredCapacity: String)
/**
* @param desiredCapacityType The unit of measurement for the value specified for desired
* capacity.
* Amazon EC2 Auto Scaling supports `DesiredCapacityType` for attribute-based instance type
* selection only. For more information, see [Create a mixed instances group using attribute-based
* instance type
* selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* By default, Amazon EC2 Auto Scaling specifies `units` , which translates into number of
* instances.
*
* Valid values: `units` | `vcpu` | `memory-mib`
*/
public fun desiredCapacityType(desiredCapacityType: String)
/**
* @param healthCheckGracePeriod The amount of time, in seconds, that Amazon EC2 Auto Scaling
* waits before checking the health status of an EC2 instance that has come into service and
* marking it unhealthy due to a failed health check.
* This is useful if your instances do not immediately pass their health checks after they enter
* the `InService` state. For more information, see [Set the health check grace period for an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `0` seconds
*/
public fun healthCheckGracePeriod(healthCheckGracePeriod: Number)
/**
* @param healthCheckType A comma-separated value string of one or more health check types.
* The valid values are `EC2` , `EBS` , `ELB` , and `VPC_LATTICE` . `EC2` is the default health
* check and cannot be disabled. For more information, see [Health checks for instances in an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Only specify `EC2` if you must clear a value that was previously set.
*/
public fun healthCheckType(healthCheckType: String)
/**
* @param instanceId The ID of the instance used to base the launch configuration on.
* For more information, see [Create an Auto Scaling group using an EC2
* instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* If you specify `LaunchTemplate` , `MixedInstancesPolicy` , or `LaunchConfigurationName` ,
* don't specify `InstanceId` .
*/
public fun instanceId(instanceId: String)
/**
* @param instanceMaintenancePolicy An instance maintenance policy.
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun instanceMaintenancePolicy(instanceMaintenancePolicy: IResolvable)
/**
* @param instanceMaintenancePolicy An instance maintenance policy.
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public
fun instanceMaintenancePolicy(instanceMaintenancePolicy: CfnAutoScalingGroup.InstanceMaintenancePolicyProperty)
/**
* @param instanceMaintenancePolicy An instance maintenance policy.
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("6b0d48265785b3f0727705d28f832f9e192859ebc61568a5d298ddad632a70d8")
public
fun instanceMaintenancePolicy(instanceMaintenancePolicy: CfnAutoScalingGroup.InstanceMaintenancePolicyProperty.Builder.() -> Unit)
/**
* @param launchConfigurationName The name of the launch configuration to use to launch
* instances.
* Required only if you don't specify `LaunchTemplate` , `MixedInstancesPolicy` , or
* `InstanceId` .
*/
public fun launchConfigurationName(launchConfigurationName: String)
/**
* @param launchTemplate Information used to specify the launch template and version to use to
* launch instances.
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` ,
* `LaunchConfigurationName` , or `InstanceId` .
*/
public fun launchTemplate(launchTemplate: IResolvable)
/**
* @param launchTemplate Information used to specify the launch template and version to use to
* launch instances.
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` ,
* `LaunchConfigurationName` , or `InstanceId` .
*/
public
fun launchTemplate(launchTemplate: CfnAutoScalingGroup.LaunchTemplateSpecificationProperty)
/**
* @param launchTemplate Information used to specify the launch template and version to use to
* launch instances.
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` ,
* `LaunchConfigurationName` , or `InstanceId` .
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("5c0fe05a7920ecb5df98e791fda2b030651c2afa15bb42abd61e27dcefc4df1e")
public
fun launchTemplate(launchTemplate: CfnAutoScalingGroup.LaunchTemplateSpecificationProperty.Builder.() -> Unit)
/**
* @param lifecycleHookSpecificationList One or more lifecycle hooks to add to the Auto Scaling
* group before instances are launched.
*/
public fun lifecycleHookSpecificationList(lifecycleHookSpecificationList: IResolvable)
/**
* @param lifecycleHookSpecificationList One or more lifecycle hooks to add to the Auto Scaling
* group before instances are launched.
*/
public fun lifecycleHookSpecificationList(lifecycleHookSpecificationList: List)
/**
* @param lifecycleHookSpecificationList One or more lifecycle hooks to add to the Auto Scaling
* group before instances are launched.
*/
public fun lifecycleHookSpecificationList(vararg lifecycleHookSpecificationList: Any)
/**
* @param loadBalancerNames A list of Classic Load Balancers associated with this Auto Scaling
* group.
* For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify
* the `TargetGroupARNs` property instead.
*/
public fun loadBalancerNames(loadBalancerNames: List)
/**
* @param loadBalancerNames A list of Classic Load Balancers associated with this Auto Scaling
* group.
* For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify
* the `TargetGroupARNs` property instead.
*/
public fun loadBalancerNames(vararg loadBalancerNames: String)
/**
* @param maxInstanceLifetime The maximum amount of time, in seconds, that an instance can be in
* service.
* The default is null. If specified, the value must be either 0 or a number equal to or greater
* than 86,400 seconds (1 day). For more information, see [Replace Auto Scaling instances based on
* maximum instance
* lifetime](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun maxInstanceLifetime(maxInstanceLifetime: Number)
/**
* @param maxSize The maximum size of the group.
*
* With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need
* to go above `MaxSize` to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling
* will never go above `MaxSize` by more than your largest instance weight (weights that define how
* many units each instance contributes to the desired capacity of the group).
*/
public fun maxSize(maxSize: String)
/**
* @param metricsCollection Enables the monitoring of group metrics of an Auto Scaling group.
* By default, these metrics are disabled.
*/
public fun metricsCollection(metricsCollection: IResolvable)
/**
* @param metricsCollection Enables the monitoring of group metrics of an Auto Scaling group.
* By default, these metrics are disabled.
*/
public fun metricsCollection(metricsCollection: List)
/**
* @param metricsCollection Enables the monitoring of group metrics of an Auto Scaling group.
* By default, these metrics are disabled.
*/
public fun metricsCollection(vararg metricsCollection: Any)
/**
* @param minSize The minimum size of the group.
*/
public fun minSize(minSize: String)
/**
* @param mixedInstancesPolicy An embedded object that specifies a mixed instances policy.
* The policy includes properties that not only define the distribution of On-Demand Instances
* and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto
* Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the
* properties that specify the instance configuration information—the launch template and instance
* types. The policy can also include a weight for each instance type and different launch
* templates for individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun mixedInstancesPolicy(mixedInstancesPolicy: IResolvable)
/**
* @param mixedInstancesPolicy An embedded object that specifies a mixed instances policy.
* The policy includes properties that not only define the distribution of On-Demand Instances
* and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto
* Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the
* properties that specify the instance configuration information—the launch template and instance
* types. The policy can also include a weight for each instance type and different launch
* templates for individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public
fun mixedInstancesPolicy(mixedInstancesPolicy: CfnAutoScalingGroup.MixedInstancesPolicyProperty)
/**
* @param mixedInstancesPolicy An embedded object that specifies a mixed instances policy.
* The policy includes properties that not only define the distribution of On-Demand Instances
* and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto
* Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the
* properties that specify the instance configuration information—the launch template and instance
* types. The policy can also include a weight for each instance type and different launch
* templates for individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("76dc5d4b65ef220ec9f2a3ee86f5befdae51fcc8337b79c0cb07eb2c3d831498")
public
fun mixedInstancesPolicy(mixedInstancesPolicy: CfnAutoScalingGroup.MixedInstancesPolicyProperty.Builder.() -> Unit)
/**
* @param newInstancesProtectedFromScaleIn Indicates whether newly launched instances are
* protected from termination by Amazon EC2 Auto Scaling when scaling in.
* For more information about preventing instances from terminating on scale in, see [Use
* instance scale-in
* protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun newInstancesProtectedFromScaleIn(newInstancesProtectedFromScaleIn: Boolean)
/**
* @param newInstancesProtectedFromScaleIn Indicates whether newly launched instances are
* protected from termination by Amazon EC2 Auto Scaling when scaling in.
* For more information about preventing instances from terminating on scale in, see [Use
* instance scale-in
* protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun newInstancesProtectedFromScaleIn(newInstancesProtectedFromScaleIn: IResolvable)
/**
* @param notificationConfiguration A structure that specifies an Amazon SNS notification
* configuration for the `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in
* the *Amazon EC2 Auto Scaling User Guide*.
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
public fun notificationConfiguration(notificationConfiguration: IResolvable)
/**
* @param notificationConfiguration A structure that specifies an Amazon SNS notification
* configuration for the `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in
* the *Amazon EC2 Auto Scaling User Guide*.
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
public
fun notificationConfiguration(notificationConfiguration: CfnAutoScalingGroup.NotificationConfigurationProperty)
/**
* @param notificationConfiguration A structure that specifies an Amazon SNS notification
* configuration for the `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in
* the *Amazon EC2 Auto Scaling User Guide*.
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("3305a7c43182d0bd5a6ae4ae705e674d302f9313c1c27a174ac6a1c974061ea0")
public
fun notificationConfiguration(notificationConfiguration: CfnAutoScalingGroup.NotificationConfigurationProperty.Builder.() -> Unit)
/**
* @param notificationConfigurations Configures an Auto Scaling group to send notifications when
* specified events take place.
*/
public fun notificationConfigurations(notificationConfigurations: IResolvable)
/**
* @param notificationConfigurations Configures an Auto Scaling group to send notifications when
* specified events take place.
*/
public fun notificationConfigurations(notificationConfigurations: List)
/**
* @param notificationConfigurations Configures an Auto Scaling group to send notifications when
* specified events take place.
*/
public fun notificationConfigurations(vararg notificationConfigurations: Any)
/**
* @param placementGroup The name of the placement group into which to launch your instances.
* For more information, see [Placement
* groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the
* *Amazon EC2 User Guide for Linux Instances* .
*
*
* A *cluster* placement group is a logical grouping of instances within a single Availability
* Zone. You cannot specify multiple Availability Zones and a cluster placement group.
*/
public fun placementGroup(placementGroup: String)
/**
* @param serviceLinkedRoleArn The Amazon Resource Name (ARN) of the service-linked role that
* the Auto Scaling group uses to call other AWS service on your behalf.
* By default, Amazon EC2 Auto Scaling uses a service-linked role named
* `AWSServiceRoleForAutoScaling` , which it creates if it does not exist. For more information,
* see [Service-linked
* roles](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun serviceLinkedRoleArn(serviceLinkedRoleArn: String)
/**
* @param tags One or more tags.
* You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it
* launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes,
* specify the tags in a launch template but use caution. If the launch template specifies an
* instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto
* Scaling overrides the value of that instance tag with the value specified by the Auto Scaling
* group. For more information, see [Tag Auto Scaling groups and
* instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun tags(tags: List)
/**
* @param tags One or more tags.
* You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it
* launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes,
* specify the tags in a launch template but use caution. If the launch template specifies an
* instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto
* Scaling overrides the value of that instance tag with the value specified by the Auto Scaling
* group. For more information, see [Tag Auto Scaling groups and
* instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun tags(vararg tags: CfnAutoScalingGroup.TagPropertyProperty)
/**
* @param targetGroupArns The Amazon Resource Names (ARN) of the Elastic Load Balancing target
* groups to associate with the Auto Scaling group.
* Instances are registered as targets with the target groups. The target groups receive
* incoming traffic and route requests to one or more registered targets. For more information, see
* [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun targetGroupArns(targetGroupArns: List)
/**
* @param targetGroupArns The Amazon Resource Names (ARN) of the Elastic Load Balancing target
* groups to associate with the Auto Scaling group.
* Instances are registered as targets with the target groups. The target groups receive
* incoming traffic and route requests to one or more registered targets. For more information, see
* [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*/
public fun targetGroupArns(vararg targetGroupArns: String)
/**
* @param terminationPolicies A policy or a list of policies that are used to select the
* instance to terminate.
* These policies are executed in the order that you list them. For more information, see
* [Configure termination policies for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Valid values: `Default` | `AllocationStrategy` | `ClosestToNextInstanceHour` |
* `NewestInstance` | `OldestInstance` | `OldestLaunchConfiguration` | `OldestLaunchTemplate` |
* `arn:aws:lambda:region:account-id:function:my-function:my-alias`
*/
public fun terminationPolicies(terminationPolicies: List)
/**
* @param terminationPolicies A policy or a list of policies that are used to select the
* instance to terminate.
* These policies are executed in the order that you list them. For more information, see
* [Configure termination policies for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Valid values: `Default` | `AllocationStrategy` | `ClosestToNextInstanceHour` |
* `NewestInstance` | `OldestInstance` | `OldestLaunchConfiguration` | `OldestLaunchTemplate` |
* `arn:aws:lambda:region:account-id:function:my-function:my-alias`
*/
public fun terminationPolicies(vararg terminationPolicies: String)
/**
* @param vpcZoneIdentifier A list of subnet IDs for a virtual private cloud (VPC) where
* instances in the Auto Scaling group can be created.
* If this resource specifies public subnets and is also in a VPC that is defined in the same
* stack template, you must use the [DependsOn
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
* to declare a dependency on the [VPC-gateway
* attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html)
* .
*
*
* When you update `VPCZoneIdentifier` , this retains the same Auto Scaling group and replaces
* old instances with new ones, according to the specified subnets. You can optionally specify how
* CloudFormation handles these updates by using an [UpdatePolicy
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)
* .
*
*
* Required to launch instances into a nondefault VPC. If you specify `VPCZoneIdentifier` with
* `AvailabilityZones` , the subnets that you specify for this property must reside in those
* Availability Zones.
*/
public fun vpcZoneIdentifier(vpcZoneIdentifier: List)
/**
* @param vpcZoneIdentifier A list of subnet IDs for a virtual private cloud (VPC) where
* instances in the Auto Scaling group can be created.
* If this resource specifies public subnets and is also in a VPC that is defined in the same
* stack template, you must use the [DependsOn
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
* to declare a dependency on the [VPC-gateway
* attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html)
* .
*
*
* When you update `VPCZoneIdentifier` , this retains the same Auto Scaling group and replaces
* old instances with new ones, according to the specified subnets. You can optionally specify how
* CloudFormation handles these updates by using an [UpdatePolicy
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)
* .
*
*
* Required to launch instances into a nondefault VPC. If you specify `VPCZoneIdentifier` with
* `AvailabilityZones` , the subnets that you specify for this property must reside in those
* Availability Zones.
*/
public fun vpcZoneIdentifier(vararg vpcZoneIdentifier: String)
}
private class BuilderImpl : Builder {
private val cdkBuilder:
software.amazon.awscdk.services.autoscaling.CfnAutoScalingGroupProps.Builder =
software.amazon.awscdk.services.autoscaling.CfnAutoScalingGroupProps.builder()
/**
* @param autoScalingGroupName The name of the Auto Scaling group. This name must be unique per
* Region per account.
* The name can contain any ASCII character 33 to 126 including most punctuation characters,
* digits, and upper and lowercased letters.
*
*
* You cannot use a colon (:) in the name.
*/
override fun autoScalingGroupName(autoScalingGroupName: String) {
cdkBuilder.autoScalingGroupName(autoScalingGroupName)
}
/**
* @param availabilityZones A list of Availability Zones where instances in the Auto Scaling
* group can be created.
* Used for launching into the default VPC subnet in each Availability Zone when not using the
* `VPCZoneIdentifier` property, or for attaching a network interface when an existing network
* interface ID is specified in a launch template.
*/
override fun availabilityZones(availabilityZones: List) {
cdkBuilder.availabilityZones(availabilityZones)
}
/**
* @param availabilityZones A list of Availability Zones where instances in the Auto Scaling
* group can be created.
* Used for launching into the default VPC subnet in each Availability Zone when not using the
* `VPCZoneIdentifier` property, or for attaching a network interface when an existing network
* interface ID is specified in a launch template.
*/
override fun availabilityZones(vararg availabilityZones: String): Unit =
availabilityZones(availabilityZones.toList())
/**
* @param capacityRebalance Indicates whether Capacity Rebalancing is enabled.
* Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon
* EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot
* Instance is at an elevated risk of interruption. After launching a new instance, it then
* terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon
* EC2 Spot
* Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)
* in the in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun capacityRebalance(capacityRebalance: Boolean) {
cdkBuilder.capacityRebalance(capacityRebalance)
}
/**
* @param capacityRebalance Indicates whether Capacity Rebalancing is enabled.
* Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon
* EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot
* Instance is at an elevated risk of interruption. After launching a new instance, it then
* terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon
* EC2 Spot
* Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)
* in the in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun capacityRebalance(capacityRebalance: IResolvable) {
cdkBuilder.capacityRebalance(capacityRebalance.let(IResolvable.Companion::unwrap))
}
/**
* @param context Reserved.
*/
override fun context(context: String) {
cdkBuilder.context(context)
}
/**
* @param cooldown *Only needed if you use simple scaling policies.*.
* The amount of time, in seconds, between one scaling activity ending and another one starting
* due to simple scaling policies. For more information, see [Scaling cooldowns for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `300` seconds
*/
override fun cooldown(cooldown: String) {
cdkBuilder.cooldown(cooldown)
}
/**
* @param defaultInstanceWarmup The amount of time, in seconds, until a new instance is
* considered to have finished initializing and resource consumption to become stable after it
* enters the `InService` state.
* During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after it
* replaces an instance before it moves on to replacing the next instance. Amazon EC2 Auto Scaling
* also waits for the warm-up period before aggregating the metrics for new instances with existing
* instances in the Amazon CloudWatch metrics that are used for scaling, resulting in more reliable
* usage data. For more information, see [Set the default instance warmup for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
*
* To manage various warm-up settings at the group level, we recommend that you set the default
* instance warmup, *even if it is set to 0 seconds* . To remove a value that you previously set,
* include the property but specify `-1` for the value. However, we strongly recommend keeping the
* default instance warmup enabled by specifying a value of `0` or other nominal value.
*
*
* Default: None
*/
override fun defaultInstanceWarmup(defaultInstanceWarmup: Number) {
cdkBuilder.defaultInstanceWarmup(defaultInstanceWarmup)
}
/**
* @param desiredCapacity The desired capacity is the initial capacity of the Auto Scaling group
* at the time of its creation and the capacity it attempts to maintain.
* It can scale beyond this capacity if you configure automatic scaling.
*
* The number must be greater than or equal to the minimum size of the group and less than or
* equal to the maximum size of the group. If you do not specify a desired capacity when creating
* the stack, the default is the minimum size of the group.
*
* CloudFormation marks the Auto Scaling group as successful (by setting its status to
* CREATE_COMPLETE) when the desired capacity is reached. However, if a maximum Spot price is set
* in the launch template or launch configuration that you specified, then desired capacity is not
* used as a criteria for success. Whether your request is fulfilled depends on Spot Instance
* capacity and your maximum price.
*/
override fun desiredCapacity(desiredCapacity: String) {
cdkBuilder.desiredCapacity(desiredCapacity)
}
/**
* @param desiredCapacityType The unit of measurement for the value specified for desired
* capacity.
* Amazon EC2 Auto Scaling supports `DesiredCapacityType` for attribute-based instance type
* selection only. For more information, see [Create a mixed instances group using attribute-based
* instance type
* selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* By default, Amazon EC2 Auto Scaling specifies `units` , which translates into number of
* instances.
*
* Valid values: `units` | `vcpu` | `memory-mib`
*/
override fun desiredCapacityType(desiredCapacityType: String) {
cdkBuilder.desiredCapacityType(desiredCapacityType)
}
/**
* @param healthCheckGracePeriod The amount of time, in seconds, that Amazon EC2 Auto Scaling
* waits before checking the health status of an EC2 instance that has come into service and
* marking it unhealthy due to a failed health check.
* This is useful if your instances do not immediately pass their health checks after they enter
* the `InService` state. For more information, see [Set the health check grace period for an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `0` seconds
*/
override fun healthCheckGracePeriod(healthCheckGracePeriod: Number) {
cdkBuilder.healthCheckGracePeriod(healthCheckGracePeriod)
}
/**
* @param healthCheckType A comma-separated value string of one or more health check types.
* The valid values are `EC2` , `EBS` , `ELB` , and `VPC_LATTICE` . `EC2` is the default health
* check and cannot be disabled. For more information, see [Health checks for instances in an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Only specify `EC2` if you must clear a value that was previously set.
*/
override fun healthCheckType(healthCheckType: String) {
cdkBuilder.healthCheckType(healthCheckType)
}
/**
* @param instanceId The ID of the instance used to base the launch configuration on.
* For more information, see [Create an Auto Scaling group using an EC2
* instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* If you specify `LaunchTemplate` , `MixedInstancesPolicy` , or `LaunchConfigurationName` ,
* don't specify `InstanceId` .
*/
override fun instanceId(instanceId: String) {
cdkBuilder.instanceId(instanceId)
}
/**
* @param instanceMaintenancePolicy An instance maintenance policy.
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun instanceMaintenancePolicy(instanceMaintenancePolicy: IResolvable) {
cdkBuilder.instanceMaintenancePolicy(instanceMaintenancePolicy.let(IResolvable.Companion::unwrap))
}
/**
* @param instanceMaintenancePolicy An instance maintenance policy.
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override
fun instanceMaintenancePolicy(instanceMaintenancePolicy: CfnAutoScalingGroup.InstanceMaintenancePolicyProperty) {
cdkBuilder.instanceMaintenancePolicy(instanceMaintenancePolicy.let(CfnAutoScalingGroup.InstanceMaintenancePolicyProperty.Companion::unwrap))
}
/**
* @param instanceMaintenancePolicy An instance maintenance policy.
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("6b0d48265785b3f0727705d28f832f9e192859ebc61568a5d298ddad632a70d8")
override
fun instanceMaintenancePolicy(instanceMaintenancePolicy: CfnAutoScalingGroup.InstanceMaintenancePolicyProperty.Builder.() -> Unit):
Unit =
instanceMaintenancePolicy(CfnAutoScalingGroup.InstanceMaintenancePolicyProperty(instanceMaintenancePolicy))
/**
* @param launchConfigurationName The name of the launch configuration to use to launch
* instances.
* Required only if you don't specify `LaunchTemplate` , `MixedInstancesPolicy` , or
* `InstanceId` .
*/
override fun launchConfigurationName(launchConfigurationName: String) {
cdkBuilder.launchConfigurationName(launchConfigurationName)
}
/**
* @param launchTemplate Information used to specify the launch template and version to use to
* launch instances.
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` ,
* `LaunchConfigurationName` , or `InstanceId` .
*/
override fun launchTemplate(launchTemplate: IResolvable) {
cdkBuilder.launchTemplate(launchTemplate.let(IResolvable.Companion::unwrap))
}
/**
* @param launchTemplate Information used to specify the launch template and version to use to
* launch instances.
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` ,
* `LaunchConfigurationName` , or `InstanceId` .
*/
override
fun launchTemplate(launchTemplate: CfnAutoScalingGroup.LaunchTemplateSpecificationProperty) {
cdkBuilder.launchTemplate(launchTemplate.let(CfnAutoScalingGroup.LaunchTemplateSpecificationProperty.Companion::unwrap))
}
/**
* @param launchTemplate Information used to specify the launch template and version to use to
* launch instances.
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` ,
* `LaunchConfigurationName` , or `InstanceId` .
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("5c0fe05a7920ecb5df98e791fda2b030651c2afa15bb42abd61e27dcefc4df1e")
override
fun launchTemplate(launchTemplate: CfnAutoScalingGroup.LaunchTemplateSpecificationProperty.Builder.() -> Unit):
Unit =
launchTemplate(CfnAutoScalingGroup.LaunchTemplateSpecificationProperty(launchTemplate))
/**
* @param lifecycleHookSpecificationList One or more lifecycle hooks to add to the Auto Scaling
* group before instances are launched.
*/
override fun lifecycleHookSpecificationList(lifecycleHookSpecificationList: IResolvable) {
cdkBuilder.lifecycleHookSpecificationList(lifecycleHookSpecificationList.let(IResolvable.Companion::unwrap))
}
/**
* @param lifecycleHookSpecificationList One or more lifecycle hooks to add to the Auto Scaling
* group before instances are launched.
*/
override fun lifecycleHookSpecificationList(lifecycleHookSpecificationList: List) {
cdkBuilder.lifecycleHookSpecificationList(lifecycleHookSpecificationList.map{CdkObjectWrappers.unwrap(it)})
}
/**
* @param lifecycleHookSpecificationList One or more lifecycle hooks to add to the Auto Scaling
* group before instances are launched.
*/
override fun lifecycleHookSpecificationList(vararg lifecycleHookSpecificationList: Any): Unit =
lifecycleHookSpecificationList(lifecycleHookSpecificationList.toList())
/**
* @param loadBalancerNames A list of Classic Load Balancers associated with this Auto Scaling
* group.
* For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify
* the `TargetGroupARNs` property instead.
*/
override fun loadBalancerNames(loadBalancerNames: List) {
cdkBuilder.loadBalancerNames(loadBalancerNames)
}
/**
* @param loadBalancerNames A list of Classic Load Balancers associated with this Auto Scaling
* group.
* For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify
* the `TargetGroupARNs` property instead.
*/
override fun loadBalancerNames(vararg loadBalancerNames: String): Unit =
loadBalancerNames(loadBalancerNames.toList())
/**
* @param maxInstanceLifetime The maximum amount of time, in seconds, that an instance can be in
* service.
* The default is null. If specified, the value must be either 0 or a number equal to or greater
* than 86,400 seconds (1 day). For more information, see [Replace Auto Scaling instances based on
* maximum instance
* lifetime](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun maxInstanceLifetime(maxInstanceLifetime: Number) {
cdkBuilder.maxInstanceLifetime(maxInstanceLifetime)
}
/**
* @param maxSize The maximum size of the group.
*
* With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need
* to go above `MaxSize` to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling
* will never go above `MaxSize` by more than your largest instance weight (weights that define how
* many units each instance contributes to the desired capacity of the group).
*/
override fun maxSize(maxSize: String) {
cdkBuilder.maxSize(maxSize)
}
/**
* @param metricsCollection Enables the monitoring of group metrics of an Auto Scaling group.
* By default, these metrics are disabled.
*/
override fun metricsCollection(metricsCollection: IResolvable) {
cdkBuilder.metricsCollection(metricsCollection.let(IResolvable.Companion::unwrap))
}
/**
* @param metricsCollection Enables the monitoring of group metrics of an Auto Scaling group.
* By default, these metrics are disabled.
*/
override fun metricsCollection(metricsCollection: List) {
cdkBuilder.metricsCollection(metricsCollection.map{CdkObjectWrappers.unwrap(it)})
}
/**
* @param metricsCollection Enables the monitoring of group metrics of an Auto Scaling group.
* By default, these metrics are disabled.
*/
override fun metricsCollection(vararg metricsCollection: Any): Unit =
metricsCollection(metricsCollection.toList())
/**
* @param minSize The minimum size of the group.
*/
override fun minSize(minSize: String) {
cdkBuilder.minSize(minSize)
}
/**
* @param mixedInstancesPolicy An embedded object that specifies a mixed instances policy.
* The policy includes properties that not only define the distribution of On-Demand Instances
* and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto
* Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the
* properties that specify the instance configuration information—the launch template and instance
* types. The policy can also include a weight for each instance type and different launch
* templates for individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun mixedInstancesPolicy(mixedInstancesPolicy: IResolvable) {
cdkBuilder.mixedInstancesPolicy(mixedInstancesPolicy.let(IResolvable.Companion::unwrap))
}
/**
* @param mixedInstancesPolicy An embedded object that specifies a mixed instances policy.
* The policy includes properties that not only define the distribution of On-Demand Instances
* and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto
* Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the
* properties that specify the instance configuration information—the launch template and instance
* types. The policy can also include a weight for each instance type and different launch
* templates for individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override
fun mixedInstancesPolicy(mixedInstancesPolicy: CfnAutoScalingGroup.MixedInstancesPolicyProperty) {
cdkBuilder.mixedInstancesPolicy(mixedInstancesPolicy.let(CfnAutoScalingGroup.MixedInstancesPolicyProperty.Companion::unwrap))
}
/**
* @param mixedInstancesPolicy An embedded object that specifies a mixed instances policy.
* The policy includes properties that not only define the distribution of On-Demand Instances
* and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto
* Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the
* properties that specify the instance configuration information—the launch template and instance
* types. The policy can also include a weight for each instance type and different launch
* templates for individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("76dc5d4b65ef220ec9f2a3ee86f5befdae51fcc8337b79c0cb07eb2c3d831498")
override
fun mixedInstancesPolicy(mixedInstancesPolicy: CfnAutoScalingGroup.MixedInstancesPolicyProperty.Builder.() -> Unit):
Unit =
mixedInstancesPolicy(CfnAutoScalingGroup.MixedInstancesPolicyProperty(mixedInstancesPolicy))
/**
* @param newInstancesProtectedFromScaleIn Indicates whether newly launched instances are
* protected from termination by Amazon EC2 Auto Scaling when scaling in.
* For more information about preventing instances from terminating on scale in, see [Use
* instance scale-in
* protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun newInstancesProtectedFromScaleIn(newInstancesProtectedFromScaleIn: Boolean) {
cdkBuilder.newInstancesProtectedFromScaleIn(newInstancesProtectedFromScaleIn)
}
/**
* @param newInstancesProtectedFromScaleIn Indicates whether newly launched instances are
* protected from termination by Amazon EC2 Auto Scaling when scaling in.
* For more information about preventing instances from terminating on scale in, see [Use
* instance scale-in
* protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun newInstancesProtectedFromScaleIn(newInstancesProtectedFromScaleIn: IResolvable) {
cdkBuilder.newInstancesProtectedFromScaleIn(newInstancesProtectedFromScaleIn.let(IResolvable.Companion::unwrap))
}
/**
* @param notificationConfiguration A structure that specifies an Amazon SNS notification
* configuration for the `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in
* the *Amazon EC2 Auto Scaling User Guide*.
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
override fun notificationConfiguration(notificationConfiguration: IResolvable) {
cdkBuilder.notificationConfiguration(notificationConfiguration.let(IResolvable.Companion::unwrap))
}
/**
* @param notificationConfiguration A structure that specifies an Amazon SNS notification
* configuration for the `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in
* the *Amazon EC2 Auto Scaling User Guide*.
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
override
fun notificationConfiguration(notificationConfiguration: CfnAutoScalingGroup.NotificationConfigurationProperty) {
cdkBuilder.notificationConfiguration(notificationConfiguration.let(CfnAutoScalingGroup.NotificationConfigurationProperty.Companion::unwrap))
}
/**
* @param notificationConfiguration A structure that specifies an Amazon SNS notification
* configuration for the `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in
* the *Amazon EC2 Auto Scaling User Guide*.
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
@kotlin.Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("3305a7c43182d0bd5a6ae4ae705e674d302f9313c1c27a174ac6a1c974061ea0")
override
fun notificationConfiguration(notificationConfiguration: CfnAutoScalingGroup.NotificationConfigurationProperty.Builder.() -> Unit):
Unit =
notificationConfiguration(CfnAutoScalingGroup.NotificationConfigurationProperty(notificationConfiguration))
/**
* @param notificationConfigurations Configures an Auto Scaling group to send notifications when
* specified events take place.
*/
override fun notificationConfigurations(notificationConfigurations: IResolvable) {
cdkBuilder.notificationConfigurations(notificationConfigurations.let(IResolvable.Companion::unwrap))
}
/**
* @param notificationConfigurations Configures an Auto Scaling group to send notifications when
* specified events take place.
*/
override fun notificationConfigurations(notificationConfigurations: List) {
cdkBuilder.notificationConfigurations(notificationConfigurations.map{CdkObjectWrappers.unwrap(it)})
}
/**
* @param notificationConfigurations Configures an Auto Scaling group to send notifications when
* specified events take place.
*/
override fun notificationConfigurations(vararg notificationConfigurations: Any): Unit =
notificationConfigurations(notificationConfigurations.toList())
/**
* @param placementGroup The name of the placement group into which to launch your instances.
* For more information, see [Placement
* groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the
* *Amazon EC2 User Guide for Linux Instances* .
*
*
* A *cluster* placement group is a logical grouping of instances within a single Availability
* Zone. You cannot specify multiple Availability Zones and a cluster placement group.
*/
override fun placementGroup(placementGroup: String) {
cdkBuilder.placementGroup(placementGroup)
}
/**
* @param serviceLinkedRoleArn The Amazon Resource Name (ARN) of the service-linked role that
* the Auto Scaling group uses to call other AWS service on your behalf.
* By default, Amazon EC2 Auto Scaling uses a service-linked role named
* `AWSServiceRoleForAutoScaling` , which it creates if it does not exist. For more information,
* see [Service-linked
* roles](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun serviceLinkedRoleArn(serviceLinkedRoleArn: String) {
cdkBuilder.serviceLinkedRoleArn(serviceLinkedRoleArn)
}
/**
* @param tags One or more tags.
* You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it
* launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes,
* specify the tags in a launch template but use caution. If the launch template specifies an
* instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto
* Scaling overrides the value of that instance tag with the value specified by the Auto Scaling
* group. For more information, see [Tag Auto Scaling groups and
* instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun tags(tags: List) {
cdkBuilder.tags(tags.map(CfnAutoScalingGroup.TagPropertyProperty.Companion::unwrap))
}
/**
* @param tags One or more tags.
* You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it
* launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes,
* specify the tags in a launch template but use caution. If the launch template specifies an
* instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto
* Scaling overrides the value of that instance tag with the value specified by the Auto Scaling
* group. For more information, see [Tag Auto Scaling groups and
* instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun tags(vararg tags: CfnAutoScalingGroup.TagPropertyProperty): Unit =
tags(tags.toList())
/**
* @param targetGroupArns The Amazon Resource Names (ARN) of the Elastic Load Balancing target
* groups to associate with the Auto Scaling group.
* Instances are registered as targets with the target groups. The target groups receive
* incoming traffic and route requests to one or more registered targets. For more information, see
* [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun targetGroupArns(targetGroupArns: List) {
cdkBuilder.targetGroupArns(targetGroupArns)
}
/**
* @param targetGroupArns The Amazon Resource Names (ARN) of the Elastic Load Balancing target
* groups to associate with the Auto Scaling group.
* Instances are registered as targets with the target groups. The target groups receive
* incoming traffic and route requests to one or more registered targets. For more information, see
* [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*/
override fun targetGroupArns(vararg targetGroupArns: String): Unit =
targetGroupArns(targetGroupArns.toList())
/**
* @param terminationPolicies A policy or a list of policies that are used to select the
* instance to terminate.
* These policies are executed in the order that you list them. For more information, see
* [Configure termination policies for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Valid values: `Default` | `AllocationStrategy` | `ClosestToNextInstanceHour` |
* `NewestInstance` | `OldestInstance` | `OldestLaunchConfiguration` | `OldestLaunchTemplate` |
* `arn:aws:lambda:region:account-id:function:my-function:my-alias`
*/
override fun terminationPolicies(terminationPolicies: List) {
cdkBuilder.terminationPolicies(terminationPolicies)
}
/**
* @param terminationPolicies A policy or a list of policies that are used to select the
* instance to terminate.
* These policies are executed in the order that you list them. For more information, see
* [Configure termination policies for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Valid values: `Default` | `AllocationStrategy` | `ClosestToNextInstanceHour` |
* `NewestInstance` | `OldestInstance` | `OldestLaunchConfiguration` | `OldestLaunchTemplate` |
* `arn:aws:lambda:region:account-id:function:my-function:my-alias`
*/
override fun terminationPolicies(vararg terminationPolicies: String): Unit =
terminationPolicies(terminationPolicies.toList())
/**
* @param vpcZoneIdentifier A list of subnet IDs for a virtual private cloud (VPC) where
* instances in the Auto Scaling group can be created.
* If this resource specifies public subnets and is also in a VPC that is defined in the same
* stack template, you must use the [DependsOn
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
* to declare a dependency on the [VPC-gateway
* attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html)
* .
*
*
* When you update `VPCZoneIdentifier` , this retains the same Auto Scaling group and replaces
* old instances with new ones, according to the specified subnets. You can optionally specify how
* CloudFormation handles these updates by using an [UpdatePolicy
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)
* .
*
*
* Required to launch instances into a nondefault VPC. If you specify `VPCZoneIdentifier` with
* `AvailabilityZones` , the subnets that you specify for this property must reside in those
* Availability Zones.
*/
override fun vpcZoneIdentifier(vpcZoneIdentifier: List) {
cdkBuilder.vpcZoneIdentifier(vpcZoneIdentifier)
}
/**
* @param vpcZoneIdentifier A list of subnet IDs for a virtual private cloud (VPC) where
* instances in the Auto Scaling group can be created.
* If this resource specifies public subnets and is also in a VPC that is defined in the same
* stack template, you must use the [DependsOn
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
* to declare a dependency on the [VPC-gateway
* attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html)
* .
*
*
* When you update `VPCZoneIdentifier` , this retains the same Auto Scaling group and replaces
* old instances with new ones, according to the specified subnets. You can optionally specify how
* CloudFormation handles these updates by using an [UpdatePolicy
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)
* .
*
*
* Required to launch instances into a nondefault VPC. If you specify `VPCZoneIdentifier` with
* `AvailabilityZones` , the subnets that you specify for this property must reside in those
* Availability Zones.
*/
override fun vpcZoneIdentifier(vararg vpcZoneIdentifier: String): Unit =
vpcZoneIdentifier(vpcZoneIdentifier.toList())
public fun build(): software.amazon.awscdk.services.autoscaling.CfnAutoScalingGroupProps =
cdkBuilder.build()
}
private class Wrapper(
cdkObject: software.amazon.awscdk.services.autoscaling.CfnAutoScalingGroupProps,
) : CdkObject(cdkObject),
CfnAutoScalingGroupProps {
/**
* The name of the Auto Scaling group. This name must be unique per Region per account.
*
* The name can contain any ASCII character 33 to 126 including most punctuation characters,
* digits, and upper and lowercased letters.
*
*
* You cannot use a colon (:) in the name.
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-autoscalinggroupname)
*/
override fun autoScalingGroupName(): String? = unwrap(this).getAutoScalingGroupName()
/**
* A list of Availability Zones where instances in the Auto Scaling group can be created.
*
* Used for launching into the default VPC subnet in each Availability Zone when not using the
* `VPCZoneIdentifier` property, or for attaching a network interface when an existing network
* interface ID is specified in a launch template.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzones)
*/
override fun availabilityZones(): List = unwrap(this).getAvailabilityZones() ?:
emptyList()
/**
* Indicates whether Capacity Rebalancing is enabled.
*
* Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon
* EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot
* Instance is at an elevated risk of interruption. After launching a new instance, it then
* terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon
* EC2 Spot
* Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)
* in the in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-capacityrebalance)
*/
override fun capacityRebalance(): Any? = unwrap(this).getCapacityRebalance()
/**
* Reserved.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-context)
*/
override fun context(): String? = unwrap(this).getContext()
/**
* *Only needed if you use simple scaling policies.*.
*
* The amount of time, in seconds, between one scaling activity ending and another one starting
* due to simple scaling policies. For more information, see [Scaling cooldowns for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `300` seconds
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-cooldown)
*/
override fun cooldown(): String? = unwrap(this).getCooldown()
/**
* The amount of time, in seconds, until a new instance is considered to have finished
* initializing and resource consumption to become stable after it enters the `InService` state.
*
* During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after it
* replaces an instance before it moves on to replacing the next instance. Amazon EC2 Auto Scaling
* also waits for the warm-up period before aggregating the metrics for new instances with existing
* instances in the Amazon CloudWatch metrics that are used for scaling, resulting in more reliable
* usage data. For more information, see [Set the default instance warmup for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
*
* To manage various warm-up settings at the group level, we recommend that you set the default
* instance warmup, *even if it is set to 0 seconds* . To remove a value that you previously set,
* include the property but specify `-1` for the value. However, we strongly recommend keeping the
* default instance warmup enabled by specifying a value of `0` or other nominal value.
*
*
* Default: None
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-defaultinstancewarmup)
*/
override fun defaultInstanceWarmup(): Number? = unwrap(this).getDefaultInstanceWarmup()
/**
* The desired capacity is the initial capacity of the Auto Scaling group at the time of its
* creation and the capacity it attempts to maintain.
*
* It can scale beyond this capacity if you configure automatic scaling.
*
* The number must be greater than or equal to the minimum size of the group and less than or
* equal to the maximum size of the group. If you do not specify a desired capacity when creating
* the stack, the default is the minimum size of the group.
*
* CloudFormation marks the Auto Scaling group as successful (by setting its status to
* CREATE_COMPLETE) when the desired capacity is reached. However, if a maximum Spot price is set
* in the launch template or launch configuration that you specified, then desired capacity is not
* used as a criteria for success. Whether your request is fulfilled depends on Spot Instance
* capacity and your maximum price.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacity)
*/
override fun desiredCapacity(): String? = unwrap(this).getDesiredCapacity()
/**
* The unit of measurement for the value specified for desired capacity.
*
* Amazon EC2 Auto Scaling supports `DesiredCapacityType` for attribute-based instance type
* selection only. For more information, see [Create a mixed instances group using attribute-based
* instance type
* selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* By default, Amazon EC2 Auto Scaling specifies `units` , which translates into number of
* instances.
*
* Valid values: `units` | `vcpu` | `memory-mib`
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacitytype)
*/
override fun desiredCapacityType(): String? = unwrap(this).getDesiredCapacityType()
/**
* The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health
* status of an EC2 instance that has come into service and marking it unhealthy due to a failed
* health check.
*
* This is useful if your instances do not immediately pass their health checks after they enter
* the `InService` state. For more information, see [Set the health check grace period for an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* Default: `0` seconds
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthcheckgraceperiod)
*/
override fun healthCheckGracePeriod(): Number? = unwrap(this).getHealthCheckGracePeriod()
/**
* A comma-separated value string of one or more health check types.
*
* The valid values are `EC2` , `EBS` , `ELB` , and `VPC_LATTICE` . `EC2` is the default health
* check and cannot be disabled. For more information, see [Health checks for instances in an Auto
* Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Only specify `EC2` if you must clear a value that was previously set.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthchecktype)
*/
override fun healthCheckType(): String? = unwrap(this).getHealthCheckType()
/**
* The ID of the instance used to base the launch configuration on.
*
* For more information, see [Create an Auto Scaling group using an EC2
* instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* If you specify `LaunchTemplate` , `MixedInstancesPolicy` , or `LaunchConfigurationName` ,
* don't specify `InstanceId` .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instanceid)
*/
override fun instanceId(): String? = unwrap(this).getInstanceId()
/**
* An instance maintenance policy.
*
* For more information, see [Set instance maintenance
* policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instancemaintenancepolicy)
*/
override fun instanceMaintenancePolicy(): Any? = unwrap(this).getInstanceMaintenancePolicy()
/**
* The name of the launch configuration to use to launch instances.
*
* Required only if you don't specify `LaunchTemplate` , `MixedInstancesPolicy` , or
* `InstanceId` .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchconfigurationname)
*/
override fun launchConfigurationName(): String? = unwrap(this).getLaunchConfigurationName()
/**
* Information used to specify the launch template and version to use to launch instances.
*
* You can alternatively associate a launch template to the Auto Scaling group by specifying a
* `MixedInstancesPolicy` . For more information about creating launch templates, see [Create a
* launch template for an Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the
* *Amazon EC2 Auto Scaling User Guide* .
*
* If you omit this property, you must specify `MixedInstancesPolicy` ,
* `LaunchConfigurationName` , or `InstanceId` .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchtemplate)
*/
override fun launchTemplate(): Any? = unwrap(this).getLaunchTemplate()
/**
* One or more lifecycle hooks to add to the Auto Scaling group before instances are launched.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecificationlist)
*/
override fun lifecycleHookSpecificationList(): Any? =
unwrap(this).getLifecycleHookSpecificationList()
/**
* A list of Classic Load Balancers associated with this Auto Scaling group.
*
* For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify
* the `TargetGroupARNs` property instead.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-loadbalancernames)
*/
override fun loadBalancerNames(): List = unwrap(this).getLoadBalancerNames() ?:
emptyList()
/**
* The maximum amount of time, in seconds, that an instance can be in service.
*
* The default is null. If specified, the value must be either 0 or a number equal to or greater
* than 86,400 seconds (1 day). For more information, see [Replace Auto Scaling instances based on
* maximum instance
* lifetime](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxinstancelifetime)
*/
override fun maxInstanceLifetime(): Number? = unwrap(this).getMaxInstanceLifetime()
/**
* The maximum size of the group.
*
*
* With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need
* to go above `MaxSize` to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling
* will never go above `MaxSize` by more than your largest instance weight (weights that define how
* many units each instance contributes to the desired capacity of the group).
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxsize)
*/
override fun maxSize(): String = unwrap(this).getMaxSize()
/**
* Enables the monitoring of group metrics of an Auto Scaling group.
*
* By default, these metrics are disabled.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-metricscollection)
*/
override fun metricsCollection(): Any? = unwrap(this).getMetricsCollection()
/**
* The minimum size of the group.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-minsize)
*/
override fun minSize(): String = unwrap(this).getMinSize()
/**
* An embedded object that specifies a mixed instances policy.
*
* The policy includes properties that not only define the distribution of On-Demand Instances
* and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto
* Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the
* properties that specify the instance configuration information—the launch template and instance
* types. The policy can also include a weight for each instance type and different launch
* templates for individual instance types.
*
* For more information, see [Auto Scaling groups with multiple instance types and purchase
* options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-mixedinstancespolicy)
*/
override fun mixedInstancesPolicy(): Any? = unwrap(this).getMixedInstancesPolicy()
/**
* Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto
* Scaling when scaling in.
*
* For more information about preventing instances from terminating on scale in, see [Use
* instance scale-in
* protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-newinstancesprotectedfromscalein)
*/
override fun newInstancesProtectedFromScaleIn(): Any? =
unwrap(this).getNewInstancesProtectedFromScaleIn()
/**
* (deprecated) A structure that specifies an Amazon SNS notification configuration for the
* `NotificationConfigurations` property of the
* [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html)
* resource. For an example template snippet, see [Configure Amazon EC2 Auto Scaling
* resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).
* For more information, see [Get Amazon SNS notifications when your Auto Scaling group
* scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in
* the *Amazon EC2 Auto Scaling User Guide*.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-notificationconfiguration)
* @deprecated this property has been deprecated
*/
@Deprecated(message = "deprecated in CDK")
override fun notificationConfiguration(): Any? = unwrap(this).getNotificationConfiguration()
/**
* Configures an Auto Scaling group to send notifications when specified events take place.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-notificationconfigurations)
*/
override fun notificationConfigurations(): Any? = unwrap(this).getNotificationConfigurations()
/**
* The name of the placement group into which to launch your instances.
*
* For more information, see [Placement
* groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the
* *Amazon EC2 User Guide for Linux Instances* .
*
*
* A *cluster* placement group is a logical grouping of instances within a single Availability
* Zone. You cannot specify multiple Availability Zones and a cluster placement group.
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-placementgroup)
*/
override fun placementGroup(): String? = unwrap(this).getPlacementGroup()
/**
* The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to
* call other AWS service on your behalf.
*
* By default, Amazon EC2 Auto Scaling uses a service-linked role named
* `AWSServiceRoleForAutoScaling` , which it creates if it does not exist. For more information,
* see [Service-linked
* roles](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-servicelinkedrolearn)
*/
override fun serviceLinkedRoleArn(): String? = unwrap(this).getServiceLinkedRoleArn()
/**
* One or more tags.
*
* You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it
* launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes,
* specify the tags in a launch template but use caution. If the launch template specifies an
* instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto
* Scaling overrides the value of that instance tag with the value specified by the Auto Scaling
* group. For more information, see [Tag Auto Scaling groups and
* instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-tags)
*/
override fun tags(): List =
unwrap(this).getTags()?.map(CfnAutoScalingGroup.TagPropertyProperty::wrap) ?: emptyList()
/**
* The Amazon Resource Names (ARN) of the Elastic Load Balancing target groups to associate with
* the Auto Scaling group.
*
* Instances are registered as targets with the target groups. The target groups receive
* incoming traffic and route requests to one or more registered targets. For more information, see
* [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling
* group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in
* the *Amazon EC2 Auto Scaling User Guide* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-targetgrouparns)
*/
override fun targetGroupArns(): List = unwrap(this).getTargetGroupArns() ?: emptyList()
/**
* A policy or a list of policies that are used to select the instance to terminate.
*
* These policies are executed in the order that you list them. For more information, see
* [Configure termination policies for Amazon EC2 Auto
* Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html)
* in the *Amazon EC2 Auto Scaling User Guide* .
*
* Valid values: `Default` | `AllocationStrategy` | `ClosestToNextInstanceHour` |
* `NewestInstance` | `OldestInstance` | `OldestLaunchConfiguration` | `OldestLaunchTemplate` |
* `arn:aws:lambda:region:account-id:function:my-function:my-alias`
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-terminationpolicies)
*/
override fun terminationPolicies(): List = unwrap(this).getTerminationPolicies() ?:
emptyList()
/**
* A list of subnet IDs for a virtual private cloud (VPC) where instances in the Auto Scaling
* group can be created.
*
* If this resource specifies public subnets and is also in a VPC that is defined in the same
* stack template, you must use the [DependsOn
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
* to declare a dependency on the [VPC-gateway
* attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html)
* .
*
*
* When you update `VPCZoneIdentifier` , this retains the same Auto Scaling group and replaces
* old instances with new ones, according to the specified subnets. You can optionally specify how
* CloudFormation handles these updates by using an [UpdatePolicy
* attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)
* .
*
*
* Required to launch instances into a nondefault VPC. If you specify `VPCZoneIdentifier` with
* `AvailabilityZones` , the subnets that you specify for this property must reside in those
* Availability Zones.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-vpczoneidentifier)
*/
override fun vpcZoneIdentifier(): List = unwrap(this).getVpcZoneIdentifier() ?:
emptyList()
}
public companion object {
public operator fun invoke(block: Builder.() -> Unit = {}): CfnAutoScalingGroupProps {
val builderImpl = BuilderImpl()
return Wrapper(builderImpl.apply(block).build())
}
internal
fun wrap(cdkObject: software.amazon.awscdk.services.autoscaling.CfnAutoScalingGroupProps):
CfnAutoScalingGroupProps = CdkObjectWrappers.wrap(cdkObject) as? CfnAutoScalingGroupProps ?:
Wrapper(cdkObject)
internal fun unwrap(wrapped: CfnAutoScalingGroupProps):
software.amazon.awscdk.services.autoscaling.CfnAutoScalingGroupProps = (wrapped as
CdkObject).cdkObject as software.amazon.awscdk.services.autoscaling.CfnAutoScalingGroupProps
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy