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 CloudFormation
Gli esempi seguenti mostrano diversi frammenti da includere nei modelli da utilizzare con Amazon Auto EC2 Scaling.
Categorie dei frammenti
Creazione di un gruppo Auto Scaling con una singola istanza
Questo esempio mostra una risorsa AWS::AutoScaling::AutoScalingGroup con una singola istanza per aiutarti a iniziare. La proprietà VPCZoneIdentifier del gruppo Auto Scaling specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. Devi specificare la sottorete applicabile IDs dal tuo account prima di creare lo stack. La proprietà LaunchTemplate fa riferimento a una risorsa AWS::EC2::LaunchTemplate con il nome logico myLaunchTemplate definito altrove nel modello.
Nota
Per esempi di modelli di lancio, Crea modelli di lancio con CloudFormation consulta la sezione Amazon EC2 snippet e la sezione Esempi nella AWS::EC2::LaunchTemplate risorsa.
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'
Creazione di un gruppo Auto Scaling con un bilanciatore del carico allegato
Questo esempio mostra una risorsa AWS::AutoScaling::AutoScalingGroup per il bilanciamento del carico su più server. Specifica i nomi logici delle AWS risorse dichiarate altrove nello stesso modello.
-
La
VPCZoneIdentifierproprietà specifica i nomi logici di dueAWS::EC2::Subnetrisorse in cui verranno create le istanze EC2 del gruppo Auto Scaling: e.myPublicSubnet1myPublicSubnet2 -
La proprietà
LaunchTemplatespecifica una risorsaAWS::EC2::LaunchTemplatecon il nome logicomyLaunchTemplate. -
La proprietà
TargetGroupARNselenca i gruppi di destinazione per Application Load Balancer o Network Load Balancer utilizzati per instradare il traffico al gruppo Auto Scaling. In questo esempio viene specificato un gruppo di destinazione, una risorsaAWS::ElasticLoadBalancingV2::TargetGroupcon il nome logicomyTargetGroup.
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
Consulta anche
Per un esempio dettagliato nel quale viene creato un gruppo Auto Scaling 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.
Creazione di un gruppo Auto Scaling con notifiche
Questo esempio illustra una risorsa AWS::AutoScaling::AutoScalingGroup che invia notifiche Amazon SNS quando hanno luogo gli eventi specificati. La NotificationConfigurations proprietà specifica l'argomento SNS a cui CloudFormation invia una notifica e gli eventi che provocheranno l'invio delle notifiche. CloudFormation Quando si NotificationTypes verificano gli eventi specificati da, CloudFormation invierà una notifica all'argomento SNS specificato da. TopicARN Quando avvii lo stack, CloudFormation crea una AWS::SNS::Subscriptionrisorsa (snsTopicForAutoScalingGroup) dichiarata all'interno dello stesso modello.
La proprietà VPCZoneIdentifier del gruppo Auto Scaling specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. Devi specificare la sottorete applicabile IDs dal tuo account prima di creare lo stack. La proprietà LaunchTemplate fa riferimento al nome logico di una risorsa AWS::EC2::LaunchTemplate 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-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
Creazione di un gruppo Auto Scaling usando una CreationPolicy e una UpdatePolicy
L’esempio seguente mostra come aggiungere attributi CreationPolicy e UpdatePolicy a una risorsa AWS::AutoScaling::AutoScalingGroup.
La politica di creazione del campione impedisce al gruppo Auto Scaling di raggiungere CREATE_COMPLETE lo stato finché non CloudFormation riceve un Count numero di segnali di successo quando il gruppo è pronto. Per segnalare che il gruppo Auto Scaling è 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 Auto Scaling 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’attributo WaitOnResourceSignals viene impostato su true. CloudFormation deve ricevere un segnale da ogni nuova istanza entro il PauseTime specificato prima di procedere con l'aggiornamento. Durante l'aggiornamento dello stack, i seguenti processi di EC2 Auto Scaling sono sospesiHealthCheck:ReplaceUnhealthy,, AZRebalanceAlarmNotification, e. ScheduledActions Nota: non sospendere i tipi di processo LaunchTerminate, o AddToLoadBalancer (se il gruppo Auto Scaling viene utilizzato con ELB) perché così facendo si può impedire il corretto funzionamento dell'aggiornamento progressivo.
La proprietà VPCZoneIdentifier del gruppo Auto Scaling specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare la sottorete applicabile IDs dal vostro account prima di creare lo stack. La proprietà LaunchTemplate fa riferimento al nome logico di una risorsa AWS::EC2::LaunchTemplate dichiarata altrove nello stesso modello.
Per ulteriori informazioni sugli attributi CreationPolicy e UpdatePolicy, consulta Riferimento attributo della risorsa.
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'
Creazione di una policy di dimensionamento per fasi
Questo esempio illustra una AWS::AutoScaling::ScalingPolicy che aumenta orizzontalmente il gruppo Auto Scaling utilizzando una semplice policy di dimensionamento. 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 è 1; pertanto, la policy incrementa di 1 il numero di EC2 istanze nel gruppo quando viene superata la soglia di allarme.
La risorsa AWS::CloudWatch::Alarm CPUAlarmHigh specifica la policy di dimensionamento ASGScalingPolicyHigh come operazione da eseguire quando l’allarme è in uno stato ALARM (AlarmActions). La proprietà Dimensions fa riferimento al nome logico di una risorsa AWS::AutoScaling::AutoScalingGroup 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: !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
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 Auto Scaling utilizzando la selezione del tipo di istanza basata su attributi
Questo esempio mostra una risorsa AWS::AutoScaling::AutoScalingGroup che contiene le informazioni per avviare un gruppo di istanze miste utilizzando la selezione del tipo di istanza basata su 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 Auto Scaling devono rispettare agli attributi dell’istanza richiesti.
La proprietà VPCZoneIdentifier del gruppo Auto Scaling specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare la sottorete applicabile IDs dal proprio account prima di creare lo stack. La proprietà LaunchTemplate fa riferimento al nome logico di una risorsa AWS::EC2::LaunchTemplate 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-subnetIdAz3MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber Overrides: - InstanceRequirements: VCpuCount: Min:2Max:4MemoryMiB: Min:2048MaxSize: '5' MinSize: '1'
Esempi di configurazione di avvio
Creazione di una configurazione di avvio
Questo esempio illustra una risorsa AWS::AutoScaling::LaunchConfiguration per un gruppo Auto Scaling nel quale vengono specificati valori per le proprietà ImageId, InstanceType e SecurityGroups. La SecurityGroups proprietà specifica sia il nome logico di una AWS::EC2::SecurityGrouprisorsa specificato altrove nel modello, sia un gruppo di EC2 sicurezza 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-02354e95b3exampleInstanceType:t3.microSecurityGroups: - !ReflogicalName-myExistingEC2SecurityGroup
Creazione di un gruppo Auto Scaling utilizzando una configurazione di avvio
Questo esempio mostra una risorsa AWS::AutoScaling::AutoScalingGroup con una singola istanza. La proprietà VPCZoneIdentifier del gruppo Auto Scaling specifica un elenco di sottoreti esistenti in diverse zone di disponibilità. È necessario specificare la sottorete applicabile IDs dal proprio account prima di creare lo stack. La proprietà LaunchConfigurationName fa riferimento a una risorsa AWS::AutoScaling::LaunchConfiguration con il nome logico mySimpleConfig 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-subnetIdAz3LaunchConfigurationName: !RefmySimpleConfigMaxSize: '1' MinSize: '1'