Erstellen eines Stacks aus vorhandenen Ressourcen - AWS CloudFormation

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.

Erstellen eines Stacks aus vorhandenen Ressourcen

Dieses Thema zeigt Ihnen, wie Sie einen Stapel aus vorhandenen AWS-Ressourcen erstellen, indem Sie diese in einer Vorlage beschreiben. Um stattdessen nach vorhandenen Ressourcen zu suchen und automatisch eine Vorlage zu generieren, die Sie verwenden können, um vorhandene Ressourcen in CloudFormation zu importieren oder Ressourcen in einem neuen Konto zu replizieren, siehe Erzeugen Sie Vorlagen aus vorhandenen Ressourcen mit dem IaC-Generator.

Voraussetzungen

Sie benötigen Folgendes, um starten zu können:

  • Eine Vorlage, die alle Ressourcen beschreibt, die Sie in dem neuen Stapel haben möchten. Speichern Sie die Vorlage lokal oder in einem Amazon S3-Bucket.

  • Geben Sie für jede Ressource, die Sie importieren möchten, Folgendes an:

    • die Eigenschaften und Eigenschaftswerte, die die aktuelle Konfiguration der Ressource definieren.

    • den eindeutigen Bezeichner für die Ressource, z. B. den Ressourcennamen. Weitere Informationen finden Sie unter Identifikatoren für Ressourcen.

    • the DeletionPolicy attribute.

Beispielvorlage

In dieser Schritt-für-Schritt-Anleitung gehen wir davon aus, dass Sie die folgende Beispielvorlage mit dem Namen TemplateToImport.jsonverwenden, die zwei DynamoDB-Tabellen angibt, die außerhalb von CloudFormation erstellt wurden. ServiceTable und GamesTable sind die Ziele für den Import.

Anmerkung

Diese Vorlage ist nur als Beispiel gedacht. Um es für Ihre eigenen Testzwecke zu verwenden, ersetzen Sie die Beispielressourcen durch Ressourcen aus Ihrem Konto.

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "ServiceTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Service", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } }, "GamesTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Games", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } } } }

Erstellen eines Stacks aus vorhandenen Ressourcen mithilfe der AWS-Managementkonsole

  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie auf der Seite Stacks die Option Stack erstellen aus und klicken Sie dann auf Mit vorhandenen Ressourcen (Ressourcen importieren).

    Die Option „Stack aus vorhandenen Ressourcen erstellen“ in der Konsole.
  3. Auf der Seite Importübersicht finden Sie eine Liste der Dinge, die Sie während dieses Vorgangs angeben müssen. Wählen Sie anschließend Weiter.

  4. Geben Sie auf der Seite Vorlage angeben Ihre Vorlage mit einer der folgenden Methoden an und wählen Sie dann Weiter aus.

    • Wählen Sie Amazon S3-URL aus und geben Sie dann die URL für Ihre Vorlage im Textfeld an.

    • Wählen Sie Vorlagendatei hochladen aus und suchen Sie dann nach Ihrer Vorlage.

  5. Identifizieren Sie auf der Seite Ressourcen identifizieren jede Zielressource. Weitere Informationen finden Sie unter Identifikatoren für Ressourcen.

    1. Wählen Sie unter Bezeichnereigenschaft den Typ des Ressourcenbezeichners aus. Beispielsweise kann die AWS::DynamoDB::Table-Ressource mit der TableName-Eigenschaft identifiziert werden.

    2. Geben Sie unter Bezeichnerwert den tatsächlichen Eigenschaftswert ein. Beispielsweise ist der TableName für die GamesTable-Ressource in der Beispielvorlage Games.

    3. Wählen Sie Weiter aus.

  6. Ändern Sie auf der Seite Stack-Details angeben alle Parameter und wählen Sie dann Weiter aus. Dadurch wird automatisch ein Änderungssatz erstellt.

    Wichtig

    Der Importvorgang schlägt fehl, wenn Sie vorhandene Parameter ändern, die einen Erstellungs-, Aktualisierungs- oder Löschvorgang initiieren.

  7. Überprüfen Sie auf der Seite Stack-Name überprüfen, ob die richtigen Ressourcen importiert werden, und wählen Sie dann Ressourcen importieren aus. Dadurch wird der im letzten Schritt erstellte Änderungssatz automatisch ausgeführt.

    Der Bereich Ereignisse der Seite Stack-Details für Ihren neuen Stack wird angezeigt.

    Die Registerkarte „Ereignisse“ in der Konsole.
  8. (Optional) Führen Sie die Abweichungserkennung für den Stack aus, um sicherzustellen, dass die Vorlage und die tatsächliche Konfiguration der importierten Ressourcen übereinstimmen. Weitere Informationen zur Erkennung von Drift finden Sie unter Ermitteln von Abweichungen im gesamten CloudFormation-Stack.

  9. (Optional) Wenn die importierten Ressourcen nicht mit den erwarteten Vorlagenkonfigurationen übereinstimmen, korrigieren Sie entweder die Vorlagenkonfigurationen oder aktualisieren Sie die Ressourcen direkt. In dieser Anleitung korrigieren wir die Vorlagenkonfigurationen so, dass sie ihren tatsächlichen Konfigurationen entsprechen.

    1. Stellen Sie den Importvorgang für die betroffenen Ressourcen wieder her.

    2. Fügen Sie der Vorlage die Importziele erneut hinzu und stellen Sie sicher, dass die Vorlagenkonfigurationen mit den tatsächlichen Konfigurationen übereinstimmen.

    3. Wiederholen Sie die Schritte 2–8 mit der geänderten Vorlage, um die Ressourcen erneut zu importieren.

