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à.
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
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: !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::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
- !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::AutoScalingGroup
risorsa 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::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: !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 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’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
,, 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: !Ref logicalName
Version: !GetAtt logicalName
.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 si trova 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:
!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
Create an Auto Scaling group using attribute-based instance type selection
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: !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::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:
- !Ref logicalName
- 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: !Ref mySimpleConfig
MaxSize: '1'
MinSize: '1'