Migrieren Sie AWS CloudFormation Stacks zu Startvorlagen - Amazon EC2 Auto Scaling

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.

Migrieren Sie AWS CloudFormation Stacks zu Startvorlagen

Sie können Ihre vorhandenen AWS CloudFormation Stack-Vorlagen von Startkonfigurationen zu Startvorlagen migrieren. Fügen Sie dazu eine Startvorlage direkt zu einer vorhandenen Stack-Vorlage hinzu und verknüpfen Sie die Startvorlage dann mit der Auto-Scaling-Gruppe in der Stack-Vorlage. Verwenden Sie anschließend die geänderte Vorlage zum Aktualisieren Ihres Stacks.

Bei der Migration zu Startvorlagen spart Ihnen dieses Thema Zeit, da es Anweisungen zum Umschreiben der Startkonfigurationen in Ihren CloudFormation Stack-Vorlagen als Startvorlagen enthält. Weitere Informationen zum Migrieren von Startkonfigurationen in Startvorlagen finden Sie unter Migrieren Sie Ihre Auto Scaling Scaling-Gruppen, um Vorlagen zu starten.

Auto-Scaling-Gruppen finden, die eine Startkonfiguration verwenden

So finden Sie Auto-Scaling-Gruppen, die eine Startkonfiguration verwenden
  • Verwenden Sie den folgenden Befehl describe-auto-scaling-groups, um die Namen der Auto-Scaling-Gruppen aufzulisten, die Startkonfigurationen in der angegebenen Region verwenden. Fügen Sie die --filters Option hinzu, die Ergebnisse auf Gruppen einzugrenzen, die einem CloudFormation Stack zugeordnet sind (durch Filtern nach dem aws:cloudformation:stack-name Tag-Schlüssel).

    aws autoscaling describe-auto-scaling-groups --region REGION \ --filters Name=tag-key,Values=aws:cloudformation:stack-name \ --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'

    Das folgende Beispiel zeigt eine Ausgabe.

    [ "{stack-name}-group-1", "{stack-name}-group-2", "{stack-name}-group-3" ]

    Sie finden weitere nützliche AWS CLI Befehle, um Auto Scaling Scaling-Gruppen für die Migration zu finden und die Ausgabe zu filternMigrieren Sie Ihre Auto Scaling Scaling-Gruppen, um Vorlagen zu starten.

Wichtig

Wenn Ihre Stack-Ressourcen AWSEB in ihrem Namen stehen, bedeutet das, dass sie durch erstellt wurden AWS Elastic Beanstalk. In diesem Fall müssen Sie die Beanstalk-Umgebung aktualisieren, um Elastic Beanstalk anzuweisen, die Startkonfiguration zu entfernen und sie durch eine Startvorlage zu ersetzen.

Aktualisieren eines Stacks zur Verwendung einer Startvorlage

Befolgen Sie die Schritte in diesem Abschnitt, um Folgendes zu tun:

  • Schreiben Sie die Startkonfiguration als Startvorlage um und verwenden Sie die entsprechenden Eigenschaften der Startvorlage.

  • Verknüpfen Sie die neue Startvorlage mit der Auto-Scaling-Gruppe.

  • Stellen Sie diese Updates bereit.