Erstellen eines Stacks aus vorhandenen Ressourcen mithilfe der AWS CLI

  1. Um zu erfahren, welche Eigenschaften die einzelnen Ressourcentypen in der Vorlage identifizieren, führen Sie den Befehl get-template-summary aus und geben dabei die S3-URL der Vorlage an. Beispielsweise kann die AWS::DynamoDB::Table-Ressource mit der TableName-Eigenschaft identifiziert werden. Für die GamesTable-Ressource in der Beispielvorlage lautet der Wert von TableName Games. Sie benötigen diese Informationen im nächsten Schritt.

    aws cloudformation get-template-summary \ --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json

    Weitere Informationen finden Sie unter Identifikatoren für Ressourcen.

  2. Stellen Sie eine Liste der tatsächlichen Ressourcen aus Ihrer Vorlage und ihrer eindeutigen Bezeichner im folgenden JSON-String-Format zusammen.

    [{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]

    Alternativ können Sie die JSON-formatierten Parameter in einer Konfigurationsdatei angeben.

    Um zum Beispiel ServiceTable und GamesTablezu importieren, könnten Sie eine ResourcesToImport.txt-Datei erstellen, die die folgende Konfiguration enthält.

    [ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier":{ "TableName":"Games" } }, { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"ServiceTable", "ResourceIdentifier":{ "TableName":"Service" } } ]
  3. Um einen Änderungssatz zu erstellen, verwenden Sie den folgenden Befehl create-change-set und ersetzen den Platzhaltertext. Geben Sie für die Option --change-set-type einen Wert von IMPORT an. Ersetzen Sie bei der Option --resources-to-import die Beispiel-JSON-Zeichenfolge durch die tatsächliche JSON-Zeichenfolge, die Sie gerade erstellt haben.

    aws cloudformation create-change-set \ --stack-name TargetStack --change-set-name ImportChangeSet \ --change-set-type IMPORT \ --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json \ --resources-to-import '[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]'
    Anmerkung

    --resources-to-import unterstützt kein Inline-YAML. Die Anforderungen für das Escapen von Anführungszeichen in der JSON-Zeichenfolge variieren je nach Ihrem Terminal. Weitere Informationen finden Sie unter Anführungszeichen in Zeichenketten verwenden im AWS Command Line Interface Benutzerhandbuch.

    Alternativ können Sie auch eine Datei-URL als Eingabe für die Option --resources-to-import verwenden, wie im folgenden Beispiel gezeigt.

    --resources-to-import file://ResourcesToImport.txt
  4. Überprüfen Sie den Änderungssatz, um sicherzustellen, dass die richtigen Ressourcen importiert werden.

    aws cloudformation describe-change-set \ --change-set-name ImportChangeSet --stack-name TargetStack
  5. Um den Änderungssatz zu initiieren und die Ressourcen zu importieren, verwenden Sie den folgenden execute-change-set-Befehl und ersetzen den Platzhaltertext. Nach erfolgreichem Abschluss des Vorgangs (IMPORT_COMPLETE) werden die Ressourcen erfolgreich importiert.

    aws cloudformation execute-change-set \ --change-set-name ImportChangeSet --stack-name TargetStack
  6. (Optional) Führen Sie die Abweichungserkennung für den IMPORT_COMPLETE-Stack aus, um sicherzustellen, dass die Vorlage und die tatsächliche Konfiguration der importierten Ressourcen übereinstimmen. Weitere Informationen zur Erkennung von Drift finden Sie unter Erkennen von Abweichungen bei einzelnen Stack-Ressourcen.

    1. Führt die Drifterkennung für den angegebenen Stapel aus.

      aws cloudformation detect-stack-drift --stack-name TargetStack

      Wenn dieser Befehl erfolgreich ist, erhalten Sie die folgende Beispielausgabe.

      { "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" }
    2. Zeigt den Fortschritt eines Drift-Erkennungsvorgangs für die angegebene Stack Drift-Erkennungs-ID an.

      aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample
    3. Zeigen Sie Drift-Informationen für die Ressourcen an, die im angegebenen Stapel auf Drift geprüft wurden.

      aws cloudformation describe-stack-resource-drifts --stack-name TargetStack
  7. (Optional) Wenn die importierten Ressourcen nicht mit den erwarteten Vorlagenkonfigurationen übereinstimmen, korrigieren Sie entweder die Vorlagenkonfigurationen oder aktualisieren Sie die Ressourcen direkt. In dieser Anleitung korrigieren wir die Vorlagenkonfigurationen so, dass sie ihren tatsächlichen Konfigurationen entsprechen.

    1. Stellen Sie den Importvorgang für die betroffenen Ressourcen wieder her.

    2. Fügen Sie der Vorlage die Importziele erneut hinzu und stellen Sie sicher, dass die Vorlagenkonfigurationen mit den tatsächlichen Konfigurationen übereinstimmen.

    3. Wiederholen Sie die Schritte 3–6 mit der geänderten Vorlage, um die Ressourcen erneut zu importieren.