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
In diesem Thema erfahren Sie, wie Sie einen Stack aus vorhandenen AWS Ressourcen erstellen, indem Sie diese 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 alle Ressourcen beschreibt, die Sie im neuen Stapel haben möchten. Speichern Sie die Vorlage lokal oder in einem Amazon S3 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.
-
der eindeutige Bezeichner für die Ressource, z. B. der Ressourcenname. Weitere Informationen finden Sie unter Ressourcen-Identifikatoren.
-
Themen
--Beispielvorlage
In dieser exemplarischen Vorgehensweise gehen wir davon aus, dass Sie die folgende Beispielvorlage namens verwenden, die zwei DynamoDB-Tabellen angibtTemplateToImport.json
, die außerhalb von erstellt wurden. CloudFormation ServiceTable
und GamesTable
sind die Ziele des Imports.
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",
"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 Sie einen Stack aus vorhandenen Ressourcen mithilfe des AWS Management Console
Melden Sie sich bei https://console.aws.amazon.com/cloudformation
an AWS Management Console und öffnen Sie die AWS CloudFormation Konsole. -
Wählen Sie auf der Seite Stacks die Option Stack erstellen aus und klicken Sie dann auf Mit vorhandenen Ressourcen (Ressourcen importieren).
-
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.
-
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 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.
-
-
Identifizieren Sie auf der Seite Ressourcen identifizieren jede Zielressource. Weitere Informationen finden Sie unter Ressourcen-Identifikatoren.
-
Wählen Sie unter Bezeichnereigenschaft den Typ des Ressourcenbezeichners aus. Beispielsweise kann die
AWS::DynamoDB::Table
-Ressource mit derTableName
-Eigenschaft identifiziert werden. -
Geben Sie unter Bezeichnerwert den tatsächlichen Eigenschaftswert ein. Beispielsweise ist der
TableName
für dieGamesTable
-Ressource in der Beispielvorlage
.Games
-
Wählen Sie Weiter.
-
-
Ä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.
-
Vergewissern Sie sich auf der
stack-name
Seite „Überprüfen“, dass die richtigen Ressourcen importiert wurden, 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.
-
(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.
-
(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.
-
Stellen Sie den Importvorgang für die betroffenen Ressourcen wieder her.
-
Fügen Sie der Vorlage die Importziele erneut hinzu und stellen Sie sicher, dass die Vorlagenkonfigurationen mit den tatsächlichen Konfigurationen übereinstimmen.
-
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
-
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 derTableName
-Eigenschaft identifiziert werden. Für dieGamesTable
-Ressource in der Beispielvorlage lautet der Wert vonTableName
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.
-
Stellen Sie eine Liste der tatsächlichen Ressourcen aus Ihrer Vorlage und ihrer eindeutigen Identifikatoren im folgenden JSON Zeichenkettenformat zusammen.
[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]
Alternativ können Sie die Parameter im JSON -Format in einer Konfigurationsdatei angeben.
Um beispielsweise zu importieren
ServiceTable
undGamesTable
, könnten Sie eineResourcesToImport.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" } } ]
-
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 vonIMPORT
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-nameImportChangeSet
\ --change-set-typeIMPORT
\ --template-urlhttps://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 Inline nichtYAML. Die Anforderungen für das Maskieren von Anführungszeichen in der JSON Zeichenfolge variieren je nach Terminal. Weitere Informationen finden Sie im Benutzerhandbuch unter Verwenden von Anführungszeichen innerhalb von Zeichenketten.AWS Command Line InterfaceAlternativ 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
-
Überprüfen Sie den Änderungssatz, um sicherzustellen, dass die richtigen Ressourcen importiert werden.
aws cloudformation describe-change-set \ --change-set-name
ImportChangeSet
--stack-nameTargetStack
-
Verwenden Sie den folgenden execute-change-set Befehl und ersetzen Sie den Platzhaltertext, um den Änderungssatz zu initiieren und die Ressourcen zu importieren. Nach erfolgreichem Abschluss des Vorgangs
(IMPORT_COMPLETE)
werden die Ressourcen erfolgreich importiert.aws cloudformation execute-change-set \ --change-set-name
ImportChangeSet
--stack-nameTargetStack
-
(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 unterErkennen von Abweichungen bei einzelnen Stack-Ressourcen.-
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" }
-
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
-
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
-
-
(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.
-
Stellen Sie den Importvorgang für die betroffenen Ressourcen wieder her.
-
Fügen Sie der Vorlage die Importziele erneut hinzu und stellen Sie sicher, dass die Vorlagenkonfigurationen mit den tatsächlichen Konfigurationen übereinstimmen.
-
Wiederholen Sie die Schritte 3 bis 6 mit der geänderten Vorlage, um die Ressourcen erneut zu importieren.
-