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 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éer un groupe Auto Scaling à instance unique
Cet exemple montre une ressource AWS::AutoScaling::AutoScalingGroup 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 propriété LaunchTemplate fait référence à une ressource AWS::EC2::LaunchTemplate dont le nom logique myLaunchTemplate 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éer un groupe Auto Scaling avec un équilibreur de charge associé
Cet exemple montre une ressource AWS::AutoScaling::AutoScalingGroup 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 propriété
LaunchTemplatespécifie une ressourceAWS::EC2::LaunchTemplateavec 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é, une ressourceAWS::ElasticLoadBalancingV2::TargetGroupportant 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éer un 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 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 propriété LaunchTemplate fait référence au nom logique d’une ressource AWS::EC2::LaunchTemplate 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éer un groupe Auto Scaling qui utilise un CreationPolicy et un UpdatePolicy
L’exemple suivant montre comment ajouter des attributs CreationPolicy et UpdatePolicy à une ressource AWS::AutoScaling::AutoScalingGroup.
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 propriété LaunchTemplate fait référence au nom logique d’une ressource AWS::EC2::LaunchTemplate déclarée ailleurs dans le même modèle.
Pour plus d’informations sur les attributs CreationPolicy et UpdatePolicy, consultez la 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 stratégie de mise à l’échelle par étapes
Cet exemple montre une ressource AWS::AutoScaling::ScalingPolicy qui étend le groupe Auto Scaling à l’aide d’une stratégie de mise à l’échelle par paliers. 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 ressource AWS::CloudWatch::Alarm CPUAlarmHigh spécifie la politique de mise à l’échelle ASGScalingPolicyHigh comme action à exécuter lorsque l’alarme est dans un état ALARM (AlarmActions). La propriété Dimensions fait référence au nom logique d’une ressource AWS::AutoScaling::AutoScalingGroup 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 ressource AWS::AutoScaling::AutoScalingGroup qui contient les informations nécessaires pour lancer un groupe d’instances mixtes à l’aide de la sélection de 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 propriété LaunchTemplate fait référence au nom logique d’une ressource AWS::EC2::LaunchTemplate 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 ressource AWS::AutoScaling::LaunchConfiguration pour un groupe Auto Scaling dans lequel vous spécifiez des valeurs pour les propriétés ImageId, InstanceType et SecurityGroups. 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éer un groupe Auto Scaling qui utilise une configuration de lancement
Cet exemple montre une ressource AWS::AutoScaling::AutoScalingGroup 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 propriété LaunchConfigurationName fait référence à une ressource AWS::AutoScaling::LaunchConfiguration dont le nom logique mySimpleConfig 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'