bluebay2014 - stock.adobe.com

AWS-Ressourcen in einen CloudFormation-Stack importieren

Verwandeln Sie manuell erstellte AWS-Ressourcen mithilfe der Importfunktion von CloudFormation in eine verwaltbare, automatisierte Infrastruktur.

Infrastructure as Code (IaC) bleibt ein wesentlicher Bestandteil der DevOps-Best Practices, da es die Konsistenz über Cloud-Umgebungen hinweg gewährleistet und Automatisierungsaufgaben erleichtert, die den Start und die Verwaltung von Anwendungskomponenten optimieren.

Obwohl die Verwendung von CloudFormation, dem wichtigsten AWS-Dienst für die Verwaltung von Cloud-Komponenten mit IaC, in vielen Unternehmen eine weit verbreitete Best Practice ist, kommt es nicht selten vor, dass wichtige AWS-Cloud-Ressourcen manuell über die Konsole oder mithilfe des AWS Command Line Interface (CLI) oder des Software Development Kits (SDK) gestartet werden. In diesem Fall müssen Sie prüfen, ob diese Ressourcen stattdessen von einem CloudFormation-Stack verwaltet werden können.

Hier ist die CloudFormation-Funktion zum Importieren von Ressourcen ein sehr nützliches Werkzeug.

Was ist die CloudFormation-Funktion zum Importieren von Ressourcen?

Diese Importfunktion ermöglicht die Verwaltung bestehender AWS-Ressourcen, die ursprünglich außerhalb eines CloudFormation-Stacks erstellt wurden, sodass sie mithilfe der Vorlage des Stacks aktualisiert werden können. Dieser Schritt bringt die Vorteile von IaC auch für Ressourcen zum Tragen, die manuell oder mithilfe der CLI/SDK erstellt wurden.

Ressourcen können entweder in einen bestehenden Stack oder in einen neu erstellten Stack importiert werden. Der manuelle Importvorgang erfordert, dass Cloud-Administratoren die vollständige Stack-Vorlage mit den Konfigurationsblöcken für die zu importierenden Ressourcen bereitstellen. Dies wird über die AWS-Konsole und die CLI oder das SDK unterstützt. Verschachtelte Stacks unterstützen ebenfalls den Import von Ressourcen. Es gibt auch eine Auto-Import-Funktion, die den Vorgang in der CLI oder dem SDK vereinfacht, da nur eindeutige Kennungen für die zu importierenden Ressourcen erforderlich sind und nicht der vollständige Block an Ressourcenkonfigurationen.

Es gibt mehrere Voraussetzungen, damit der Importvorgang erfolgreich durchgeführt werden kann. Zwei wesentliche Voraussetzungen sind:

  1. Die zu importierenden Ressourcen müssen sich im selben AWS-Konto und in derselben Region wie der Stack befinden – sie dürfen nicht bereits von CloudFormation verwaltet werden. Außerdem muss das Attribut DeletionPolicy in der Vorlagenkonfiguration für die zu importierenden Ressourcen festgelegt sein.
  2. Die für die Ausführung des Importvorgangs verwendete IAM-Identität muss über CloudFormation-Berechtigungen zum Erstellen oder Aktualisieren von Stacks sowie über Leseberechtigungen verfügen. In den meisten Fällen ist die von IAM verwaltete Richtlinie AWSCloudFormationFullAccess erforderlich, um alle Aufgaben für CloudFormation-Importe auszuführen.

CloudFormation unterstützt eindeutige Identifikatoren (ID) für verwaltete Ressourcen. Diese Konfiguration variiert je nach Ressourcentyp und ist ein eindeutiger Wert, der auf die zu verwaltende Ressource verweist. Die Konfiguration der Stack-Vorlage mit der ID für die zu verwaltenden Ressourcen ist eine wichtige Anforderung, die beim Importieren von Ressourcen in einen CloudFormation-Stack angegeben werden muss.

6 Schritte zum Importieren vorhandener AWS-Ressourcen

Im Folgenden finden Sie die Schritte, die erforderlich sind, um einen manuellen Ressourcenimport in einen vorhandenen CloudFormation-Stack mithilfe der AWS-Konsole auszuführen. In diesem Beispiel wird ein vorhandener S3 Bucket in einen CloudFormation-Stack namens cloudformation-import-example importiert.

Dieser Stack verfügte bereits über eine Vorlage, die die Konfiguration der Ressourcen verwaltet, die zusammen mit dem Stack selbst erstellt wurden. In diesem Beispiel wird ein S3 Bucket namens s3-bucket-cloudformation-import in den Stack cloudformation-import-example importiert.

