Skip to content
GitHubXDiscord

CapacityProvider

The CapacityProvider resource lets you manage AWS ECS CapacityProviders for your containerized applications, enabling you to control the scaling and availability of your resources.

Create a basic ECS CapacityProvider with an Auto Scaling Group provider and a name:

import AWS from "alchemy/aws/control";
const basicCapacityProvider = await AWS.ECS.CapacityProvider("basicCapacityProvider", {
autoScalingGroupProvider: {
autoScalingGroupArn: "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:abcd1234-abcd-1234-abcd-123456789012:autoScalingGroupName/my-asg",
managedScaling: {
status: "ENABLED",
targetCapacity: 80,
minimumScalingStepSize: 1,
maximumScalingStepSize: 100
},
managedTerminationProtection: "ENABLED"
},
name: "BasicCapacityProvider"
});

Configure an ECS CapacityProvider with tags to help organize your resources:

const advancedCapacityProvider = await AWS.ECS.CapacityProvider("advancedCapacityProvider", {
autoScalingGroupProvider: {
autoScalingGroupArn: "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:abcd1234-abcd-1234-abcd-123456789012:autoScalingGroupName/my-asg",
managedScaling: {
status: "ENABLED",
targetCapacity: 90,
minimumScalingStepSize: 1,
maximumScalingStepSize: 50
},
managedTerminationProtection: "DISABLED"
},
tags: [
{
key: "Environment",
value: "Production"
},
{
key: "Project",
value: "MyECSProject"
}
],
name: "AdvancedCapacityProvider"
});

Create a capacity provider that specifies scaling configurations for better cost management:

const scalingCapacityProvider = await AWS.ECS.CapacityProvider("scalingCapacityProvider", {
autoScalingGroupProvider: {
autoScalingGroupArn: "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:abcd1234-abcd-1234-abcd-123456789012:autoScalingGroupName/my-asg",
managedScaling: {
status: "ENABLED",
targetCapacity: 70,
minimumScalingStepSize: 1,
maximumScalingStepSize: 10
},
managedTerminationProtection: "ENABLED"
},
tags: [
{
key: "Environment",
value: "Staging"
}
],
name: "ScalingCapacityProvider"
});

Adopt an existing ECS CapacityProvider instead of failing when the resource already exists:

const existingCapacityProvider = await AWS.ECS.CapacityProvider("existingCapacityProvider", {
autoScalingGroupProvider: {
autoScalingGroupArn: "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:abcd1234-abcd-1234-abcd-123456789012:autoScalingGroupName/my-existing-asg",
managedScaling: {
status: "DISABLED"
},
managedTerminationProtection: "DISABLED"
},
adopt: true,
name: "ExistingCapacityProvider"
});