So ändern Sie die Stack-Vorlage und aktualisieren den Stack
  1. Folgen Sie den gleichen allgemeinen Verfahren zum Ändern der Stack-Vorlage, die im AWS CloudFormation Benutzerhandbuch unter Ändern einer Stack-Vorlage beschrieben sind.

  2. Schreiben Sie die Startkonfiguration in eine Startvorlage um. Sehen Sie sich das folgende Beispiel an:

    Beispiel: Eine einfache Startkonfiguration

    --- Resources: myLaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroups: - !Ref EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}

    Beispiel: Das Äquivalent zur Startvorlage

    --- Resources: myLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateName: !Sub ${AWS::StackName}-launch-template LaunchTemplateData: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroupIds: - Ref! EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -x yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}

    Referenzinformationen zu allen Eigenschaften, die Amazon EC2 unterstützt, finden Sie AWS::EC2::LaunchTemplateim AWS CloudFormation Benutzerhandbuch.

    Beachten Sie, dass die Startvorlage die Eigenschaft LaunchTemplateName mit einem Wert von !Sub ${AWS::StackName}-launch-template enthält. Dies ist erforderlich, wenn der Name der Startvorlage den Namen des Stacks enthalten soll.

  3. Wenn die Eigenschaft IamInstanceProfile in Ihrer Startkonfiguration vorhanden ist, müssen Sie sie in eine Struktur umwandeln und entweder den Namen oder den ARN des Instance-Profils angeben. Ein Beispiel finden Sie unter AWS::EC2::LaunchTemplate.

  4. Wenn die Eigenschaften AssociatePublicIpAddress, InstanceMonitoring oder PlacementTenancy in Ihrer Startkonfiguration vorhanden sind, müssen Sie diese in eine Struktur umwandeln. Beispiele finden Sie unter AWS::EC2::LaunchTemplate.

    Eine Ausnahme besteht, wenn der Wert für die Eigenschaft MapPublicIpOnLaunch in den Teilnetzen, die Sie für Ihre Auto-Scaling-Gruppe verwendet haben, mit dem Wert für die Eigenschaft AssociatePublicIpAddress in Ihrer Startkonfiguration übereinstimmt. In diesem Fall können Sie die AssociatePublicIpAddress-Eigenschaft ignorieren. Die AssociatePublicIpAddress-Eigenschaft wird nur verwendet, um die MapPublicIpOnLaunch-Eigenschaft zu überschreiben und zu ändern, ob Instances beim Start eine öffentliche IPv4-Adresse erhalten.

  5. Sie können Sicherheitsgruppen aus der SecurityGroups-Eigenschaft an eine von zwei Stellen in Ihrer Startvorlage kopieren. Normalerweise kopieren Sie die Sicherheitsgruppen in die SecurityGroupIds-Eigenschaft. Wenn Sie jedoch in Ihrer Startvorlage eine NetworkInterfaces-Struktur erstellen, um die AssociatePublicIpAddress-Eigenschaft anzugeben, müssen Sie stattdessen die Sicherheitsgruppen in die Groups-Eigenschaft der Netzwerkschnittstelle kopieren.

  6. Wenn in Ihrer Startkonfiguration BlockDeviceMapping-Strukturen vorhanden sind und NoDevice auf true gesetzt ist, müssen Sie in Ihrer Startvorlage eine leere Zeichenfolge für NoDevice angeben, damit Amazon EC2 das Gerät auslässt.

  7. Wenn die Eigenschaft SpotPrice in Ihrer Startkonfiguration vorhanden ist, empfehlen wir Ihnen, sie in Ihrer Startvorlage wegzulassen. Ihre Spot Instance wird zum aktuellen Spot-Preis gestartet. Dieser Preis wird niemals den On-Demand-Preis überschreiten.

    Um Spot-Instances anzufordern, haben Sie zwei Optionen, die sich gegenseitig ausschließen:

    • Die erste Möglichkeit besteht darin, die InstanceMarketOptions-Struktur in Ihrer Startvorlage zu verwenden (nicht empfohlen). Weitere Informationen finden Sie AWS::EC2::LaunchTemplate InstanceMarketOptionsim AWS CloudFormation Benutzerhandbuch.

    • Die andere besteht darin, Ihrer Auto-Scaling-Gruppe eine MixedInstancesPolicy-Struktur hinzuzufügen. Auf diese Weise stehen Ihnen mehr Optionen zur Verfügung, wie Sie die Anfrage stellen können. Eine Spot-Instance-Anfrage in Ihrer Startvorlage unterstützt nicht mehr als eine Instance-Typauswahl pro Auto-Scaling-Gruppe. Eine Richtlinie für gemischte Instances unterstützt jedoch die Auswahl von mehr als einem Instance-Typ pro Auto-Scaling-Gruppe. Spot-Instance-Anfragen profitieren davon, dass mehr als ein einziger Instance-Typ zur Auswahl steht. Weitere Informationen finden Sie MixedInstancesPolicy im AWS CloudFormation Benutzerhandbuch unter AWS::AutoScaling::AutoScaling MixedInstancesPolicy.

  8. Entfernen Sie die LaunchConfigurationName Eigenschaft aus der AWS::AutoScaling::AutoScaling. Fügen Sie stattdessen die Startvorlage hinzu.

    In den folgenden Beispielen ruft die intrinsische Funktion Ref die ID der AWS::EC2::LaunchTemplateRessource mit der logischen ID ab. myLaunchTemplate Die GetAttFunktion ruft die neueste Versionsnummer (z. B.1) der Startvorlage für die Version Eigenschaft ab.

    Beispiel: Ohne eine Richtlinie für gemischte Instances

    --- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber ...

    Beispiel: Mit einer Richtlinie für gemischte Instances

    --- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber ...

    Referenzinformationen zu allen Eigenschaften, die Amazon EC2 Auto Scaling unterstützt, finden Sie unter AWS::AutoScaling::AutoScalingAWS::AutoScaling::AutoScalingGroup im AWS CloudFormation Benutzerhandbuch.

  9. Wenn Sie bereit sind, diese Updates bereitzustellen, folgen Sie den CloudFormation Verfahren, um den Stack mit Ihrer geänderten Stack-Vorlage zu aktualisieren. Weitere Informationen finden Sie unter Ändern einer Stack-Vorlage im AWS CloudFormation Benutzerhandbuch.

Das Aktualisierungsverhalten von Stack-Ressourcen verstehen

CloudFormation aktualisiert die Stack-Ressourcen, indem die Änderungen zwischen der von Ihnen bereitgestellten aktualisierten Vorlage und den Ressourcenkonfigurationen, die Sie in der vorherigen Version Ihrer Stack-Vorlage beschrieben haben, verglichen werden. Nicht geänderte Ressourcenkonfigurationen bleiben während des Updates davon unberührt.

