Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Behalten des Zugriffs auf ein Amazon Machine Image (AMI) für eine außer Betrieb genommene Plattform

Fokusmodus
Behalten des Zugriffs auf ein Amazon Machine Image (AMI) für eine außer Betrieb genommene Plattform - AWS Elastic Beanstalk

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.

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.

Elastic Beanstalk setzt einen Plattformzweig-Status auf außer Betrieb genommen, wenn das Betriebssystem oder die Hauptkomponente, die vom Zweig verwendet wird, das Ende der Lebensdauer erreicht. Das Basis-AMI von Elastic Beanstalk für den Plattformzweig kann auch privat gemacht werden, um die Verwendung dieses out-of-date AMI zu verhindern. Umgebungen, in AMIs denen das als privat deklariert wurde, werden keine Instances mehr starten können.

Wenn Sie Ihre Anwendung nicht in eine unterstützte Umgebung migrieren können, bevor sie außer Betrieb genommen wurde, befindet sich Ihre Umgebung möglicherweise in dieser Situation. Es kann sein, dass eine Umgebung für einen Zweig der Beanstalk-Plattform aktualisiert werden muss, dessen Elastic-Beanstalk-Basis-AMI privat gemacht wurde. Ein alternativer Ansatz ist verfügbar. Sie können eine bestehende Umgebung aktualisieren, die auf einer Kopie des von Ihrer Umgebung verwendeten Elastic-Beanstalk-Basis-AMIs basiert.

In diesem Thema finden Sie einige Schritte und ein eigenständiges Skript zur Aktualisierung einer bestehenden Umgebung auf der Grundlage einer Kopie des von Ihrer Umgebung verwendeten Elastic-Beanstalk-AMI. Sobald Sie Ihre Anwendung zu einer unterstützten Plattform migrieren können, können Sie weiterhin die Standardverfahren für die Wartung Ihrer Anwendung und der unterstützten Umgebungen verwenden.

Manuelle Schritte

So aktualisieren Sie eine Umgebung, die auf einer AMI-Kopie des von Elastic-Beanstalk-Basis-AMI basiert
  1. Ermitteln Sie, welches AMI Ihre Umgebung verwendet. Dieser Befehl gibt das AMI zurück, das von der Elastic-Beanstalk-Umgebung verwendet wird, die Sie in den Parametern angeben. Der zurückgegebene Wert wird als source-ami-idim nächsten Schritt verwendet.

    Führen Sie in einem Befehlsfenster einen ähnlichen Befehl wie den folgenden aus. Weitere Informationen finden Sie unter describe-configuration-settings in der Referenz zum AWS CLI -Befehl.

    Geben Sie die AWS Region an, in der das Quell-AMI gespeichert wird, das Sie kopieren möchten. Ersetzen Sie den Anwendungsnamen und den Umgebungsnamen durch diejenigen, die auf dem Quell-AMI basieren. Geben Sie den Text für den Abfrageparameter wie in der Abbildung gezeigt ein.

    >aws elasticbeanstalk describe-configuration-settings \ --application-name my-application \ --environment-name my-environment \ --region us-east-2 \ --query "ConfigurationSettings[0].OptionSettings[?OptionName=='ImageId'] | [0].Value"
  2. Kopieren Sie das AMI in Ihr Konto. Dieser Befehl gibt das neue AMI zurück, das sich aus dem Kopieren des source-ami-idim vorherigen Schritt zurückgegebenen ergibt.

    Anmerkung

    Notieren Sie sich unbedingt die neue AMI-ID, die mit diesem Befehl ausgegeben wird. Sie müssen ihn im nächsten Schritt eingeben und ihn copied-ami-idim Beispielbefehl ersetzen.

    Führen Sie in einem Befehlsfenster einen ähnlichen Befehl wie den folgenden aus. Weitere Informationen finden Sie unter copy-image in der AWS CLI -Befehlsreferenz.

    Geben Sie die AWS Region des Quell-AMI an, das Sie kopieren möchten (--source-region), und die Region, in der Sie Ihr neues benutzerdefiniertes AMI verwenden möchten (--region). source-ami-id Ersetzen Sie es durch das AMI des Images, das Sie kopieren. Das source-ami-idwurde vom Befehl im vorherigen Schritt zurückgegeben. new-ami-nameErsetzen Sie es durch einen Namen, der das neue AMI in der Zielregion beschreibt. Das Skript, das diesem Verfahren folgt, generiert den neuen AMI-Namen, indem es die Zeichenfolge "Kopie von" an den Anfang des Namens von anhängt. source-ami-id

    >aws ec2 copy-image \ --region us-east-2 \ --source-image-id source-ami-id \ --source-region us-east-2 \ --name new-ami-name
  3. Aktualisieren Sie eine Umgebung, um das kopierte AMI zu verwenden. Nachdem der Befehl ausgeführt wurde, gibt er den Status der Umgebung zurück.

    Führen Sie in einem Befehlsfenster einen ähnlichen Befehl wie den folgenden aus. Weitere Informationen finden Sie unter update-environment in der AWS CLI -Befehlsreferenz.

    Geben Sie die AWS Region der Umgebung und Anwendung an, die Sie aktualisieren möchten. Ersetzen Sie den Anwendungs- und Umgebungsnamen durch die Namen, die Sie copied-ami-idaus dem vorherigen Schritt zuordnen müssen. Ersetzen copied-ami-id Sie den Parameter --option-setttings durch die AMI-ID, die Sie in der Ausgabe des vorherigen Befehls notiert haben.

    >aws elasticbeanstalk update-environment \ --application-name my-application \ --environment-name my-environment \ --region us-east-2 \ --option-settings "Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value=copied-ami-id"
