AWS CloudFormation
Guide de l'utilisateur (Version de l'API 2010-05-15)

Extraits de modèle Auto Scaling

Ressource de configuration de lancement Auto Scaling

Cet exemple illustre une ressource Auto Scaling AWS::AutoScaling::LaunchConfiguration. La propriété SecurityGroups spécifie une ressource AWS::EC2::SecurityGroup nommée myEC2SecurityGroup, ainsi qu'un groupe de sécurité EC2 existant nommé myExistingEC2SecurityGroup. La propriété BlockDeviceMappings répertorie deux périphériques : un volume EBS de 50 Go mappé avec/dev/sdk et un périphérique virtuel ephemeral0 mappé avec /dev/sdc.

JSON

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

YAML

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

Ressource de groupe Auto Scaling

Cet exemple montre une ressource Auto Scaling AWS::AutoScaling::AutoScalingGroup. La propriété AvailabilityZones spécifie les zones de disponibilité où les instances EC2 du groupe Auto Scaling seront créées. Dans cet exemple, l'appel { "Fn::GetAZs" : "" } de la fonction Fn::GetAZs spécifie toutes les zones de disponibilité de la région dans laquelle la pile sera créée. La propriété LoadBalancerNames répertorie les équilibreurs de charge utilisés pour acheminer le trafic vers le groupe Auto Scaling. Dans cet exemple, un seul équilibreur de charge est spécifié, l'équilibreur de charge de la ressource AWS::ElasticLoadBalancing::LoadBalancer.

JSON

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

YAML

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

Stratégie Auto Scaling déclenchée par une alarme CloudWatch

Cet exemple présente une ressource AWS::AutoScaling::ScalingPolicy qui met à l'échelle ascendante le groupe Auto Scaling asGroup. La propriété AdjustmentType spécifie la valeur ChangeInCapacity. Autrement dit, la valeur ScalingAdjustment représente le nombre d'instances à ajouter (si ScalingAdjustment est positif) ou à supprimer (s'il est négatif). Dans cet exemple, le paramètre ScalingAdjustment indique 1. Par conséquent, la stratégie ajoutera une instances EC2 dans le groupe lorsqu'elle sera exécutée.

La valeur CPUAlarmHigh de la ressource AWS::CloudWatch::Alarm spécifie la stratégie de mise à l'échelle ScaleUpPolicy en tant qu'action à exécuter lorsque l'état de l'alarme correspond à ALARM (AlarmActions).

JSON

"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

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

Groupe Auto Scaling avec notifications

Cet exemple montre une ressource AWS::AutoScaling::AutoScalingGroup qui envoie des notifications Amazon SNS lorsque les événements spécifiés ont lieu. La propriété NotificationConfigurations spécifie la rubrique SNS dans laquelle AWS CloudFormation envoie une notification, ainsi que les événements pour lesquels AWS CloudFormation enverra des notifications. Lorsque les événements spécifiés par NotificationTypes se produisent, AWS CloudFormation envoie une notification à la rubrique SNS spécifiée par TopicARN. Dans cet exemple, AWS CloudFormation envoie une notification à la rubrique SNS topic1 lorsque les événements autoscaling:EC2_INSTANCE_LAUNCH et autoscaling:EC2_INSTANCE_LAUNCH_ERROR se produisent.

JSON

"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

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

Groupe Auto Scaling avec stratégie de mise à jour

Cet exemple montre comment utiliser une stratégie Attribut UpdatePolicy avec un groupe Auto Scaling.

JSON

"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

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'