CloudFormation unterstützt das UpdatePolicyAttribut für Auto Scaling Scaling-Gruppen. Wenn während eines Updates auf eingestellt UpdatePolicy istAutoScalingRollingUpdate, werden InService Instanzen CloudFormation ersetzt, nachdem Sie die Schritte in diesem Verfahren ausgeführt haben. Wenn auf gesetzt UpdatePolicy istAutoScalingReplacingUpdate, CloudFormation ersetzt die Auto Scaling Scaling-Gruppe und ihren Warmpool (falls vorhanden).

Wenn Sie kein UpdatePolicy Attribut für Ihre Auto Scaling Scaling-Gruppe angegeben haben, wird die Startvorlage auf ihre Richtigkeit überprüft, aber CloudFormation es werden keine Änderungen für die Instances in der Auto Scaling Scaling-Gruppe bereitgestellt. Alle neuen Instances verwenden Ihre Startvorlage, aber bestehende Instances werden weiterhin mit der Startkonfiguration ausgeführt, mit der sie ursprünglich gestartet wurden (obwohl die Startkonfiguration nicht mehr existiert). Die Ausnahme ist, wenn Sie Ihre Kaufoptionen ändern, z. B. indem Sie eine Police für gemischte Instances hinzufügen. In diesem Fall ersetzt Ihre Auto-Scaling-Gruppe die vorhandenen Instances nach und nach durch neue Instances, die den neuen Kaufoptionen entsprechen.

Verfolgen Sie die Migration

So verfolgen Sie die Migration
  1. Wählen Sie in der AWS CloudFormation -Konsole den Stack aus, den Sie aktualisiert haben, und klicken Sie dann auf die Registerkarte Events (Ereignisse), um die Stack-Ereignisse anzuzeigen.

  2. Um die Ereignisliste mit den neuesten Ereignissen zu aktualisieren, klicken Sie in der CloudFormation Konsole auf die Schaltfläche „Aktualisieren“.

  3. Während Ihr Stack aktualisiert wird, werden Sie mehrere Ereignisse für jede Ressourcenaktualisierung feststellen. Wenn Sie in der Spalte Statusgrund eine Ausnahme sehen, die auf ein Problem beim Erstellen der Startvorlage hinweist, finden Sie weitere Informationen Fehlersuche bei Amazon EC2 Auto Scaling: Startvorlagen zu möglichen Ursachen.

  4. (Optional) Je nach Verwendung des UpdatePolicy-Attributs können Sie den Fortschritt Ihrer Auto-Scaling-Gruppe auf der Seite Auto-Scaling-Gruppen der Amazon EC2-Konsole überwachen. Wählen Sie die Auto-Scaling-Gruppe aus. Auf der Registerkarte Activity (Aktivität) unter Activity history (Aktivitätsverlauf) zeigt die Spalte Status an, ob Ihre Auto-Scaling-Gruppe-Instances erfolgreich gestartet oder beendet hat oder ob die Skalierungsaktivität noch im Gange ist.

  5. Wenn das Stack-Update abgeschlossen ist, wird CloudFormation ein UPDATE_COMPLETE Stack-Ereignis ausgelöst. Weitere Informationen finden Sie unter Überwachung des Fortschritts einer Stack-Aktualisierung im AWS CloudFormation Benutzerhandbuch.

  6. Nachdem das Stack-Update abgeschlossen ist, öffnen Sie die Seite Startvorlagen und Startkonfigurationen der Amazon EC2-Konsole. Sie werden feststellen, dass eine neue Startvorlage erstellt und die Startkonfiguration gelöscht wurde.

Referenz für die Abbildung der Startkonfiguration

Zu Referenzzwecken sind in der folgenden Tabelle alle Eigenschaften der AWS::AutoScaling::LaunchConfigurationRessource auf oberster Ebene mit den entsprechenden Eigenschaften in der AWS::EC2::LaunchTemplateRessource aufgeführt.

Startkonfiguration Quelleigenschaft Ziel-Eigenschaft der Startvorlage
AssociatePublicIpAddress NetworkInterfaces.AssociatePublicIpAddress
BlockDeviceMappings BlockDeviceMappings
ClassicLinkVPCId Nicht verfügbar¹
ClassicLinkVPCSecurityGroups Nicht verfügbar¹
EbsOptimized EbsOptimized
IamInstanceProfile Entweder IamInstanceProfile.Arn oder IamInstanceProfile.Name, jedoch nicht beides.
ImageId ImageId
InstanceId InstanceId
InstanceMonitoring Monitoring.Enabled
InstanceType InstanceType
KernelId KernelId
KeyName KeyName
LaunchConfigurationName LaunchTemplateName
MetadataOptions MetadataOptions
PlacementTenancy Placement.Tenancy
RamDiskId RamDiskId
SecurityGroups Entweder SecurityGroupIds oder NetworkInterfaces.Groups, jedoch nicht beides.
SpotPrice InstanceMarketOptions.SpotOptions.MaxPrice
UserData UserData

¹ Die ClassicLinkVPCSecurityGroups Eigenschaften ClassicLinkVPCId und können nicht in einer Startvorlage verwendet werden, da EC2-Classic nicht mehr verfügbar ist.