Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfigurieren Sie Amazon EC2 Auto Scaling Scaling-Ressourcen mit AWS CloudFormation
Die folgenden Beispiele zeigen verschiedene Ausschnitte, die in Vorlagen zur Verwendung mit Amazon EC2 Auto Scaling aufgenommen werden können.
Kategorien von Ausschnitten
- Eine Auto Scaling Scaling-Gruppe für eine einzelne Instanz erstellen
- Erstellen Sie eine Auto Scaling Scaling-Gruppe mit einem angeschlossenen Load Balancer
- Erstellen Sie eine Auto Scaling Scaling-Gruppe mit Benachrichtigungen
- Erstellen Sie eine Auto Scaling Scaling-Gruppe, die a CreationPolicy und a verwendet UpdatePolicy
- Erstellen Sie eine Skalierungsrichtlinie
- Gemischte Instances-Gruppen
- Beispiele für Launch-Konfigurationen
Eine Auto Scaling Scaling-Gruppe für eine einzelne Instanz erstellen
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup
Ressource mit einer einzigen Instanz, um Ihnen den Einstieg zu erleichtern. Die VPCZoneIdentifier
-Eigenschaft der Auto-Scaling-Gruppe gibt eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones an. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die LaunchTemplate
Eigenschaft verweist auf eine AWS::EC2::LaunchTemplate
Ressource mit dem logischen NamenmyLaunchTemplate
, der an anderer Stelle in Ihrer Vorlage definiert ist.
Anmerkung
Beispiele für Startvorlagen finden Sie Erstellen Sie Startvorlagen mit AWS CloudFormation im Abschnitt EC2 Amazon-Snippets und im Abschnitt Beispiele in der 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
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplate
Version: !GetAttmyLaunchTemplate
.LatestVersionNumber MaxSize: '1' MinSize: '1'
Erstellen Sie eine Auto Scaling Scaling-Gruppe mit einem angeschlossenen Load Balancer
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup
Ressource für den Lastenausgleich über mehrere Server. Es gibt die logischen Namen von AWS Ressourcen an, die an anderer Stelle in derselben Vorlage deklariert wurden.
-
Die
VPCZoneIdentifier
Eigenschaft gibt die logischen Namen von zweiAWS::EC2::Subnet
Ressourcen an, auf denen die EC2 Instances der Auto Scaling Scaling-Gruppe erstellt werden:myPublicSubnet1
undmyPublicSubnet2
. -
Die
LaunchTemplate
Eigenschaft gibt eineAWS::EC2::LaunchTemplate
Ressource mit dem logischen Namen anmyLaunchTemplate
. -
Die
TargetGroupARNs
-Eigenschaft listet die Zielgruppen für einen Application Load Balancer oder einen Network Load Balancer auf, der verwendet wird, um den Datenverkehr an die Auto-Scaling-Gruppe weiterzuleiten. In diesem Beispiel wird eine Zielgruppe angegeben, eineAWS::ElasticLoadBalancingV2::TargetGroup
Ressource mit dem logischen NamenmyTargetGroup
.
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
Weitere Informationen finden Sie auch unter
Ein detailliertes Beispiel, in dem eine Auto-Scaling-Gruppe mit einer Skalierungsrichtlinie zur Zielverfolgung-basierend auf der vordefinierten ALBRequestCountPerTarget
-Metrik für Ihren Application Load Balancer erstellt wird, finden Sie im Abschnitt Beispiele in der AWS::AutoScaling::ScalingPolicy
-Ressource.
Erstellen Sie eine Auto Scaling Scaling-Gruppe mit Benachrichtigungen
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup
Ressource, die SNS Amazon-Benachrichtigungen sendet, wenn die angegebenen Ereignisse eintreten. Die NotificationConfigurations
Eigenschaft gibt das SNS Thema an, an das eine Benachrichtigung AWS CloudFormation gesendet wird, und die Ereignisse, die AWS CloudFormation dazu führen, dass Benachrichtigungen gesendet werden. Wenn die von angegebenen Ereignisse NotificationTypes
eintreten, AWS CloudFormation wird eine Benachrichtigung an das von angegebene SNS Thema gesendetTopicARN
. Wenn Sie den Stack starten, AWS CloudFormation wird eine AWS::SNS::Subscription
Ressource (snsTopicForAutoScalingGroup
) erstellt, die in derselben Vorlage deklariert ist.
Die VPCZoneIdentifier
-Eigenschaft der Auto-Scaling-Gruppe gibt eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones an. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die LaunchTemplate
Eigenschaft verweist auf den logischen Namen einer AWS::EC2::LaunchTemplate
Ressource, die an anderer Stelle in derselben Vorlage deklariert wurde.
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
Erstellen Sie eine Auto Scaling Scaling-Gruppe, die a CreationPolicy
und a verwendet UpdatePolicy
Das folgende Beispiel zeigt, wie einer AWS::AutoScaling::AutoScalingGroup
Ressource UpdatePolicy Attribute hinzugefügt CreationPolicy Attribut werden.
Die Richtlinie zur Probenerstellung verhindert, dass die Auto Scaling Scaling-Gruppe CREATE_COMPLETE
den Status erreicht, bis sie AWS CloudFormation eine Count
Reihe von Erfolgssignalen erhält, wenn die Gruppe bereit ist. Um zu signalisieren, dass die Auto-Scaling-Gruppe bereit ist, wird ein cfn-signal-Hilfsskript, das den Benutzerdaten der Einführungsvorlage hinzugefügt wird (nicht gezeigt), auf den Instances ausgeführt. Wenn die Instances innerhalb des angegebenen Zeitraums kein Signal sendenTimeout
, CloudFormation wird davon ausgegangen, dass die Instances nicht erstellt wurden, CloudFormation schlägt die Ressourcenerstellung fehl und der Stack wird zurückgesetzt.
Die Beispielaktualisierungsrichtlinie weist CloudFormation an, mithilfe der AutoScalingRollingUpdate
Eigenschaft ein fortlaufendes Update durchzuführen. Die fortlaufende Aktualisierung führt Änderungen an der Auto-Scaling-Gruppe in kleinen Stapeln (für dieses Beispiel Instance nach Instance) basierend auf MaxBatchSize
durch und eine Pausenzeit zwischen Stapeln von Updates auf der Grundlage von PauseTime
. Das MinInstancesInService
Attribut gibt die Mindestanzahl von Instances an, die innerhalb der Auto Scaling Scaling-Gruppe in Betrieb sein müssen, während alte Instances CloudFormation aktualisiert werden.
Das WaitOnResourceSignals
Attribut ist auf gesetzttrue
. CloudFormationmuss von jeder neuen Instanz innerhalb des angegebenen Bereichs ein Signal empfangen, PauseTime
bevor mit dem Update fortgefahren werden kann. Während das Stack-Update läuft, werden die folgenden EC2 Auto Scaling Scaling-Prozesse ausgesetzt: HealthCheck
ReplaceUnhealthy
AZRebalance
,,AlarmNotification
, undScheduledActions
. Hinweis: Unterbrechen Sie die Prozesstypen Launch
, Terminate
oder AddToLoadBalancer
(wenn die Auto-Scaling-Gruppe mit Elastic Load Balancing verwendet wird) nicht, da dies die ordnungsgemäße Funktion der fortlaufenden Aktualisierung verhindern kann.
Die VPCZoneIdentifier
-Eigenschaft der Auto-Scaling-Gruppe gibt eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones an. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die LaunchTemplate
Eigenschaft verweist auf den logischen Namen einer AWS::EC2::LaunchTemplate
Ressource, die an anderer Stelle in derselben Vorlage deklariert wurde.
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'
Erstellen Sie eine Skalierungsrichtlinie
Dieses Beispiel zeigt eine AWS::AutoScaling::ScalingPolicy
Ressource, die die Auto Scaling Scaling-Gruppe mithilfe einer Step Scaling-Richtlinie skaliert. Die Eigenschaft AdjustmentType
ist auf ChangeInCapacity
festgelegt. Das bedeutet, dass der Parameter ScalingAdjustment
angibt, wie viele Instances hinzugefügt werden sollen (bei positivem Wert für ScalingAdjustment
) oder gelöscht werden sollen (bei negativem Wert). In diesem Beispiel ScalingAdjustment
ist es 1; daher erhöht die Richtlinie die Anzahl der EC2 Instanzen in der Gruppe um 1, wenn der Alarmschwellenwert überschritten wird.
Die AWS::CloudWatch::Alarm
Ressource CPUAlarmHigh
gibt die Skalierungsrichtlinie ASGScalingPolicyHigh
als die Aktion an, die ausgeführt werden soll, wenn sich der Alarm in einem ALARM Status () AlarmActions
befindet. Die Dimensions
Eigenschaft verweist auf den logischen Namen einer AWS::AutoScaling::AutoScalingGroup
Ressource, die an anderer Stelle in derselben Vorlage deklariert wurde.
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
Weitere Informationen finden Sie auch unter
Weitere Beispielvorlagen für Skalierungsrichtlinien finden Sie im Abschnitt Beispiele in der AWS::AutoScaling::ScalingPolicy
-Ressource.
Gemischte Instances-Gruppen
Erstellen einer Auto-Scaling-Gruppe mit attributbasierter Auswahl des Instance-Typs
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup
Ressource, die die Informationen zum Starten einer gemischten Instanzgruppe mithilfe der attributbasierten Instanztypauswahl enthält. Sie geben die Mindest- und Höchstwerte für die VCpuCount
-Eigenschaft und der Mindestwert für die MemoryMiB
-Eigenschaft ein. Alle Instance-Typen, die von der Auto-Scaling-Gruppe verwendet werden, müssen mit Ihren erforderlichen Instance-Attributen übereinstimmen.
Die VPCZoneIdentifier
-Eigenschaft der Auto-Scaling-Gruppe gibt eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones an. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die LaunchTemplate
Eigenschaft verweist auf den logischen Namen einer AWS::EC2::LaunchTemplate
Ressource, die an anderer Stelle in derselben Vorlage deklariert wurde.
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'
Beispiele für Launch-Konfigurationen
Erstellen einer Startkonfiguration
Dieses Beispiel zeigt eine AWS::AutoScaling::LaunchConfiguration
Ressource für eine Auto Scaling Scaling-Gruppe, in der Sie Werte für die SecurityGroups
Eigenschaften ImageId
InstanceType
, und angeben. Die SecurityGroups
Eigenschaft gibt sowohl den logischen Namen einer AWS::EC2::SecurityGroup
Ressource an, die an anderer Stelle in der Vorlage angegeben ist, als auch den Namen einer vorhandenen EC2 SicherheitsgruppemyExistingEC2SecurityGroup
.
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
Erstellen Sie eine Auto Scaling Scaling-Gruppe, die eine Startkonfiguration verwendet
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup
Ressource mit einer einzigen Instanz. Die VPCZoneIdentifier
-Eigenschaft der Auto-Scaling-Gruppe gibt eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones an. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die LaunchConfigurationName
Eigenschaft verweist auf eine AWS::AutoScaling::LaunchConfiguration
Ressource mit dem logischen NamenmySimpleConfig
, der in Ihrer Vorlage definiert ist.
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'