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.
Configurer les ressources Amazon EC2 Auto Scaling avec 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
Cet exemple montre une AWS::AutoScaling::AutoScalingGroupressource 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::LaunchTemplateressource 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 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-subnetIdAz3LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplateVersion: !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::AutoScalingGroupressource 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
VPCZoneIdentifierpropriété spécifie les noms logiques des deuxAWS::EC2::Subnetressources dans lesquelles les EC2 instances du groupe Auto Scaling seront créées :myPublicSubnet1etmyPublicSubnet2. -
La
LaunchTemplatepropriété spécifie uneAWS::EC2::LaunchTemplateressource avec le nom logiquemyLaunchTemplate. -
La propriété
TargetGroupARNsré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::TargetGroupressource 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: - !RefmyPublicSubnet1- !RefmyPublicSubnet2LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplateVersion: !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::AutoScalingGroupressource qui envoie des notifications Amazon SNS lorsque les événements spécifiés se produisent. La NotificationConfigurations propriété spécifie la rubrique SNS dans laquelle CloudFormation une notification est envoyée et les événements qui entraîneront l'envoi CloudFormation de notifications. Lorsque les événements spécifiés par NotificationTypes se produisent, CloudFormation envoie une notification à la rubrique SNS spécifiée parTopicARN. Lorsque vous lancez la pile, elle CloudFormation crée une AWS::SNS::Subscriptionressource (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::LaunchTemplateressource 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-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !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 CreationPolicy des UpdatePolicy attributs à une AWS::AutoScaling::AutoScalingGroupressource.
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 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'MinInstancesInServiceattribut 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'attribut WaitOnResourceSignals est défini sur true. CloudFormation doit recevoir un signal de chaque nouvelle instance dans le délai PauseTime spécifié pour poursuivre la mise à jour. Pendant la mise à jour de la pile, les processus EC2 Auto Scaling suivants sont suspendus : HealthCheckReplaceUnhealthy,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::LaunchTemplateressource déclarée ailleurs dans le même modèle.
Pour plus d'informations sur les UpdatePolicy attributs CreationPolicy et, consultez la section Référence des attributs de ressource.
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-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber MaxSize: '5' MinSize: '3'
Création d'une politique de mise à l'échelle par étapes
Cet exemple montre une AWS::AutoScaling::ScalingPolicyressource 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' EC2 instances du groupe de 1 lorsque le seuil d'alarme est dépassé.
La AWS::CloudWatch::Alarmressource CPUAlarmHigh spécifie la politique de dimensionnement ASGScalingPolicyHigh comme l'action à exécuter lorsque l'alarme est en état ALARM (AlarmActions). La Dimensions propriété fait référence au nom logique d'une AWS::AutoScaling::AutoScalingGroupressource 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: !ReflogicalNamePolicyType: 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: !ReflogicalNameComparisonOperator: 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éation d’un groupe Auto Scaling en utilisant la sélection du type d’instance basée sur des attributs
Cet exemple montre une AWS::AutoScaling::AutoScalingGroupressource 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::LaunchTemplateressource 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-subnetIdAz3MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber Overrides: - InstanceRequirements: VCpuCount: Min:2Max:4MemoryMiB: Min:2048MaxSize: '5' MinSize: '1'
Exemples de configuration de lancement
Créez une configuration de lancement
Cet exemple montre une AWS::AutoScaling::LaunchConfigurationressource pour un groupe Auto Scaling dans laquelle vous spécifiez des valeurs pour les SecurityGroups propriétés ImageIdInstanceType, et. La SecurityGroups propriété spécifie à la fois le nom logique d'une AWS::EC2::SecurityGroupressource 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-02354e95b3exampleInstanceType:t3.microSecurityGroups: - !ReflogicalName-myExistingEC2SecurityGroup
Créez un groupe Auto Scaling qui utilise une configuration de lancement
Cet exemple montre une AWS::AutoScaling::AutoScalingGroupressource 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::LaunchConfigurationressource 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-subnetIdAz3LaunchConfigurationName: !RefmySimpleConfigMaxSize: '1' MinSize: '1'