Configura le risorse di Amazon EC2 Auto Scaling con AWS CloudFormation - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configura le risorse di Amazon EC2 Auto Scaling con AWS CloudFormation

Gli esempi seguenti mostrano diversi frammenti da includere nei modelli da utilizzare con Amazon EC2 Auto Scaling.

Creare un gruppo Auto Scaling a istanza singola

Questo esempio mostra una AWS::AutoScaling::AutoScalingGrouprisorsa con una singola istanza per aiutarti a iniziare. La proprietà VPCZoneIdentifier del gruppo con scalabilità automatica specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare gli ID di sottorete applicabili dal proprio account prima di creare lo stack. La LaunchTemplate proprietà fa riferimento a una AWS::EC2::LaunchTemplaterisorsa con il nome myLaunchTemplate logico definito altrove nel modello.

Nota

Per esempi di modelli di lancio, Crea modelli di lancio con AWS CloudFormation consulta la sezione frammenti di Amazon EC2 e la sezione Esempi nella risorsa. AWS::EC2::LaunchTemplate

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: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber MaxSize: '1' MinSize: '1'

Crea un gruppo di Auto Scaling con un sistema di bilanciamento del carico collegato

Questo esempio mostra una AWS::AutoScaling::AutoScalingGrouprisorsa per il bilanciamento del carico su più server. Specifica i nomi logici delle AWS risorse dichiarate altrove nello stesso modello.

  1. La VPCZoneIdentifier proprietà specifica i nomi logici di due AWS::EC2::Subnetrisorse in cui verranno create le istanze EC2 del gruppo Auto Scaling: e. myPublicSubnet1 myPublicSubnet2

  2. La LaunchTemplate proprietà specifica una AWS::EC2::LaunchTemplaterisorsa con il nome logico. myLaunchTemplate

  3. La proprietà TargetGroupARNs elenca i gruppi di destinazione per Application Load Balancer o Network Load Balancer utilizzati per instradare il traffico al gruppo con dimensionamento automatico. In questo esempio, viene specificato un gruppo target, una AWS::ElasticLoadBalancingV2::TargetGrouprisorsa con il nome myTargetGroup logico.

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 - !Ref myPublicSubnet2 LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber MaxSize: '5' MinSize: '1' TargetGroupARNs: - !Ref myTargetGroup

Consulta anche

Per un esempio dettagliato nel quale viene creato un gruppo con scalabilità automatica con una policy di dimensionamento di tracciamento della destinazione basato sul parametro predefinito ALBRequestCountPerTarget per Application Load Balancer, consulta la sezione Esempi nella risorsa AWS::AutoScaling::ScalingPolicy.

Crea un gruppo Auto Scaling con notifiche

Questo esempio mostra una AWS::AutoScaling::AutoScalingGrouprisorsa che invia notifiche Amazon SNS quando si verificano gli eventi specificati. La NotificationConfigurations proprietà specifica l'argomento SNS a cui AWS CloudFormation invia una notifica e gli eventi che AWS CloudFormation provocheranno l'invio delle notifiche. Quando si NotificationTypes verificano gli eventi specificati da, AWS CloudFormation invierà una notifica all'argomento SNS specificato da. TopicARN Quando avvii lo stack, AWS CloudFormation crea una AWS::SNS::Subscriptionrisorsa (snsTopicForAutoScalingGroup) dichiarata all'interno dello stesso modello.

La proprietà VPCZoneIdentifier del gruppo con scalabilità automatica specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare gli ID di sottorete applicabili dal proprio account prima di creare lo stack. La LaunchTemplate proprietà fa riferimento al nome logico di una AWS::EC2::LaunchTemplaterisorsa dichiarata altrove nello stesso modello.

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: !Ref logicalName Version: !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

Crea un gruppo Auto Scaling che utilizza un e un CreationPolicyUpdatePolicy

L'esempio seguente mostra come aggiungere Attributo CreationPolicy UpdatePolicy attributi a una AWS::AutoScaling::AutoScalingGrouprisorsa.

La politica di creazione del campione impedisce al gruppo Auto Scaling di raggiungere CREATE_COMPLETE lo stato finché non AWS CloudFormation riceve un Count numero di segnali di successo quando il gruppo è pronto. Per segnalare che il gruppo con scalabilità automatica è pronto, sulle istanze viene eseguito uno script helper cfn-signal aggiunto ai dati utente del modello di avvio (non visualizzato). Se le istanze non inviano un segnale entro il limite specificatoTimeout, CloudFormation presuppone che le istanze non siano state create, la creazione della risorsa fallisce e ripristina lo stack CloudFormation .

La politica di aggiornamento di esempio indica di CloudFormation eseguire un aggiornamento continuo utilizzando la proprietà. AutoScalingRollingUpdate L'aggiornamento in sequenza modifica il gruppo con dimensionamento automatico in piccoli batch (per questo esempio, istanza per istanza) in base a MaxBatchSize e alla pausa che intercorre tra i batch di aggiornamento in base al PauseTime. L'MinInstancesInServiceattributo specifica il numero minimo di istanze che devono essere in servizio all'interno del gruppo Auto Scaling CloudFormation durante l'aggiornamento delle vecchie istanze.

