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 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 Amazon EC2 Auto Scaling Scaling-Gruppe mit einer einzigen Instanz erstellen
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup-Ressource mit einer einzelnen Instance, um Ihnen den Einstieg zu erleichtern. Die VPCZoneIdentifier Eigenschaft der Amazon EC2 Auto Scaling Scaling-Gruppe spezifiziert eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die Eigenschaft LaunchTemplate verweist auf eine AWS::EC2::LaunchTemplate-Ressource mit dem logischen Namen myLaunchTemplate, die an anderer Stelle in Ihrer Vorlage definiert ist.
Anmerkung
Beispiele für Startvorlagen finden Sie Erstellen Sie Startvorlagen mit 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-subnetIdAz3LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplateVersion: !GetAttmyLaunchTemplate.LatestVersionNumber MaxSize: '1' MinSize: '1'
Erstellen Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe mit einem angeschlossenen Load Balancer
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup-Ressource für den Lastausgleich über mehrere Server. Es gibt die logischen Namen von AWS Ressourcen an, die an anderer Stelle in derselben Vorlage deklariert wurden.
-
Die
VPCZoneIdentifierEigenschaft gibt die logischen Namen von zweiAWS::EC2::SubnetRessourcen an, für die die EC2 Instances der Amazon EC2 Auto Scaling Scaling-Gruppe erstellt werden:myPublicSubnet1undmyPublicSubnet2. -
Die Eigenschaft
LaunchTemplategibt eineAWS::EC2::LaunchTemplateRessource mit dem logischen NamenmyLaunchTemplatean. -
Die
TargetGroupARNsEigenschaft listet die Zielgruppen für einen Application Load Balancer oder Network Load Balancer auf, der zur Weiterleitung von Datenverkehr an die Amazon EC2 Auto Scaling Scaling-Gruppe verwendet wird. In diesem Beispiel wird eine Zielgruppe angegeben, eineAWS::ElasticLoadBalancingV2::TargetGroupRessource 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: - !RefmyPublicSubnet1- !RefmyPublicSubnet2LaunchTemplate: LaunchTemplateId: !RefmyLaunchTemplateVersion: !GetAttmyLaunchTemplate.LatestVersionNumber MaxSize: '5' MinSize: '1' TargetGroupARNs: - !RefmyTargetGroup
Weitere Informationen finden Sie auch unter
Ein detailliertes Beispiel, das eine Amazon EC2 Auto Scaling-Gruppe mit einer Skalierungsrichtlinie für die Zielverfolgung erstellt, die auf der ALBRequestCountPerTarget vordefinierten Metrik für Ihren Application Load Balancer basiert, finden Sie im Abschnitt Beispiele in der AWS::AutoScaling::ScalingPolicy Ressource.
Erstellen Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe mit Benachrichtigungen
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup-Ressource, die Amazon SNS-Benachrichtigungen sendet, wenn die angegebenen Ereignisse eintreten. Die NotificationConfigurations Eigenschaft gibt das SNS-Thema an, an das eine Benachrichtigung CloudFormation gesendet wird, und die Ereignisse, die CloudFormation dazu führen, dass Benachrichtigungen gesendet werden. Wenn die von angegebenen Ereignisse NotificationTypes eintreten, CloudFormation wird eine Benachrichtigung an das von angegebene SNS-Thema gesendet. TopicARN Wenn Sie den Stack starten, CloudFormation wird eine AWS::SNS::SubscriptionRessource (snsTopicForAutoScalingGroup) erstellt, die in derselben Vorlage deklariert ist.
Die VPCZoneIdentifier Eigenschaft der Amazon EC2 Auto Scaling Scaling-Gruppe spezifiziert eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die Eigenschaft LaunchTemplate verweist auf den logischen Namen einer AWS::EC2::LaunchTemplate-Ressource, die an anderer Stelle in derselben Vorlage deklariert ist.
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
Erstellen Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe, die a CreationPolicy und a verwendet UpdatePolicy
Das folgende Beispiel zeigt, wie Sie die Attribute CreationPolicy und UpdatePolicy zu einer AWS::AutoScaling::AutoScalingGroup-Ressource hinzufügen.
Die Richtlinie zur Probenerstellung verhindert, dass die Amazon EC2 Auto Scaling Scaling-Gruppe CREATE_COMPLETE den Status erreicht, bis sie CloudFormation eine Count Reihe von Erfolgssignalen erhält, wenn die Gruppe bereit ist. Um zu signalisieren, dass die Amazon EC2 Auto Scaling Scaling-Gruppe bereit ist, wird ein cfn-signal Hilfsskript, das den Benutzerdaten der Startvorlage hinzugefügt wurde (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, die Ressourcenerstellung schlägt fehl und CloudFormation der Stack wird zurückgesetzt.
Die Beispielaktualisierungsrichtlinie weist CloudFormation an, mithilfe der AutoScalingRollingUpdate Eigenschaft ein fortlaufendes Update durchzuführen. Das fortlaufende Update nimmt Änderungen an der Amazon EC2 Auto Scaling Scaling-Gruppe in kleinen Batches vor (in diesem Beispiel Instanz für Instance) auf der Grundlage von MaxBatchSize und einer Pausenzeit zwischen Batches von Updates basierend auf dem. PauseTime Das MinInstancesInService Attribut gibt die Mindestanzahl von Instances an, die innerhalb der Amazon EC2 Auto Scaling Scaling-Gruppe in Betrieb sein müssen, während alte Instances CloudFormation aktualisiert werden.
Das WaitOnResourceSignals-Attribut ist auf true festgelegt. CloudFormation muss von jeder neuen Instance innerhalb der angegebenen PauseTime ein Signal erhalten, bevor die Aktualisierung fortgesetzt wird. Während das Stack-Update läuft, werden die folgenden EC2 Auto Scaling Scaling-Prozesse ausgesetzt: HealthCheck ReplaceUnhealthyAZRebalance,,AlarmNotification, undScheduledActions. Hinweis: Unterbrechen Sie nicht die Prozesstypen LaunchTerminate,, oder AddToLoadBalancer (falls die Amazon EC2 Auto Scaling Scaling-Gruppe mit ELB verwendet wird), da dies dazu führen kann, dass das fortlaufende Update nicht ordnungsgemäß funktioniert.
Die VPCZoneIdentifier Eigenschaft der Amazon EC2 Auto Scaling Scaling-Gruppe spezifiziert eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die Eigenschaft LaunchTemplate verweist auf den logischen Namen einer AWS::EC2::LaunchTemplate-Ressource, die an anderer Stelle in derselben Vorlage deklariert ist.
Weitere Informationen zu den Attributen CreationPolicy und UpdatePolicy finden Sie unter Ressourcenattribut-Referenz.
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'
Erstellen Sie eine Skalierungsrichtlinie
Dieses Beispiel zeigt eine AWS::AutoScaling::ScalingPolicyRessource, die die Amazon EC2 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 Instances in der Gruppe um 1, wenn der Alarmschwellenwert überschritten wird.
Die Ressource AWS::CloudWatch::Alarm CPUAlarmHigh legt die Skalierungsrichtlinie ASGScalingPolicyHigh als Aktion fest, die ausgeführt werden soll, wenn sich der Alarm im Zustand ALARM befindet (AlarmActions). Die Eigenschaft Dimensions verweist auf den logischen Namen einer AWS::AutoScaling::AutoScalingGroup-Ressource, die an anderer Stelle in derselben Vorlage deklariert ist.
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
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 Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe mithilfe der attributbasierten Instance-Typauswahl
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup-Ressource, die die Informationen zum Starten einer gemischten Instancegruppe mit attributbasierter Instancetypauswahl enthält. Sie geben die Mindest- und Höchstwerte für die VCpuCount-Eigenschaft und der Mindestwert für die MemoryMiB-Eigenschaft ein. Alle von der Amazon EC2 Auto Scaling Scaling-Gruppe verwendeten Instance-Typen müssen Ihren erforderlichen Instance-Attributen entsprechen.
Die VPCZoneIdentifier Eigenschaft der Amazon EC2 Auto Scaling Scaling-Gruppe spezifiziert eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die Eigenschaft LaunchTemplate verweist auf den logischen Namen einer AWS::EC2::LaunchTemplate-Ressource, die an anderer Stelle in derselben Vorlage deklariert ist.
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'
Beispiele für Launch-Konfigurationen
Erstellen einer Startkonfiguration
Dieses Beispiel zeigt eine AWS::AutoScaling::LaunchConfigurationRessource für eine Amazon EC2 Auto Scaling Scaling-Gruppe, in der Sie Werte für die SecurityGroups Eigenschaften ImageIdInstanceType, und angeben. Die SecurityGroups Eigenschaft gibt sowohl den logischen Namen einer AWS::EC2::SecurityGroupRessource an, die an anderer Stelle in der Vorlage angegeben ist, als auch eine bestehende EC2 Sicherheitsgruppe mit dem NamenmyExistingEC2SecurityGroup.
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
Erstellen Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe, die eine Startkonfiguration verwendet
Dieses Beispiel zeigt eine AWS::AutoScaling::AutoScalingGroup-Ressource mit einer einzigen Instance. Die VPCZoneIdentifier Eigenschaft der Amazon EC2 Auto Scaling Scaling-Gruppe spezifiziert eine Liste vorhandener Subnetze in drei verschiedenen Availability Zones. Sie müssen das entsprechende Subnetz IDs aus Ihrem Konto angeben, bevor Sie Ihren Stack erstellen. Die Eigenschaft LaunchConfigurationName verweist auf eine AWS::AutoScaling::LaunchConfiguration-Ressource mit dem logischen Namen mySimpleConfig, die 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-subnetIdAz3LaunchConfigurationName: !RefmySimpleConfigMaxSize: '1' MinSize: '1'