Schritt 1: S3-Bucket-Konfigurationen hinzufügen

Der erste Schritt besteht darin, die Konfigurationen des S3 Buckets, der in die Stack-Vorlage importiert werden soll, unter dem Block Resources hinzuzufügen. In diesem Fall:

S3BucketToBeImportedIntoCloudFormation:

    Typ: „AWS::S3::Bucket”

    DeletionPolicy: „Retain”

    Properties:

BucketName: „s3-bucket-cloudformation-import”

Das AWS IaC-Generator-Tool vereinfacht die Erstellung von CloudFormation-Vorlagenkonfigurationen für Ressourcen, indem es automatisch eine Vorlagensyntax basierend auf vorhandenen Ressourcenkonfigurationen generiert. Es ist ein empfohlenes Tool zum Generieren von JSON- oder YAML-Konfigurationen für Ressourcen, die importiert werden sollen.

Der Einfachheit halber verfügt der vorhandene S3 Bucket über grundlegende Konfigurationen. In den meisten Fällen müssen jedoch umfangreichere Konfigurationen für die zu importierenden Ressourcen hinzugefügt werden. Beachten Sie unbedingt die Anforderung zur Konfiguration des Parameters DeletionPolicy sowie einer eindeutigen Ressourcen-ID, in diesem Fall der Parameter BucketName.

Schritt 2: Importieren Sie Ressourcen über die CloudFormation-Konsole in den Stack

Navigieren Sie zur CloudFormation-Konsole, wählen Sie den CloudFormation-Stack aus, in den Sie Ressourcen importieren möchten, und wählen Sie unter Stack actions die Option Import resources into stack:

AWS-Ressourcen in den CloudFormation-Stack importieren
Abbildung 1: Importieren der Ressource in den CloudFormation-Stack.

Schritt 3: Vorlage angeben

Auf der nächsten Seite müssen Cloud-Administratoren die aktualisierte Vorlage bereitstellen, die die bereits vom Stack verwalteten Ressourcen sowie die zu importierenden Ressourcen enthält.

Vorlagen-Datei für den Ressourcenimport hochladen
Abbildung 2: Upload der Template-Datei für den Ressourcenimport.

Schritt 4: Identifikatoren der Ressourcen bestätigen

Im nächsten Schritt müssen die Identifikatoren (IDs) der zu importierenden Ressourcen bestätigt werden, die ebenfalls in der Vorlage konfiguriert werden müssen. In diesem Fall lautet der Identifikator BucketName und der Wert s3-bucket-cloudformation-import.

Schritt 5: Aktualisierungen überprüfen und Import abschließen

Der letzte Schritt ist eine Überprüfungsseite, auf der die Aktualisierungen angezeigt werden, die am Stack vorgenommen werden. In diesem Fall beziehen sich diese nur auf den Importvorgang der Ressourcen. Nachdem die Importaufgabe ausgelöst wurde, zeigt die Registerkarte Events in CloudFormation die Abfolge der Ereignisse an, die während des Ressourcenimportvorgangs stattfinden:

Anzeige des Importfortschritts
Abbildung 3: Anzeige des Importfortschritts.

Schritt 6: Drift-Erkennung ausführen

Nachdem Ressourcen in einen CloudFormation-Stack importiert wurden, wird empfohlen, eine Drift-Erkennung für den Stack durchzuführen, um etwaige Konfigurationsabweichungen zwischen der Stack-Vorlage und den tatsächlichen Ressourcen in AWS zu identifizieren. Dies kann in der Konsole durch Auswahl der Aktion Detect drift ausgelöst werden. Auf der Registerkarte Stack info wird der Drift-Status angezeigt, der im Idealfall synchron sein sollte.

Abweichungen nach dem Import erkennen
Abbildung 4: Über Detect drift lassen sich mögliche Abweichungen zwischen Vorlage und den Ressourcen identifizieren.

Die Drift-Erkennung ist nützlich, um sicherzustellen, dass die Vorlage dieselben Konfigurationen wie die importierten aktiven Ressourcen aufweist. Dadurch lassen sich potenzielle Probleme bei der Anwendung zukünftiger Updates auf die Stack-Vorlage vermeiden. Diskrepanzen können entweder durch Aktualisieren der Stack-Vorlage entsprechend den tatsächlichen Ressourcenkonfigurationen oder durch manuelles Aktualisieren der Ressource entsprechend den in der Vorlage angegebenen Konfigurationen behoben werden, je nach der tatsächlichen Diskrepanz und der gewünschten Ressourcenkonfiguration.

Erfahren Sie mehr über Cloud Computing