Anmerkung

Um die Speicherkosten zu minimieren, sollten Sie Ihr benutzerdefiniertes AMI bereinigen, wenn Sie es nicht mehr zum Starten von Elastic-Beanstalk-Umgebungen benötigen. Weitere Informationen finden Sie unter Bereinigen eines benutzerdefinierten AMI.

Eigenständiges Skript

Das folgende Skript liefert dieselben Ergebnisse wie die vorherigen manuellen Schritte. Laden Sie das Skript herunter, indem Sie auf diesen Link klicken: copy_ami_and_update_env.zip.

#!/bin/bash set -ue USAGE="This script is used to copy an AMI used by your Elastic Beanstalk environment into your account to use in your environment.\n\n" USAGE+="Usage:\n\n" USAGE+="./$(basename $0) [OPTIONS]\n" USAGE+="OPTIONS:\n" USAGE+="\t--application-name <application-name>\tThe name of your Elastic Beanstalk application.\n" USAGE+="\t--environment-name <environment-name>\tThe name of your Elastic Beanstalk environment.\n" USAGE+="\t--region <region> \t\t\tThe AWS region your Elastic Beanstalk environment is deployed to.\n" USAGE+="\n\n" USAGE+="Script Usage Example(s):\n" USAGE+="./$(basename $0) --application-name my-application --environment-name my-environment --region us-east-1\n" if [ $# -eq 0 ]; then echo -e $USAGE exit fi while [[ $# -gt 0 ]]; do case $1 in --application-name) APPLICATION_NAME="$2"; shift ;; --environment-name) ENVIRONMENT_NAME="$2"; shift ;; --region) REGION="$2"; shift ;; *) echo "Unknown option $1" ; echo -e $USAGE ; exit ;; esac shift done aws_cli_version="$(aws --version)" if [ $? -ne 0 ]; then echo "aws CLI not found. Please install it: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html. Exiting." exit 1 fi echo "Using aws CLI version: ${aws_cli_version}" account=$(aws sts get-caller-identity --query "Account" --output text) echo "Using account ${account}" environment_ami_id=$(aws elasticbeanstalk describe-configuration-settings \ --application-name "$APPLICATION_NAME" \ --environment-name "$ENVIRONMENT_NAME" \ --region "$REGION" \ --query "ConfigurationSettings[0].OptionSettings[?OptionName=='ImageId'] | [0].Value" \ --output text) echo "Image associated with environment ${ENVIRONMENT_NAME} is ${environment_ami_id}" owned_image=$(aws ec2 describe-images \ --owners self \ --image-ids "$environment_ami_id" \ --region "$REGION" \ --query "Images[0]" \ --output text) if [ "$owned_image" != "None" ]; then echo "${environment_ami_id} is already owned by account ${account}. Exiting." exit fi source_image_name=$(aws ec2 describe-images \ --image-ids "$environment_ami_id" \ --region "$REGION" \ --query "Images[0].Name" \ --output text) if [ "$source_image_name" = "None" ]; then echo "Cannot find ${environment_ami_id}. Please contact AWS support if you need additional help: https://aws.amazon.com/support." exit 1 fi copied_image_name="Copy of ${source_image_name}" copied_ami_id=$(aws ec2 describe-images \ --owners self \ --filters Name=name,Values="${copied_image_name}" \ --region "$REGION" \ --query "Images[0].ImageId" \ --output text) if [ "$copied_ami_id" != "None" ]; then echo "Detected that ${environment_ami_id} has already been copied by account ${account}. Skipping image copy." else echo "Copying ${environment_ami_id} to account ${account} with name ${copied_image_name}" copied_ami_id=$(aws ec2 copy-image \ --source-image-id "$environment_ami_id" \ --source-region "$REGION" \ --name "$copied_image_name" \ --region "$REGION" \ --query "ImageId" \ --output text) echo "New AMI ID is ${copied_ami_id}" echo "Waiting for ${copied_ami_id} to become available" aws ec2 wait image-available \ --image-ids "$copied_ami_id" \ --region "$REGION" echo "${copied_ami_id} is now available" fi echo "Updating environment ${ENVIRONMENT_NAME} to use ${copied_ami_id}" environment_status=$(aws elasticbeanstalk update-environment \ --application-name "$APPLICATION_NAME" \ --environment-name "$ENVIRONMENT_NAME" \ --option-settings "Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value=${copied_ami_id}" \ --region "$REGION" \ --query "Status" \ --output text) echo "Environment ${ENVIRONMENT_NAME} is now ${environment_status}" echo "Waiting for environment ${ENVIRONMENT_NAME} update to complete" aws elasticbeanstalk wait environment-updated \ --application-name "$APPLICATION_NAME" \ --environment-names "$ENVIRONMENT_NAME" \ --region "$REGION" echo "Environment ${ENVIRONMENT_NAME} update complete"

