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.
Verwenden des Werkzeugs „An Ort und Stelle AWS OpsWorks Stacks lösen“
Wichtig
Der AWS OpsWorks Stacks Dienst hat am 26. Mai 2024 das Ende seiner Lebensdauer erreicht und wurde sowohl für neue als auch für bestehende Kunden deaktiviert. Wir empfehlen Kunden dringend, ihre Workloads so bald wie möglich auf andere Lösungen zu migrieren.
In diesem Abschnitt wird beschrieben, wie Sie das Tool AWS OpsWorks Stacks Detach in Place verwenden, um Ihre OpsWorks Instances vom Stacks-Service zu trennen. OpsWorks
Die Instanzen, die Sie trennen, bleiben in Ihren AWS-Konto, aber Sie können sie nicht mehr mithilfe von. OpsWorks Stattdessen verwenden Sie Amazon EC2 oder einen anderen EC2-kompatiblen Ansatz AWS Systems Manager, um die Instances zu konfigurieren und zu verwalten.
Auf einer höheren Ebene umfasst der Prozess der Trennung die folgenden Schritte:
-
Das Tool führt Validierungsprüfungen durch, um sicherzustellen, dass die Ressourcen für die Trennung bereit sind.
-
Das Tool exportiert die benutzerdefinierte JSON-Datei aus Ihrem OpsWorks Stack und speichert sie als Objekt in Amazon S3.
-
Das Tool erstellt Systems Manager Automation-Dokumente, die jedes OpsWorks Stacks-Lifecycle-Ereignis darstellen.
-
Das Tool erstellt einen AWS Service Catalog AppRegistry Katalog für alle Instances, die getrennt werden, und trennt alle Elastic Load Balancing (ELB) -Load Balancer von den OpsWorks Layern.
-
Schließlich trennt und deregistriert das Tool andere Ressourcen, einschließlich Amazon Relational Database Service (Amazon RDS) -Instances.
Wie funktioniert der Prozess
Das Tool Detach In Place bietet die folgenden drei Befehle und ein assistentenähnliches Tool, das Sie durch eine Reihe von Schritten zur Überprüfung und Konfiguration Ihrer Instances führt, bevor Sie mit dem Trennen Ihres Layers fortfahren.
Befehl | Beschreibung |
---|---|
|
Mit diesem Befehl wird analysiert, ob alle Instanzen in einer Ebene getrennt werden können, und es werden alle Voraussetzungen erfüllt. Die Instanzen müssen sich in einem fehlerfreien Zustand befinden OpsWorks, sie dürfen keine zeit- oder lastbasierten Auto Scaler haben und sie müssen die neueste OpsWorks Agent-Version installiert haben. Darüber hinaus überprüft der Befehl, ob alle Instanzen über die zur Unterstützung des SSM-Agenten erforderlichen Berechtigungen verfügen und ob die neueste SSM-Agent-Version installiert ist. Der Befehl installiert den SSM-Agenten, falls er nicht vorhanden ist, und aktualisiert den SSM-Agenten, wenn er nicht die neueste Version verwendet. Der Befehl fügt auch alle erforderlichen Berechtigungen hinzu. |
|
Mit diesem Befehl werden alle OpsWorks Instanzen für die angegebene Ebene getrennt. Zunächst führt der Befehl eine Prüfung der Voraussetzungen durch, um sicherzustellen, dass die Ebene getrennt werden kann. Wenn Sie die Voraussetzungen nicht erfüllen möchten, haben Sie die Möglichkeit, das Trennen zu erzwingen. Als Nächstes gibt der Befehl an, dass alle Tags, die Ihren Instances durch OpsWorks Tagging-APIs oder durch die Weitergabe von Tags aus Ihren Layern und Stacks hinzugefügt wurden, beibehalten werden. Sie können jedes dieser Tags mithilfe der entsprechenden EC2-APIs entfernen, nachdem die Trennung abgeschlossen ist. Anschließend prüft der Befehl, ob Sie die Chef-bezogene Konfiguration in SSM-Parameter exportieren möchten. Wenn Sie einen Classic Load Balancer an den Layer angeschlossen haben, fragt der Befehl, ob er den Load Balancer trennen kann, um Ausfallzeiten zu vermeiden. |
|
Dieser Befehl löscht alle Entitäten in OpsWorks Ihrem Konto. Er beendet die Instanzen und löscht alle Stacks. Dies sollte als letzter Schritt zur Bereinigung des Kontos für Ressourcen verwendet werden, die nicht mehr benötigt werden. AnmerkungWir empfehlen, dass Sie das neue Setup einige Tage lang ausführen, bevor Sie den |
Einschränkungen
Der Hauptzweck des Tools Detach In Place besteht darin, die OpsWorks Stacks-Instanzen sicher zu trennen. In diesem Abschnitt werden die Einschränkungen des Tools zusammengefasst.
-
Windows SSM Agent — Wenn der SSM Agent nicht auf der Instanz installiert ist, müssen Sie ihn manuell installieren. Das Gleiche gilt, wenn der Agent nicht auf die neueste Version aktualisiert wird.
-
Time/Load Auto Scaling-Instances — Das Detachment-Tool unterstützt keine Instances mit aktiviertem Auto Scaling. Sie müssen Auto Scaling für Instances deaktivieren, die Sie trennen möchten.
-
Berechtigungen — Das Detachment-Tool erstellt oder generiert keine IAM-Entitäten, die auf der Seite „Berechtigungen“ der Konsole angegeben sind. OpsWorks
-
Apps — Das Detachment-Tool erstellt oder generiert keine Apps außerhalb von. OpsWorks
Erste Schritte
Schritt 1: Stellen Sie sicher, dass die Voraussetzungen erfüllt sind
Bei allen drei Befehlen des Werkzeugs Detach In Place handelt es sich um Python-Skripts, die Sie lokal, auf einer EC2-Instanz oder mithilfe von AWS CloudShell
AWS CloudShell ist eine browserbasierte Shell, mit der Sie über die Befehlszeile auf die Ressourcen in der AWS ausgewählten Datei zugreifen können. AWS-Region AWS CloudShell ist mit gängigen Tools (wie AWS CLI Python) vorinstalliert. Bei der Verwendung AWS CloudShell verwenden Sie dieselben Anmeldeinformationen, mit denen Sie sich an der Konsole anmelden.
Bei dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass Sie verwenden AWS CloudShell.
Schritt 2: Laden Sie das Skript herunter
-
Laden Sie die ZIP-Datei herunter, die das Migrationsskript und alle relevanten Dateien enthält, indem Sie den folgenden Befehl ausführen:
aws s3api get-object \ --bucket detach-in-place-bucket-prod-us-east-1 \ --key detach_in_place_script.zip detach_in_place_script.zip
-
Entpacken Sie die Datei, indem Sie den folgenden Befehl ausführen.
unzip detach_in_place_script.zip
Nach dem Entpacken der Datei sind die folgenden Dateien verfügbar:
-
README.md
-
LIZENZ
-
NOTICE
-
requirements.txt
-
TODO.py
-
-
Falls erforderlich, installieren Sie,
pipenv
indem Sie den folgenden Befehl ausführen.pip install pipenv
Schritt 3: Führen Sie das Skript aus
Richten Sie zunächst Ihre Umgebung so ein, dass Sie das Skript ausführen können, indem Sie die folgenden Befehle ausführen.
pipenv install -r requirements.txt pipenv shell
Überprüfen Sie dann die Skriptparameter.
Befehl | Parameter | Beschreibung | Typ | Erforderlich | Standard |
---|---|---|---|---|---|
|
|
Die ID der Ebene, die Sie trennen möchten. |
String |
Ja |
- |
|
Die Region des OpsWorks Stapels. Wenn sich Ihre OpsWorks Stack-Region und Ihre API-Endpunktregion unterscheiden, verwenden Sie die Stack-Region. Dies ist dieselbe Region wie die anderen Ressourcen in Ihrem OpsWorks Stack (z. B. EC2-Instances und Subnetze). |
String |
Nein |
us-east-1 |
|
|
|
ID der Ebene, die Sie trennen möchten. |
String |
Ja |
- |
|
Anzahl der Instanzen, die von einer Ebene getrennt werden sollen (z. B. 5). |
String |
Nein |
- |
|
|
Die Region des OpsWorks Stacks. Wenn sich Ihre OpsWorks Stack-Region und Ihre API-Endpunktregion unterscheiden, verwenden Sie die Stack-Region. Dies ist dieselbe Region wie die anderen Ressourcen in Ihrem OpsWorks Stack (z. B. EC2-Instances und Subnetze). |
String |
Nein |
us-east-1 |
|
|
|
ID des Stacks, den Sie löschen möchten. |
String |
Nein |
Wenn Sie sich gegenseitig ausschließen, müssen Sie entweder eine Layer-ID oder eine Stack-ID angeben |
|
ID der Ebene, die Sie löschen möchten |
String |
Nein |
||
|
Die Region des OpsWorks Stapels. Wenn sich Ihre OpsWorks Stack-Region und Ihre API-Endpunktregion unterscheiden, verwenden Sie die Stack-Region. Dies ist dieselbe Region wie die anderen Ressourcen in Ihrem OpsWorks Stack (z. B. EC2-Instances und Subnetze). |
String |
Nein |
us-east-1 |
Sie können sich die verfügbaren Optionen für die cleanup
Befehle handle-prerequisites
und anzeigen lassendetach
, indem Sie die Befehle mit der --help
Option wie folgt ausführen:
python3 layer_detacher.py detach --help python3 layer_detacher.py handle-prerequisites --help python3 layer_detacher.py cleanup --help
Sie sind jetzt bereit, loszulegen. Die folgenden Beispiele zeigen, wie Sie die Befehle für verschiedene Anwendungsfälle ausführen können.
Beispiele:
- Beispiel 1: Prüfen Sie, ob ein Layer alle Voraussetzungen erfüllt und abgetrennt werden kann
- Beispiel 2: Trennen Sie alle Instanzen einer Ebene
- Beispiel 3: Trennen Sie alle Instanzen einer Ebene stapelweise
- Beispiel 4: Bereinigen Sie alle Ressourcen für eine Ebene und löschen Sie die Ebene
- Beispiel 5: Bereinigen Sie alle Ressourcen für einen Stack und löschen Sie den Stack
Beispiel 1: Prüfen Sie, ob ein Layer alle Voraussetzungen erfüllt und abgetrennt werden kann
Der folgende Befehl liest Informationen über eine OpsWorks Ebene (und die darin enthaltenen Instanzen) und prüft, ob die folgenden Voraussetzungen erfüllt sind:
-
Alle Instanzen sind online.
-
Es gibt keine Load/Time Auto Scaling Scaling-Instanzen.
-
Alle Instanzen haben den neuesten OpsWorks Agenten.
-
Auf allen Instanzen ist der neueste SSM-Agent installiert und konfiguriert.
-
Alle Instanzen haben ein SSH-Schlüsselpaar.
-
Jede Instanz gehört zu genau einer Ebene.
python3 layer_detacher.py handle-prerequisites \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
Beispiel 2: Trennen Sie alle Instanzen einer Ebene
Der folgende Befehl iteriert über alle Instanzen des Layers, prüft, ob die Instanzen die Voraussetzungen erfüllen, und versucht, alle Instanzen, die die Voraussetzungen erfüllen, parallel zu trennen. Wenn eine oder mehrere Voraussetzungen nicht erfüllt sind, stellt der Befehl eine Option zur erzwungenen Trennung für die verbleibenden nicht konformen Instanzen bereit.
Vor dem Trennen einer Instanz führt der Befehl wie folgt aus:
-
Speichern Sie das benutzerdefinierte JSON und laden Sie es auf S3 hoch.
-
Erstellen Sie SSM-Automatisierungsdokumente für jedes OpsWorks Lebenszyklusereignis für die Ebene und laden Sie die Ausführungsprotokolle für die Automatisierungsdokumente auf S3 hoch.
-
Erstellen Sie eine AppRegistry Anwendung für alle Instanzen, die getrennt werden sollen. Der Anwendung ist eine Ressourcengruppe zugeordnet, die alle getrennten Instanzen und Ressourcen enthält. Zu den Ressourcen gehören SSM-Automatisierungsdokumente und SSM-Parameter, die Informationen über Lebenszyklusereignisse und benutzerdefinierte Chef-Rezepte enthalten.
-
Trennt den Classic Load Balancer von der Ebene, falls vorhanden.
Mit diesem Befehl werden nur OpsWorks Ressourcen geändert. Der Status der EC2-Instances bleibt unverändert.
python3 layer_detacher.py detach \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
Beispiel 3: Trennen Sie alle Instanzen einer Ebene stapelweise
Der folgende Befehl macht dasselbe wie das vorherige Beispiel. Der einzige Unterschied besteht darin, dass die Instanzen stapelweise getrennt werden.
Mit diesem Befehl werden nur OpsWorks Ressourcen geändert. Der Status der EC2-Instances bleibt unverändert.
python3 layer_detacher.py detach \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
\ --batch-size5
Beispiel 4: Bereinigen Sie alle Ressourcen für eine Ebene und löschen Sie die Ebene
Mit dem folgenden Befehl wird über alle Ressourcen einer Ebene iteriert und diese gelöscht. Genauer gesagt werden alle Instances in und EC2 gestoppt und gelöscht, der Load Balancer getrennt OpsWorks und Amazon RDS-Instances, Elastic IPs und Volumes deregistriert. Nach dem Bereinigen der Ressourcen wird die Ebene gelöscht.
Dieser Befehl löscht OpsWorks Ressourcen und EC2-Instances. Wenn Sie möchten, dass Ihre EC2-Instances unangetastet bleiben, verwenden Sie den detach
Befehl, bevor Sie den Befehl verwenden. cleanup
Auf diese Weise löscht der cleanup
Befehl alle verbleibenden Ressourcen.
python3 layer_detacher.py cleanup \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
Beispiel 5: Bereinigen Sie alle Ressourcen für einen Stack und löschen Sie den Stack
Der folgende Befehl iteriert über alle Ebenen und dann über die Ressourcen jeder Ebene. Für jede Ebene stoppt und löscht der Befehl alle Instances in und EC2, trennt Load Balancer OpsWorks und hebt die Registrierung von Amazon RDS-Instances, Elastic IPs und Volumes auf. Anschließend löscht der Befehl die Ebene. Derselbe Vorgang wird in jeder Ebene ausgeführt, die zu diesem Stapel gehört. Nachdem alle Ebenen gelöscht wurden, wird der Stapel schließlich entfernt.
Dieser Befehl löscht OpsWorks Ressourcen und EC2-Instances. Wenn Sie möchten, dass Ihre EC2-Instances unangetastet bleiben, verwenden Sie den detach
Befehl, bevor Sie den Befehl verwenden. cleanup
Auf diese Weise löscht der cleanup
Befehl alle verbleibenden Ressourcen.
python3 layer_detacher.py cleanup \ --stack-id
opsworks-stack-id
\ --regionopsworks-stack-region
Schritt 4: Verwenden Sie Ihre Ressourcen weiter, nachdem Sie sich von getrennt haben OpsWorks
Nach der Ausführung des detach
Befehls erstellt das Tool eine neue AWS Service Catalog AppRegistry
Anwendung, die der abgelösten Ebene entspricht. Der Name der Anwendung folgt dem Format
. Außerdem wird das layer-name
---layer-id
OpsWorksLayerId
Tag hinzugefügt, um die Anwendung eindeutig zu identifizieren, die der abgetrennten Ebene entspricht.
Um dieser Anwendung neue AWS Ressourcen hinzuzufügen (z. B. neue EC2-Instances), können Sie einen der folgenden Schritte ausführen:
-
Kennzeichnen Sie die Ressource mit dem eindeutigen Anwendungs-Tag der AppRegistry Anwendung:
Tag-Schlüssel:
awsApplication
Wert:
arn:aws:resource-groups:
region
:account-id
:group/application-name
/application-id
> -
Führen Sie den Befehl associate-resource aus.
Zusätzlich wird für jede AppRegistry Anwendung eine Ressourcengruppe erstellt. Die Ressourcengruppe enthält die folgenden Tags.
Tag-Schlüssel | Wert |
---|---|
|
|
|
|
|
|
|
|
Aufgaben nach der Trennung ausführen
Die folgende Tabelle enthält Informationen zur Ausführung von Aufgaben nach einer Trennung:
Aufgabe | Beschreibung |
---|---|
Ausführung von Lebenszyklusereignissen |
Nachdem Sie den Der Name jedes Automatisierungsdokuments folgt diesem Format: Um OpsWorks das Verhalten in Systems Manager zu simulieren, müssen Sie Automatisierungsausführungen manuell auslösen, wenn Sie EC2-Instances bereitstellen, beenden oder Rezepte bereitstellen/entfernen. |
Benutzerdefiniertes JSON aktualisieren |
Benutzerdefiniertes JSON für den Stack und die Ebene wird in einem S3-Bucket gespeichert, der beim Trennen angegeben wurde, oder alternativ in einem neuen S3-Bucket, der erstellt wird. Die für die JSON-Dateien gespeicherten Dateinamen lauten wie folgt:
|
Ändern Sie Ihre Ausführungsliste für Lebenszyklusereignisse |
Die Ausführungsliste für jedes Lebenszyklusereignis ist im entsprechenden Automatisierungsdokument definiert. Um die Ausführungsliste zu ändern, suchen Sie in der AppRegistry Anwendung nach den Automatisierungsdokumenten und ändern Sie den Der Vorgang zum Aktualisieren von Rezepten und Kochbüchern ist unverändert |
Verwaltung von Auto Healing/Auto Scaling |
Wenn Sie eine Instanz trennen, wird der OpsWorks Agent deinstalliert. Ohne den Agenten können fehlerhafte Instances OpsWorks nicht automatisch repariert oder ersetzt werden, und Ihre Flotte kann auch nicht auto skaliert werden. Um Auto Scaling fortzusetzen und ausgefallene Instances zu ersetzen, erstellen Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe. Die Gruppe wird neue Instances starten, um die gewünschte Kapazität aufrechtzuerhalten, wenn Amazon EC2 fehlerhafte Instances erkennt, die ersetzt werden müssen. |
Load Balancer verwalten |
Wenn Ihr Layer einen Classic Load Balancer verwendet, trennt der |
Herstellen einer Verbindung zu Ihren Instances |
Wenn Sie den
Die Befehle bieten Ihnen auch die Möglichkeit, den SSM-Agenten zu aktualisieren und die erforderlichen Berechtigungen hinzuzufügen, sodass Sie mithilfe des Sitzungs-Managers eine Verbindung zu Instanzen herstellen können. Wenn SSH-Schlüssel vorhanden sind, haben Sie auch die Möglichkeit, per SSH auf die Instanz zuzugreifen. |
Verwenden der Registerkarte „Instanzen“ von Systems Manager Application Manager
Nach dem Trennen können Sie Ihre Instanzen auf der Registerkarte „Application Manager-Instanzen“ anzeigen und verwalten.
Die Registerkarte „Instanzen“ enthält zusammengefasste Informationen über die EC2-Instances einer Anwendung, z. B. ihren Status, ihren Integritätsstatus und den Status des letzten Befehls. Auf dieser Registerkarte können Sie detaillierte Informationen zu einzelnen Instanzen anzeigen, z. B. den Befehlsverlauf, den Alarmstatus, den Zustand des Systems Manager Manager-Agenten und mehr. Die Registerkarte Instances bietet auch eine Vielzahl von Aktionen, z. B. die Möglichkeit, Chef-Rezepte anzuwenden, eine Instance zu starten oder zu stoppen oder eine Instance zu einer Auto Scaling Scaling-Gruppe hinzuzufügen oder zu entfernen.