Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurez les ressources Amazon EC2 Auto Scaling avec AWS CloudFormation
Les exemples suivants montrent les différents extraits à inclure dans les modèles à utiliser avec Amazon EC2 Auto Scaling.
Catégories d'extraits
- Création d'un groupe Auto Scaling à instance unique
- Création d'un groupe Auto Scaling avec un équilibreur de charge attaché
- Création d'un groupe Auto Scaling avec notifications
- Créez un groupe Auto Scaling qui utilise un CreationPolicy et un UpdatePolicy
- Création d'une politique de mise à l'échelle par étapes
- Exemples de groupes d'instances mixtes
- Exemples de configuration de lancement
Création d'un groupe Auto Scaling à instance unique
Cet exemple montre une AWS::AutoScaling::AutoScalingGroup
ressource avec une seule instance pour vous aider à démarrer. La propriété VPCZoneIdentifier
du groupe Auto Scaling spécifie une liste de sous-réseaux existants dans trois zones de disponibilité différentes. Vous devez spécifier le sous-réseau applicable IDs depuis votre compte avant de créer votre stack. La LaunchTemplate
propriété fait référence à une AWS::EC2::LaunchTemplate
ressource myLaunchTemplate
dont le nom logique est défini ailleurs dans votre modèle.
Note
Pour des exemples de modèles de lancement, consultez Créez des modèles de lancement avec AWS CloudFormation la section Amazon EC2 snippets et la section Exemples de la AWS::EC2::LaunchTemplate
ressource.
JSON
"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "myLaunchTemplate
" }, "Version" : { "Fn::GetAtt" : [ "myLaunchTemplate
", "LatestVersionNumber" ] } }, "MaxSize" : "1", "MinSize" : "1" } }
YAML
myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplate
Version: !GetAttmyLaunchTemplate
.LatestVersionNumber MaxSize: '1' MinSize: '1'
Création d'un groupe Auto Scaling avec un équilibreur de charge attaché
Cet exemple montre une AWS::AutoScaling::AutoScalingGroup
ressource pour l'équilibrage de charge sur plusieurs serveurs. Il spécifie les noms logiques des AWS ressources déclarées ailleurs dans le même modèle.
-
La
VPCZoneIdentifier
propriété spécifie les noms logiques des deuxAWS::EC2::Subnet
ressources dans lesquelles les EC2 instances du groupe Auto Scaling seront créées :myPublicSubnet1
etmyPublicSubnet2
. -
La
LaunchTemplate
propriété spécifie uneAWS::EC2::LaunchTemplate
ressource avec le nom logiquemyLaunchTemplate
. -
La propriété
TargetGroupARNs
répertorie les groupes cibles d'un Application Load Balancer ou Network Load Balancer utilisés pour acheminer le trafic vers le groupe Auto Scaling. Dans cet exemple, un groupe cible est spécifié, uneAWS::ElasticLoadBalancingV2::TargetGroup
ressource portant le nom logiquemyTargetGroup
.
JSON
"myServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ { "Ref" : "
myPublicSubnet1
" }, { "Ref" : "myPublicSubnet2
" } ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "myLaunchTemplate
" }, "Version" : { "Fn::GetAtt" : [ "myLaunchTemplate
", "LatestVersionNumber" ] } }, "MaxSize" : "5", "MinSize" : "1", "TargetGroupARNs" : [ { "Ref" : "myTargetGroup
" } ] } }
YAML
myServerGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - !Ref
myPublicSubnet1
- !RefmyPublicSubnet2
LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplate
Version: !GetAttmyLaunchTemplate
.LatestVersionNumber MaxSize: '5' MinSize: '1' TargetGroupARNs: - !RefmyTargetGroup
Consultez aussi
Pour un exemple détaillé qui crée un groupe Auto Scaling avec une politique de suivi des objectifs et d'échelonnement basée sur la métrique prédéfinie ALBRequestCountPerTarget
pour votre Application Load Balancer, veuillez consulter la rubrique Exemples de la ressource AWS::AutoScaling::ScalingPolicy
.
Création d'un groupe Auto Scaling avec notifications
Cet exemple montre une AWS::AutoScaling::AutoScalingGroup
ressource qui envoie SNS des notifications à Amazon lorsque les événements spécifiés se produisent. La NotificationConfigurations
propriété indique le SNS sujet dans lequel AWS CloudFormation une notification est envoyée et les événements qui provoqueront AWS CloudFormation l'envoi de notifications. Lorsque les événements spécifiés par NotificationTypes
se produisent, AWS CloudFormation envoie une notification au SNS sujet spécifié parTopicARN
. Lorsque vous lancez la pile, elle AWS CloudFormation crée une AWS::SNS::Subscription
ressource (snsTopicForAutoScalingGroup
) déclarée dans le même modèle.
La propriété VPCZoneIdentifier
du groupe Auto Scaling spécifie une liste de sous-réseaux existants dans trois zones de disponibilité différentes. Vous devez spécifier le sous-réseau applicable IDs depuis votre compte avant de créer votre stack. La LaunchTemplate
propriété fait référence au nom logique d'une AWS::EC2::LaunchTemplate
ressource déclarée ailleurs dans le même modèle.
JSON
"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "DependsOn": [ "snsTopicForAutoScalingGroup" ], "Properties" : { "VPCZoneIdentifier" : [ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName
" }, "Version" : { "Fn::GetAtt" : [ "logicalName
", "LatestVersionNumber" ] } }, "MaxSize" : "5", "MinSize" : "1", "NotificationConfigurations" : [ { "TopicARN" : { "Ref" : "snsTopicForAutoScalingGroup" }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", "autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR", "autoscaling:TEST_NOTIFICATION" ] } ] } }
YAML
myASG: Type: AWS::AutoScaling::AutoScalingGroup DependsOn: - snsTopicForAutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber MaxSize: '5' MinSize: '1' NotificationConfigurations: - TopicARN: !Ref snsTopicForAutoScalingGroup NotificationTypes: - autoscaling:EC2_INSTANCE_LAUNCH - autoscaling:EC2_INSTANCE_LAUNCH_ERROR - autoscaling:EC2_INSTANCE_TERMINATE - autoscaling:EC2_INSTANCE_TERMINATE_ERROR - autoscaling:TEST_NOTIFICATION
Créez un groupe Auto Scaling qui utilise un CreationPolicy
et un UpdatePolicy
L'exemple suivant montre comment ajouter Attribut CreationPolicy des UpdatePolicy attributs à une AWS::AutoScaling::AutoScalingGroup
ressource.
La politique de création d'échantillons empêche le groupe Auto Scaling d'atteindre le CREATE_COMPLETE
statut tant qu'il n'a Count
pas AWS CloudFormation reçu un certain nombre de signaux de réussite lorsque le groupe est prêt. Pour signaler que le groupe Auto Scaling est prêt, un script d'assistant cfn-signal ajouté aux données utilisateur du modèle de lancement (non affiché) est exécuté sur les instances. Si les instances n'envoient pas de signal dans les limites spécifiéesTimeout
, cela CloudFormation suppose que les instances n'ont pas été créées, que la création de ressources échoue et CloudFormation annule la pile.
L'exemple de politique de mise à jour indique d'effectuer une mise CloudFormation à jour continue à l'aide de la AutoScalingRollingUpdate
propriété. La mise à jour continue modifie le groupe Auto Scaling par petits lots (dans cet exemple, instance par instance) en fonction de MaxBatchSize
et d'un temps d'interruption entre les lots de mises à jour basé sur PauseTime
. L'MinInstancesInService
attribut indique le nombre minimum d'instances qui doivent être en service au sein du groupe Auto Scaling lors de la mise CloudFormation à jour des anciennes instances.
L'WaitOnResourceSignals
attribut est défini surtrue
. CloudFormationdoit recevoir un signal de chaque nouvelle instance dans les limites spécifiées PauseTime
avant de poursuivre la mise à jour. Pendant la mise à jour de la pile, les processus EC2 Auto Scaling suivants sont suspendus : HealthCheck
ReplaceUnhealthy
,AZRebalance
,AlarmNotification
, etScheduledActions
. Remarque : ne suspendez pas les types de processus Launch
, Terminate
ou AddToLoadBalancer
(si le groupe Auto Scaling est utilisé avec Elastic Load Balancing) car cela peut empêcher le fonctionnement correct de la mise à jour continue.
La propriété VPCZoneIdentifier
du groupe Auto Scaling spécifie une liste de sous-réseaux existants dans trois zones de disponibilité différentes. Vous devez spécifier le sous-réseau applicable IDs depuis votre compte avant de créer votre stack. La LaunchTemplate
propriété fait référence au nom logique d'une AWS::EC2::LaunchTemplate
ressource déclarée ailleurs dans le même modèle.
JSON
{ "Resources":{ "myASG":{ "CreationPolicy":{ "ResourceSignal":{ "Count":"3", "Timeout":"PT15M" } }, "UpdatePolicy":{ "AutoScalingRollingUpdate":{ "MinInstancesInService":"3", "MaxBatchSize":"1", "PauseTime":"PT12M5S", "WaitOnResourceSignals":"true", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions", "InstanceRefresh" ] } }, "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName
" }, "Version":{ "Fn::GetAtt":[ "logicalName
", "LatestVersionNumber" ] } }, "MaxSize":"5", "MinSize":"3" } } } }
YAML
--- Resources: myASG: CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M UpdatePolicy: AutoScalingRollingUpdate: MinInstancesInService: '3' MaxBatchSize: '1' PauseTime: PT12M5S WaitOnResourceSignals: true SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions - InstanceRefresh Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber MaxSize: '5' MinSize: '3'
Création d'une politique de mise à l'échelle par étapes
Cet exemple montre une AWS::AutoScaling::ScalingPolicy
ressource qui étend le groupe Auto Scaling à l'aide d'une politique de dimensionnement par étapes. La propriété AdjustmentType
spécifie ChangeInCapacity
, ce qui signifie que ScalingAdjustment
représente le nombre d'instances à ajouter (si ScalingAdjustment
est positif) ou à supprimer (s'il est négatif). Dans cet exemple, ScalingAdjustment
c'est 1 ; par conséquent, la politique augmente le nombre d'EC2instances du groupe de 1 lorsque le seuil d'alarme est dépassé.
La AWS::CloudWatch::Alarm
ressource CPUAlarmHigh
spécifie la politique de dimensionnement ASGScalingPolicyHigh
comme l'action à exécuter lorsque l'alarme est dans un ALARM état (AlarmActions
). La Dimensions
propriété fait référence au nom logique d'une AWS::AutoScaling::AutoScalingGroup
ressource déclarée ailleurs dans le même modèle.
JSON
{ "Resources":{ "ASGScalingPolicyHigh":{ "Type":"AWS::AutoScaling::ScalingPolicy", "Properties":{ "AutoScalingGroupName":{ "Ref":"
logicalName
" }, "PolicyType":"StepScaling", "AdjustmentType":"ChangeInCapacity", "StepAdjustments":[ { "MetricIntervalLowerBound":0, "ScalingAdjustment":1 } ] } }, "CPUAlarmHigh":{ "Type":"AWS::CloudWatch::Alarm", "Properties":{ "EvaluationPeriods":"2", "Statistic":"Average", "Threshold":"90", "AlarmDescription":"Scale out if CPU > 90% for 2 minutes", "Period":"60", "AlarmActions":[ { "Ref":"ASGScalingPolicyHigh" } ], "Namespace":"AWS/EC2", "Dimensions":[ { "Name":"AutoScalingGroupName", "Value":{ "Ref":"logicalName
" } } ], "ComparisonOperator":"GreaterThanThreshold", "MetricName":"CPUUtilization" } } } }
YAML
--- Resources: ASGScalingPolicyHigh: Type: AWS::AutoScaling::ScalingPolicy Properties: AutoScalingGroupName: !Ref
logicalName
PolicyType: StepScaling AdjustmentType: ChangeInCapacity StepAdjustments: - MetricIntervalLowerBound: 0 ScalingAdjustment: 1 CPUAlarmHigh: Type: AWS::CloudWatch::Alarm Properties: EvaluationPeriods: 2 Statistic: Average Threshold: 90 AlarmDescription: 'Scale out if CPU > 90% for 2 minutes' Period: 60 AlarmActions: - !Ref ASGScalingPolicyHigh Namespace: AWS/EC2 Dimensions: - Name: AutoScalingGroupName Value: !ReflogicalName
ComparisonOperator: GreaterThanThreshold MetricName: CPUUtilization
Consultez aussi
Pour plus d'exemples de modèles de politiques de mise à l'échelle, veuillez consulter la rubrique Exemples dans la ressource AWS::AutoScaling::ScalingPolicy
.
Exemples de groupes d'instances mixtes
Créer un groupe Auto Scaling en utilisant la sélection du type d'instance basée sur des attributs
Cet exemple montre une AWS::AutoScaling::AutoScalingGroup
ressource contenant les informations permettant de lancer un groupe d'instances mixtes à l'aide de la sélection du type d'instance basée sur les attributs. Vous spécifiez les valeurs minimales et maximales pour la propriété VCpuCount
et la valeur minimale pour la propriété MemoryMiB
. Tous les types d'instance utilisés par le groupe Auto Scaling doivent correspondre à vos attributs d'instance requis.
La propriété VPCZoneIdentifier
du groupe Auto Scaling spécifie une liste de sous-réseaux existants dans trois zones de disponibilité différentes. Vous devez spécifier le sous-réseau applicable IDs depuis votre compte avant de créer votre stack. La LaunchTemplate
propriété fait référence au nom logique d'une AWS::EC2::LaunchTemplate
ressource déclarée ailleurs dans le même modèle.
JSON
{ "Resources":{ "myASG":{ "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":{ "Ref":"logicalName
" }, "Version":{ "Fn::GetAtt":[ "logicalName
", "LatestVersionNumber" ] } }, "Overrides":[ { "InstanceRequirements":{ "VCpuCount":{ "Min":2
, "Max":4
}, "MemoryMiB":{ "Min":2048
} } } ] } }, "MaxSize":"5", "MinSize":"1" } } } }
YAML
--- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber Overrides: - InstanceRequirements: VCpuCount: Min:2
Max:4
MemoryMiB: Min:2048
MaxSize: '5' MinSize: '1'
Exemples de configuration de lancement
Créez une configuration de lancement
Cet exemple montre une AWS::AutoScaling::LaunchConfiguration
ressource pour un groupe Auto Scaling dans laquelle vous spécifiez des valeurs pour les SecurityGroups
propriétés ImageId
InstanceType
, et. La SecurityGroups
propriété spécifie à la fois le nom logique d'une AWS::EC2::SecurityGroup
ressource spécifiée ailleurs dans le modèle et un groupe EC2 de sécurité existant nommémyExistingEC2SecurityGroup
.
JSON
"mySimpleConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : "
ami-02354e95b3example
", "InstanceType" : "t3.micro
", "SecurityGroups" : [ { "Ref" : "logicalName
" }, "myExistingEC2SecurityGroup
" ] } }
YAML
mySimpleConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId:
ami-02354e95b3example
InstanceType:t3.micro
SecurityGroups: - !ReflogicalName
-myExistingEC2SecurityGroup
Créez un groupe Auto Scaling qui utilise une configuration de lancement
Cet exemple montre une AWS::AutoScaling::AutoScalingGroup
ressource avec une seule instance. La propriété VPCZoneIdentifier
du groupe Auto Scaling spécifie une liste de sous-réseaux existants dans trois zones de disponibilité différentes. Vous devez spécifier le sous-réseau applicable IDs depuis votre compte avant de créer votre stack. La LaunchConfigurationName
propriété fait référence à une AWS::AutoScaling::LaunchConfiguration
ressource mySimpleConfig
dont le nom logique est défini dans votre modèle.
JSON
"myASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchConfigurationName" : { "Ref" : "mySimpleConfig
" }, "MaxSize" : "1", "MinSize" : "1" } }
YAML
myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchConfigurationName: !RefmySimpleConfig
MaxSize: '1' MinSize: '1'