#!/bin/bash set -ue USAGE="This script is used to copy an AMI used by your Elastic Beanstalk environment into your account to use in your environment.\n\n" USAGE+="Usage:\n\n" USAGE+="./$(basename $0) [OPTIONS]\n" USAGE+="OPTIONS:\n" USAGE+="\t--application-name <application-name>\tThe name of your Elastic Beanstalk application.\n" USAGE+="\t--environment-name <environment-name>\tThe name of your Elastic Beanstalk environment.\n" USAGE+="\t--region <region> \t\t\tThe AWS region your Elastic Beanstalk environment is deployed to.\n" USAGE+="\n\n" USAGE+="Script Usage Example(s):\n" USAGE+="./$(basename $0) --application-name my-application --environment-name my-environment --region us-east-1\n" if [ $# -eq 0 ]; then echo -e $USAGE exit fi while [[ $# -gt 0 ]]; do case $1 in --application-name) APPLICATION_NAME="$2"; shift ;; --environment-name) ENVIRONMENT_NAME="$2"; shift ;; --region) REGION="$2"; shift ;; *) echo "Unknown option $1" ; echo -e $USAGE ; exit ;; esac shift done aws_cli_version="$(aws --version)" if [ $? -ne 0 ]; then echo "aws CLI not found. Please install it: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html. Exiting." exit 1 fi echo "Using aws CLI version: ${aws_cli_version}" account=$(aws sts get-caller-identity --query "Account" --output text) echo "Using account ${account}" environment_ami_id=$(aws elasticbeanstalk describe-configuration-settings \ --application-name "$APPLICATION_NAME" \ --environment-name "$ENVIRONMENT_NAME" \ --region "$REGION" \ --query "ConfigurationSettings[0].OptionSettings[?OptionName=='ImageId'] | [0].Value" \ --output text) echo "Image associated with environment ${ENVIRONMENT_NAME} is ${environment_ami_id}" owned_image=$(aws ec2 describe-images \ --owners self \ --image-ids "$environment_ami_id" \ --region "$REGION" \ --query "Images[0]" \ --output text) if [ "$owned_image" != "None" ]; then echo "${environment_ami_id} is already owned by account ${account}. Exiting." exit fi source_image_name=$(aws ec2 describe-images \ --image-ids "$environment_ami_id" \ --region "$REGION" \ --query "Images[0].Name" \ --output text) if [ "$source_image_name" = "None" ]; then echo "Cannot find ${environment_ami_id}. Please contact AWS support if you need additional help: https://aws.amazon.com/support." exit 1 fi copied_image_name="Copy of ${source_image_name}" copied_ami_id=$(aws ec2 describe-images \ --owners self \ --filters Name=name,Values="${copied_image_name}" \ --region "$REGION" \ --query "Images[0].ImageId" \ --output text) if [ "$copied_ami_id" != "None" ]; then echo "Detected that ${environment_ami_id} has already been copied by account ${account}. Skipping image copy." else echo "Copying ${environment_ami_id} to account ${account} with name ${copied_image_name}" copied_ami_id=$(aws ec2 copy-image \ --source-image-id "$environment_ami_id" \ --source-region "$REGION" \ --name "$copied_image_name" \ --region "$REGION" \ --query "ImageId" \ --output text) echo "New AMI ID is ${copied_ami_id}" echo "Waiting for ${copied_ami_id} to become available" aws ec2 wait image-available \ --image-ids "$copied_ami_id" \ --region "$REGION" echo "${copied_ami_id} is now available" fi echo "Updating environment ${ENVIRONMENT_NAME} to use ${copied_ami_id}" environment_status=$(aws elasticbeanstalk update-environment \ --application-name "$APPLICATION_NAME" \ --environment-name "$ENVIRONMENT_NAME" \ --option-settings "Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value=${copied_ami_id}" \ --region "$REGION" \ --query "Status" \ --output text) echo "Environment ${ENVIRONMENT_NAME} is now ${environment_status}" echo "Waiting for environment ${ENVIRONMENT_NAME} update to complete" aws elasticbeanstalk wait environment-updated \ --application-name "$APPLICATION_NAME" \ --environment-names "$ENVIRONMENT_NAME" \ --region "$REGION" echo "Environment ${ENVIRONMENT_NAME} update complete"
Anmerkung

