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 Auto EC2 Scaling.
Categorie dei frammenti
- Creare un gruppo Auto Scaling a istanza singola
- Crea un gruppo di Auto Scaling con un sistema di bilanciamento del carico collegato
- Crea un gruppo Auto Scaling con notifiche
- Crea un gruppo Auto Scaling che utilizza un e un CreationPolicyUpdatePolicy
- Creazione di una policy di dimensionamento per fasi
- Esempi di gruppi di istanze miste
- Esempi di configurazione di avvio
Creare un gruppo Auto Scaling a istanza singola
Questo esempio mostra una AWS::AutoScaling::AutoScalingGroup
risorsa 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 la sottorete applicabile IDs dal vostro account prima di creare lo stack. La LaunchTemplate
proprietà fa riferimento a una AWS::EC2::LaunchTemplate
risorsa 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 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
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplate
Version: !GetAttmyLaunchTemplate
.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::AutoScalingGroup
risorsa per il bilanciamento del carico su più server. Specifica i nomi logici delle AWS risorse dichiarate altrove nello stesso modello.
-
La
VPCZoneIdentifier
proprietà specifica i nomi logici di dueAWS::EC2::Subnet
risorse in cui verranno create le istanze EC2 del gruppo Auto Scaling: e.myPublicSubnet1
myPublicSubnet2
-
La
LaunchTemplate
proprietà specifica unaAWS::EC2::LaunchTemplate
risorsa con il nome logico.myLaunchTemplate
-
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, unaAWS::ElasticLoadBalancingV2::TargetGroup
risorsa con il nomemyTargetGroup
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
- !RefmyPublicSubnet2
LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplate
Version: !GetAttmyLaunchTemplate
.LatestVersionNumber MaxSize: '5' MinSize: '1' TargetGroupARNs: - !RefmyTargetGroup
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::AutoScalingGroup
risorsa che invia SNS notifiche Amazon quando si verificano gli eventi specificati. La NotificationConfigurations
proprietà specifica l'SNSargomento 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'SNSargomento specificato daTopicARN
. Quando avvii lo stack, AWS CloudFormation crea una AWS::SNS::Subscription
risorsa (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 la sottorete applicabile IDs dal vostro account prima di creare lo stack. La LaunchTemplate
proprietà fa riferimento al nome logico di una AWS::EC2::LaunchTemplate
risorsa 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: !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
Crea un gruppo Auto Scaling che utilizza un e un CreationPolicy
UpdatePolicy
L'esempio seguente mostra come aggiungere Attributo CreationPolicy UpdatePolicy attributi a una AWS::AutoScaling::AutoScalingGroup
risorsa.
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'MinInstancesInService
attributo 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'WaitOnResourceSignals
attributo è 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, i seguenti processi di EC2 Auto Scaling sono sospesiHealthCheck
: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 la sottorete applicabile IDs dal proprio account prima di creare lo stack. La LaunchTemplate
proprietà fa riferimento al nome logico di una AWS::EC2::LaunchTemplate
risorsa dichiarata altrove nello stesso modello.
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'
Creazione di una policy di dimensionamento per fasi
Questo esempio mostra una AWS::AutoScaling::ScalingPolicy
risorsa 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
è 1; pertanto, la policy incrementa di 1 il numero di EC2 istanze nel gruppo quando viene superata la soglia di allarme.
La AWS::CloudWatch::Alarm
risorsa CPUAlarmHigh
specifica la politica di scalabilità 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::AutoScalingGroup
risorsa 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: !ReflogicalName
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::AutoScalingGroup
risorsa 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 la sottorete applicabile IDs dal vostro account prima di creare lo stack. La LaunchTemplate
proprietà fa riferimento al nome logico di una AWS::EC2::LaunchTemplate
risorsa 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: !ReflogicalName
Version: !GetAttlogicalName
.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::LaunchConfiguration
risorsa per un gruppo Auto Scaling in cui si specificano i valori per le proprietà ImageId
InstanceType
, eSecurityGroups
. La SecurityGroups
proprietà specifica sia il nome logico di una AWS::EC2::SecurityGroup
risorsa 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-02354e95b3example
InstanceType:t3.micro
SecurityGroups: - !ReflogicalName
-myExistingEC2SecurityGroup
Creare un gruppo Auto Scaling che utilizza una configurazione di avvio
Questo esempio mostra una AWS::AutoScaling::AutoScalingGroup
risorsa 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 la sottorete applicabile IDs dal vostro account prima di creare lo stack. La LaunchConfigurationName
proprietà fa riferimento a una AWS::AutoScaling::LaunchConfiguration
risorsa con il nome mySimpleConfig
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: !RefmySimpleConfig
MaxSize: '1' MinSize: '1'