メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

Auto Scaling テンプレートスニペット

Auto Scaling 起動設定リソース

この例は、Auto Scaling AWS::AutoScaling::LaunchConfiguration リソースを示します。SecurityGroups プロパティには、myEC2SecurityGroup という名前の AWS::EC2::SecurityGroup リソースと、myExistingEC2SecurityGroup という名前の既存の EC2 セキュリティグループが指定されています。BlockDeviceMappings プロパティには、/dev/sdk にマッピングされた 50 ギガバイトの EBS ボリュームと、/dev/sdc にマッピングされた仮想デバイス ephemeral0 の 2 つのデバイスが指定されています。

JSON

Copy
"SimpleConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : "ami-6411e20d", "SecurityGroups" : [ { "Ref" : "myEC2SecurityGroup" }, "myExistingEC2SecurityGroup" ], "InstanceType" : "m1.small", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdk", "Ebs" : {"VolumeSize" : "50"} }, { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }

YAML

Copy
SimpleConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-6411e20d SecurityGroups: - Ref: myEC2SecurityGroup - myExistingEC2SecurityGroup InstanceType: m1.small BlockDeviceMappings: - DeviceName: "/dev/sdk" Ebs: VolumeSize: '50' - DeviceName: "/dev/sdc" VirtualName: ephemeral0

Auto Scaling グループ リソース

この例は、Auto Scaling AWS::AutoScaling::AutoScalingGroup リソースを示します。AvailabilityZones プロパティは、Auto Scaling グループの EC2 インスタンスの作成先となるアベイラビリティーゾーンを指定します。この例の Fn::GetAZs 関数の呼び出し ({ "Fn::GetAZs" : "" }) では、スタックの作成先となるリージョンのすべてのアベイラビリティーゾーンが指定されています。LoadBalancerNames プロパティは、Auto Scaling グループにトラフィックをルーティングする際に使用される LoadBalancers をリストします。この例では、LoadBalancer が 1 つ指定されています。AWS::ElasticLoadBalancing::LoadBalancer リソース LB です。

JSON

Copy
"MyServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : ""}, "LaunchConfigurationName" : { "Ref" : "SimpleConfig" }, "MinSize" : "1", "MaxSize" : "3", "LoadBalancerNames" : [ { "Ref" : "LB" } ] } }

YAML

Copy
MyServerGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Fn::GetAZs: '' LaunchConfigurationName: Ref: SimpleConfig MinSize: '1' MaxSize: '3' LoadBalancerNames: - Ref: LB

CloudWatch アラームによってトリガーされる Auto Scaling ポリシー

この例は、Auto Scaling グループ asGroup を拡大する AWS::AutoScaling::ScalingPolicy リソースを示します。AdjustmentType プロパティには、ChangeInCapacity が指定されています。この場合、ScalingAdjustment は、追加 (ScalingAdjustment が正数の場合) または削除 (負数の場合) するインスタンス数を表します。この例では、ScalingAdjustment が 1 に設定されているので、ポリシーが実行されると、グループ内の EC2 インスタンスの数が 1 つ増やされます。

AWS::CloudWatch::Alarm リソース CPUAlarmHigh では、そのアラームが ALARM 状態 (AlarmActions) になったときに実行するアクションとしてスケーリングポリシー ScaleUpPolicy を指定しています。

JSON

Copy
"ScaleUpPolicy" : { "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : "ChangeInCapacity", "AutoScalingGroupName" : { "Ref" : "asGroup" }, "Cooldown" : "1", "ScalingAdjustment" : "1" } }, "CPUAlarmHigh": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "EvaluationPeriods": "1", "Statistic": "Average", "Threshold": "10", "AlarmDescription": "Alarm if CPU too high or metric disappears indicating instance is down", "Period": "60", "AlarmActions": [ { "Ref": "ScaleUpPolicy" } ], "Namespace": "AWS/EC2", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": { "Ref": "asGroup" } } ], "ComparisonOperator": "GreaterThanThreshold", "MetricName": "CPUUtilization" } }

YAML

Copy
ScaleUpPolicy: Type: AWS::AutoScaling::ScalingPolicy Properties: AdjustmentType: ChangeInCapacity AutoScalingGroupName: Ref: asGroup Cooldown: '1' ScalingAdjustment: '1' CPUAlarmHigh: Type: AWS::CloudWatch::Alarm Properties: EvaluationPeriods: '1' Statistic: Average Threshold: '10' AlarmDescription: Alarm if CPU too high or metric disappears indicating instance is down Period: '60' AlarmActions: - Ref: ScaleUpPolicy Namespace: AWS/EC2 Dimensions: - Name: AutoScalingGroupName Value: Ref: asGroup ComparisonOperator: GreaterThanThreshold MetricName: CPUUtilization

Auto Scaling グループと通知

この例は、指定されたイベントが発生したときに Amazon SNS 通知を送信する AWS::AutoScaling::AutoScalingGroup リソースを示します。NotificationConfigurations プロパティは、AWS CloudFormation からの通知の送信先となる SNS トピックと、AWS CloudFormation が通知を送信するきっかけとなるイベントを指定します。NotificationTypes で指定したイベントが発生すると、TopicARN で指定した SNS トピックに通知が送信されます。この例では、autoscaling:EC2_INSTANCE_LAUNCH イベントと autoscaling:EC2_INSTANCE_LAUNCH_ERROR イベントが発生したときに、AWS CloudFormation から SNS トピック topic1 に通知が送信されます。

JSON

Copy
"MyAsGroupWithNotification" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Ref" : "azList" }, "LaunchConfigurationName" : { "Ref" : "myLCOne" }, "MinSize" : "0", "MaxSize" : "2", "DesiredCapacity" : "1", "NotificationConfigurations" : [ { "TopicARN" : { "Ref" : "topic1" }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", "autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR" ] } ] } }

YAML

Copy
MyAsGroupWithNotification: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Ref: azList LaunchConfigurationName: Ref: myLCOne MinSize: '0' MaxSize: '2' DesiredCapacity: '1' NotificationConfigurations: - TopicARN: Ref: topic1 NotificationTypes: - autoscaling:EC2_INSTANCE_LAUNCH - autoscaling:EC2_INSTANCE_LAUNCH_ERROR - autoscaling:EC2_INSTANCE_TERMINATE - autoscaling:EC2_INSTANCE_TERMINATE_ERROR

Auto Scaling と UpdatePolicy

この例は、Auto Scaling グループで UpdatePolicy を使用する方法を示します。

JSON

Copy
"ASG1" : { "UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "1", "PauseTime" : "PT12M5S" } }, "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : { "Ref" : "AWS::Region" } }, "LaunchConfigurationName" : { "Ref" : "ASLC" }, "MaxSize" : "3", "MinSize" : "1" } }

YAML

Copy
ASG1: UpdatePolicy: AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '1' PauseTime: PT12M5S Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Fn::GetAZs: Ref: AWS::Region LaunchConfigurationName: Ref: ASLC MaxSize: '3' MinSize: '1'