Sie müssen das AWS CLI installiert haben, um das Skript ausführen zu können. Installationsanweisungen finden Sie unter Installieren oder Aktualisieren der aktuellen Version der AWS CLI im Benutzerhandbuch zu AWS Command Line Interface .

Nach der Installation müssen Sie es auch so konfigurieren AWS CLI, dass es das AWS Konto verwendet, dem die Umgebung gehört. Weitere Informationen finden Sie unter Konfigurieren der AWS CLI im AWS Command Line Interface -Benutzerhandbuch. Das Konto muss außerdem über Berechtigungen zum Erstellen eines AMI und zum Aktualisieren der Elastic-Beanstalk-Umgebung verfügen.

Diese Schritte beschreiben den Prozess, dem das Skript folgt.

  1. Drucken Sie das verwendete Konto aus.

  2. Ermitteln Sie, welches AMI von der Umgebung verwendet wird (Quell-AMI).

  3. Prüfen Sie, ob das Quell-AMI bereits dem Konto gehört. Falls ja, beenden Sie das Programm.

  4. Ermitteln Sie den Namen des Quell-AMI, damit er im neuen AMI-Namen verwendet werden kann. Dies dient auch dazu, den Zugriff auf das Quell-AMI zu bestätigen.

  5. Prüfen Sie, ob das Quell-AMI bereits in das Konto kopiert wurde. Dazu wird nach AMIs dem Namen des kopierten AMI gesucht, das dem Konto gehört. Wenn der AMI-Name zwischen den Skriptausführungen geändert wurde, wird das Image erneut kopiert.

  6. Wenn das Quell-AMI noch nicht kopiert wurde, kopieren Sie das Quell-AMI in das Konto und warten Sie, bis das neue AMI verfügbar ist.

  7. Aktualisieren Sie die Umgebungskonfiguration, um das neue AMI zu verwenden.

  8. Warten Sie, bis die Aktualisierung der Umgebung abgeschlossen ist.

Nachdem Sie das Skript aus der Datei copy_ami_and_update_env.zip extrahiert haben, führen Sie es aus, indem Sie das folgende Beispiel ausführen. Ersetzen Sie den Anwendungsnamen und den Umgebungsnamen im Beispiel durch Ihre eigenen Werte.

>sh copy_ami_and_update_env.sh \ --application-name my-application \ --environment-name my-environment \ --region us-east-1
Anmerkung

Um die Speicherkosten zu minimieren, sollten Sie Ihr benutzerdefiniertes AMI bereinigen, wenn Sie es nicht mehr zum Starten von Elastic-Beanstalk-Umgebungen benötigen. Weitere Informationen finden Sie unter Bereinigen eines benutzerdefinierten AMI.

Auf dieser Seite

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.