Skip to content

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.

Minimal Example ​

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

ts
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"
});

Advanced Configuration ​

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

ts
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"
});

Scaling Configuration ​

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

ts
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"
});

Using Existing Resources ​

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

ts
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"
});