Importieren vorhandener Ressourcen in einen Stack - 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.

Importieren vorhandener Ressourcen in einen Stack

In diesem Thema erfahren Sie, wie Sie vorhandene importieren AWS Ressourcen in einen vorhandenen Stack, indem Sie sie in einer Vorlage beschreiben. Informationen dazu, wie Sie stattdessen nach vorhandenen Ressourcen suchen und automatisch eine Vorlage generieren können, mit der Sie vorhandene Ressourcen in ein neues Konto importieren CloudFormation oder Ressourcen in einem neuen Konto replizieren können, finden Sie unterGenerieren Sie Vorlagen aus vorhandenen Ressourcen mit dem IaC-Generator.

Voraussetzungen

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

  • Eine Vorlage, die den gesamten Stack beschreibt, einschließlich der Ressourcen, die bereits Teil des Stacks sind, und der zu importierenden Ressourcen. Speichern Sie die Vorlage lokal oder in einem Amazon S3 S3-Bucket.

    Um eine Kopie der Vorlage eines laufenden Stacks zu erhalten

    1. Öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/.

    2. Wählen Sie aus der Liste der Stacks den Stapel aus, aus dem Sie die Vorlage abrufen möchten.

    3. Wählen Sie im Bereich mit den Stack-Details die Registerkarte Vorlage und dann In die Zwischenablage kopieren aus.

    4. Fügen Sie den Code in einen Texteditor ein, um weitere Ressourcen zur Vorlage hinzuzufügen.

  • Fügen Sie für jede Ressource, die Sie importieren möchten, Folgendes hinzu:

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

    • der eindeutige Bezeichner für die Ressource, z. B. der Ressourcenname. Weitere Informationen finden Sie unter Ressourcen-Identifikatoren.

    • derDeletionPolicy Attribut.

--Beispielvorlage

In dieser exemplarischen Vorgehensweise gehen wir davon aus, dass Sie die folgende Beispielvorlage namens TemplateToImport.json verwenden, die zwei DynamoDB-Tabellen spezifiziert. ServiceTableist derzeit Teil des Stacks und GamesTable ist die Tabelle, die Sie importieren möchten.

Anmerkung

Diese Vorlage dient nur als Beispiel. Um sie 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", "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 } } } } }

Importieren Sie eine vorhandene Ressource in einen Stack mit dem AWS Management Console

Anmerkung

Das Tool AWS CloudFormation Die Konsole unterstützt die Verwendung der systemeigenen Funktion Fn: :Transform beim Importieren von Ressourcen nicht. Sie können das AWS Command Line Interface um Ressourcen zu importieren, die die systemeigene Funktion Fn: :Transform verwenden.

  1. Melden Sie sich an bei AWS Management Console und öffne das AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie auf der Seite Stacks den Stack aus, in den Sie Ressourcen importieren möchten.

  3. Wählen Sie Stack-Aktionen und dann Ressourcen in Stack importieren aus.

    Die Option „Ressourcen in Stack importieren“ in der Konsole.
  4. Überprüfen Sie die Seite Importübersicht und wählen Sie dann Weiter aus.

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

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

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

  6. Identifizieren Sie auf der Seite Ressourcen identifizieren jede Zielressource. Weitere Informationen finden Sie unter Ressourcen-Identifikatoren.

    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.

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

    Anmerkung

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

  8. Zum Testbericht stack-nameÜberprüfen Sie auf der Seite die zu importierenden Ressourcen und wählen Sie dann Ressourcen importieren aus. Dadurch wird der im letzten Schritt erstellte Änderungssatz automatisch ausgeführt. Alle Tags auf Stack-Ebene werden zu diesem Zeitpunkt auf importierte Ressourcen angewendet. Weitere Informationen finden Sie unter Konfigurieren Sie die Stack-Optionen.

    Die Seite Ereignisse für den Stack wird angezeigt.

    Die Registerkarte „Ereignisse“ in der Konsole.
  9. (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 Abweichungen finden Sie unterDrift auf einem ganzen CloudFormation Stack erkennen.

  10. (Optional) Wenn die importierten Ressourcen nicht mit den erwarteten Vorlagenkonfigurationen übereinstimmen, korrigieren Sie entweder die Vorlagenkonfigurationen oder aktualisieren Sie die Ressourcen direkt. Weitere Informationen zum Importieren von Ressourcen, die nicht berücksichtigt wurden, finden Sie unterBeheben von Abweichungen mit einer Importoperation.

Importieren Sie eine vorhandene Ressource in einen Stapel mithilfe der AWS CLI

  1. Um zu erfahren, welche Eigenschaften die einzelnen Ressourcentypen in der Vorlage identifizieren, führen Sie den get-template-summary Befehl aus und geben Sie dabei den 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 Ressourcen-Identifikatoren.

  2. Stellen Sie eine Liste der tatsächlich zu importierenden Ressourcen und ihrer eindeutigen Kennungen im folgenden JSON Zeichenkettenformat zusammen.

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

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

    Um beispielsweise zu importierenGamesTable, könnten Sie eine erstellen ResourcesToImport.txt Datei, die die folgende Konfiguration enthält.

    [ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier": { "TableName":"Games" } } ]
  3. Um einen Änderungssatz zu erstellen, verwenden Sie den folgenden create-change-set Befehl und ersetzen Sie den Platzhaltertext. Geben Sie für die Option --change-set-type einen Wert von IMPORT an. Ersetzen Sie für --resources-to-import diese Option die JSON Beispielzeichenfolge 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"}}]'
    Anmerkung

    --resources-to-importunterstützt Inline nichtYAML. Die Anforderungen für das Maskieren von Anführungszeichen in der JSON Zeichenfolge variieren je nach Terminal. Weitere Informationen finden Sie unter Verwenden von Anführungszeichen innerhalb von Zeichenketten im AWS Command Line Interface Benutzerleitfaden.

    Alternativ können Sie eine Datei URL als Eingabe für die --resources-to-import Option 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. Verwenden Sie den folgenden execute-change-set Befehl und ersetzen Sie den Platzhaltertext, um den Änderungssatz zu initiieren und die Ressourcen zu importieren. Alle Tags auf Stack-Ebene werden zu diesem Zeitpunkt auf importierte Ressourcen angewendet. Weitere Informationen finden Sie unter Konfigurieren Sie die Stack-Optionen. 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 Abweichungen finden Sie unterDrift auf einem ganzen CloudFormation Stack erkennen.

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

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

      Bei Erfolg gibt dieser Befehl die folgende Beispielausgabe zurück.

      { "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. Zeigt Drift-Informationen für die Ressourcen an, die im angegebenen Stack auf Drift überprü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. Weitere Informationen zum Importieren von Ressourcen, die nicht mehr zur Verfügung stehen, finden Sie unterBeheben von Abweichungen mit einer Importoperation.