AutoScalingGroup
The AutoScalingGroup resource allows you to manage AWS AutoScaling AutoScalingGroups that automatically adjust the number of EC2 instances in response to demand.
Minimal Example
Section titled “Minimal Example”Create a basic AutoScalingGroup with required properties and one optional property.
import AWS from "alchemy/aws/control";
const basicAutoScalingGroup = await AWS.AutoScaling.AutoScalingGroup("basicAutoScalingGroup", { MaxSize: "5", MinSize: "1", DesiredCapacity: "2", VPCZoneIdentifier: ["subnet-abc12345", "subnet-def67890"], LaunchConfigurationName: "myLaunchConfiguration"});
Advanced Configuration
Section titled “Advanced Configuration”Configure an AutoScalingGroup with lifecycle hooks and notification configurations for better management.
const advancedAutoScalingGroup = await AWS.AutoScaling.AutoScalingGroup("advancedAutoScalingGroup", { MaxSize: "10", MinSize: "2", DesiredCapacity: "5", VPCZoneIdentifier: ["subnet-abc12345"], LaunchConfigurationName: "myLaunchConfiguration", LifecycleHookSpecificationList: [{ LifecycleTransition: "autoscaling:EC2_INSTANCE_LAUNCHING", NotificationTargetARN: "arn:aws:sns:us-east-1:123456789012:mySNSTopic", RoleARN: "arn:aws:iam::123456789012:role/myRole" }], NotificationConfigurations: [{ TopicARN: "arn:aws:sns:us-east-1:123456789012:mySNSTopic", NotificationTypes: ["autoscaling:EC2_INSTANCE_LAUNCHED", "autoscaling:EC2_INSTANCE_TERMINATED"] }]});
Mixed Instances Policy
Section titled “Mixed Instances Policy”Create an AutoScalingGroup with a mixed instances policy to utilize multiple instance types for cost efficiency.
const mixedInstancesAutoScalingGroup = await AWS.AutoScaling.AutoScalingGroup("mixedInstancesAutoScalingGroup", { MaxSize: "10", MinSize: "2", LaunchTemplate: { LaunchTemplateId: "lt-0123456789abcdef0", Version: "$Latest" }, MixedInstancesPolicy: { InstancesDistribution: { OnDemandAllocationStrategy: "prioritized", OnDemandBaseCapacity: 1, OnDemandPercentageAboveBaseCapacity: 50, SpotAllocationStrategy: "lowest-price", SpotInstancePools: 2 }, LaunchTemplate: { LaunchTemplateSpecification: { LaunchTemplateId: "lt-0123456789abcdef0", Version: "$Latest" }, Overrides: [{ InstanceType: "t3.micro" }, { InstanceType: "t3.small" }] } }, VPCZoneIdentifier: ["subnet-abc12345", "subnet-def67890"]});