L'WaitOnResourceSignalsattributo è impostato su. true CloudFormationdeve ricevere un segnale da ogni nuova istanza all'interno del valore specificato PauseTime prima di continuare l'aggiornamento. Durante l'aggiornamento dello stack, vengono sospesi i seguenti processi di EC2 Auto Scaling: HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification e ScheduledActions. Nota: non sospendere i tipi di processo Launch, Terminate, o AddToLoadBalancer (se il Auto Scaling gruppo viene utilizzato con Elastic Load Balancing) perché in tal modo è possibile impedire il corretto funzionamento dell'aggiornamento in sequenza.

La proprietà VPCZoneIdentifier del gruppo con scalabilità automatica specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare gli ID di sottorete applicabili dal proprio account prima di creare lo stack. La LaunchTemplate proprietà fa riferimento al nome logico di una AWS::EC2::LaunchTemplaterisorsa dichiarata altrove nello stesso modello.

JSON

{ "Resources":{ "myASG":{ "CreationPolicy":{ "ResourceSignal":{ "Count":"3", "Timeout":"PT15M" } }, "UpdatePolicy":{ "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"1", "PauseTime":"PT12M5S", "WaitOnResourceSignals":"true", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions" ] } }, "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: '1' MaxBatchSize: '1' PauseTime: PT12M5S WaitOnResourceSignals: true SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MaxSize: '5' MinSize: '3'

Creazione di una policy di dimensionamento per fasi

Questo esempio mostra una AWS::AutoScaling::ScalingPolicyrisorsa che ridimensiona il gruppo Auto Scaling utilizzando una politica di scalabilità a fasi. La proprietà AdjustmentType specifica ChangeInCapacity, il che significa che ScalingAdjustment rappresenta il numero di istanze da aggiungere (se ScalingAdjustment è positiva) o eliminare (se è negativa). In questo esempio, ScalingAdjustment corrisponde a 1, perciò la policy aumenta il numero di istanze EC2 nel gruppo di 1 quando viene toccata la soglia dell'allarme.

La AWS::CloudWatch::Alarmrisorsa CPUAlarmHigh specifica la politica di ridimensionamento ASGScalingPolicyHigh come azione da eseguire quando l'allarme è in uno stato ALARM (). AlarmActions La Dimensions proprietà fa riferimento al nome logico di una AWS::AutoScaling::AutoScalingGrouprisorsa dichiarata altrove nello stesso modello.

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: !Ref logicalName ComparisonOperator: GreaterThanThreshold MetricName: CPUUtilization

Consulta anche

Per altri modelli di esempio per le policy di dimensionamento, consulta la sezione Esempi nella risorsa AWS::AutoScaling::ScalingPolicy.

Esempi di gruppi di istanze miste

Crea un gruppo con scalabilità automatica utilizzando la selezione del tipo di istanza basata su attributi

Questo esempio mostra una AWS::AutoScaling::AutoScalingGrouprisorsa che contiene le informazioni per avviare un gruppo di istanze miste utilizzando la selezione del tipo di istanza basata sugli attributi. Puoi specificare il valore minimo e massimo per la proprietà VCpuCount e il valore minimo per la proprietà MemoryMiB. Tutti i tipi di istanza utilizzati dal gruppo con scalabilità automatica devono rispettare agli attributi dell'istanza richiesti.

La proprietà VPCZoneIdentifier del gruppo con scalabilità automatica specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare gli ID di sottorete applicabili dal proprio account prima di creare lo stack. La LaunchTemplate proprietà fa riferimento al nome logico di una AWS::EC2::LaunchTemplaterisorsa dichiarata altrove nello stesso modello.

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: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber Overrides: - InstanceRequirements: VCpuCount: Min: 2 Max: 4 MemoryMiB: Min: 2048 MaxSize: '5' MinSize: '1'

Esempi di configurazione di avvio

Creazione di una configurazione di avvio

Questo esempio mostra una AWS::AutoScaling::LaunchConfigurationrisorsa per un gruppo Auto Scaling in cui si specificano i valori per le proprietà ImageIdInstanceType, eSecurityGroups. La SecurityGroups proprietà specifica sia il nome logico di una AWS::EC2::SecurityGrouprisorsa specificato altrove nel modello, sia un gruppo di sicurezza EC2 esistente denominato. 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: - !Ref logicalName - myExistingEC2SecurityGroup

Creare un gruppo Auto Scaling che utilizza una configurazione di avvio

Questo esempio mostra una AWS::AutoScaling::AutoScalingGrouprisorsa con una singola istanza. La proprietà VPCZoneIdentifier del gruppo con scalabilità automatica specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare gli ID di sottorete applicabili dal proprio account prima di creare lo stack. La LaunchConfigurationName proprietà fa riferimento a una AWS::AutoScaling::LaunchConfigurationrisorsa con mySimpleConfig il nome logico definito nel modello.

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: !Ref mySimpleConfig MaxSize: '1' MinSize: '1'