AWS Fundamentals Logo
AWS Fundamentals
L2 Construct

AsgCapacityProvider

An Auto Scaling Group Capacity Provider. This allows an ECS cluster to target a specific EC2 Auto Scaling Group for the placement of tasks. Optionally (and recommended), ECS can manage the number of instances in the ASG to fit the tasks, and can ensure that instances are not prematurely terminated while there are still tasks running on them.

Import

import { AsgCapacityProvider } from 'aws-cdk-lib/aws-ecs';

Or use the module namespace:

import * as ecs from 'aws-cdk-lib/aws-ecs';
// ecs.AsgCapacityProvider

Properties

Configuration passed to the constructor as AsgCapacityProviderProps.

autoScalingGroupRequired
IAutoScalingGroup

The autoscaling group to add as a Capacity Provider. Warning: When passing an imported resource using `AutoScalingGroup.fromAutoScalingGroupName` along with `enableManagedTerminationProtection: true`, the `AsgCapacityProvider` construct will not be able to enforce the option `newInstancesProtectedFromScaleIn` of the `AutoScalingGroup`. In this case the constructor of `AsgCapacityProvider` will throw an exception.

capacityProviderNameOptional
string

The name of the capacity provider. If a name is specified, it cannot start with `aws`, `ecs`, or `fargate`. If no name is specified, a default name in the CFNStackName-CFNResourceName-RandomString format is used. If the stack name starts with `aws`, `ecs`, or `fargate`, a unique resource name is generated that starts with `cp-`.

Default: CloudFormation-generated name

enableManagedDrainingOptional
boolean

Managed instance draining facilitates graceful termination of Amazon ECS instances. This allows your service workloads to stop safely and be rescheduled to non-terminating instances. Infrastructure maintenance and updates are preformed without disruptions to workloads. To use managed instance draining, set enableManagedDraining to true.

Default: true

enableManagedScalingOptional
boolean

When enabled the scale-in and scale-out actions of the cluster's Auto Scaling Group will be managed for you. This means your cluster will automatically scale instances based on the load your tasks put on the cluster. For more information, see [Using Managed Scaling](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/asg-capacity-providers.html#asg-capacity-providers-managed-scaling) in the ECS Developer Guide.

Default: true

enableManagedTerminationProtectionOptional
boolean

When enabled the Auto Scaling Group will only terminate EC2 instances that no longer have running non-daemon tasks. Scale-in protection will be automatically enabled on instances. When all non-daemon tasks are stopped on an instance, ECS initiates the scale-in process and turns off scale-in protection for the instance. The Auto Scaling Group can then terminate the instance. For more information see [Managed termination protection](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-auto-scaling.html#managed-termination-protection) in the ECS Developer Guide. Managed scaling must also be enabled.

Default: true

instanceWarmupPeriodOptional
number

The period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. Must be between 0 and 10000.

Default: 300

maximumScalingStepSizeOptional
number

Maximum scaling step size. In most cases this should be left alone.

Default: 1000

minimumScalingStepSizeOptional
number

Minimum scaling step size. In most cases this should be left alone.

Default: 1

targetCapacityPercentOptional
number

Target capacity percent. In most cases this should be left alone.

Default: 100

3 properties inherited from AddAutoScalingGroupCapacityOptions
machineImageTypeOptionalinherited from AddAutoScalingGroupCapacityOptions
MachineImageType

What type of machine image this is. Depending on the setting, different UserData will automatically be added to the `AutoScalingGroup` to configure it properly for use with ECS. If you create an `AutoScalingGroup` yourself and are adding it via `addAutoScalingGroup()`, you must specify this value. If you are adding an `autoScalingGroup` via `addCapacity`, this value will be determined from the `machineImage` you pass.

Default: - Automatically determined from `machineImage`, if available, otherwise `MachineImageType.AMAZON_LINUX_2`.

spotInstanceDrainingOptionalinherited from AddAutoScalingGroupCapacityOptions
boolean

Specify whether to enable Automated Draining for Spot Instances running Amazon ECS Services. For more information, see [Using Spot Instances](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-spot.html).

Default: false

topicEncryptionKeyOptionalinherited from AddAutoScalingGroupCapacityOptions
IKey

If `AddAutoScalingGroupCapacityOptions.taskDrainTime` is non-zero, then the ECS cluster creates an SNS Topic to as part of a system to drain instances of tasks when the instance is being shut down. If this property is provided, then this key will be used to encrypt the contents of that SNS Topic. See [SNS Data Encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-data-encryption.html) for more information.

Default: The SNS Topic will not be encrypted.

Get the Amazon ECS Cheat Sheet

Everything you need to know about Amazon ECS on one page. HD quality, print-friendly.

Download Free Infographic