

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 eines benutzerdefinierten Amazon Machine Images (AMI) in Ihrer Elastic Beanstalk Beanstalk-Umgebung
<a name="using-features.customenv"></a>

In diesem Abschnitt wird erläutert, wann die Verwendung eines benutzerdefinierten AMI in Betracht gezogen werden sollte, und es werden die Verfahren zur Konfiguration und Verwaltung des benutzerdefinierten AMI in Ihrer Umgebung beschrieben. Wenn Sie eine AWS Elastic Beanstalk Umgebung erstellen, können Sie ein Amazon Machine Image (AMI) angeben, das anstelle des standardmäßigen Elastic Beanstalk Beanstalk-AMI verwendet werden soll, das in Ihrer Plattformversion enthalten ist. Ein benutzerdefiniertes AMI kann die Bereitstellungszeiten verbessern, wenn Instances in Ihrer Umgebung gestartet werden, wenn Sie viel Software installieren müssen, die nicht im Standard AMIs enthalten ist.

Die Verwendung von [Konfigurationsdateien](ebextensions.md) ist effektiv, um Ihre Umgebung schnell und konsistent anzupassen. Das Anwenden von Konfigurationen kann jedoch bei der Erstellung und Aktualisierung der Umgebung viel Zeit in Anspruch nehmen. Wenn Sie viele Server-Konfigurationen in Konfigurationsdateien vornehmen, können Sie diese Zeit verringern, indem Sie eine benutzerdefinierte AMI erstellen, die bereits über die benötigte Software und Konfiguration verfügt.

Mit einem benutzerdefinierten AMI können Sie auch Änderungen an niedrigen Komponenten vornehmen, wie z. B. dem Linux-Kernel, die schwierig zu implementieren sind oder lange für die Anwendung auf Konfigurationsdateien brauchen. Zum Erstellen eines benutzerdefinierten AMI starten Sie ein Elastic Beanstalk-AMI in Amazon EC2, passen die Software und Konfiguration an Ihre Anforderungen an, halten die Instance an und speichern ein AMI daraus.

## Erstellen eines benutzerdefinierten AMI
<a name="using-features.customenv.create"></a>

 AMIs Als Alternative zu diesen Verfahren können Sie [EC2 Image Builder](https://aws.amazon.com/image-builder) verwenden, um benutzerdefinierte zu erstellen und zu verwalten. Weitere Informationen finden Sie im [Image Builder Builder-Benutzerhandbuch](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html).

**So identifizieren Sie das Basis-AMI von Elastic Beanstalk**

1. Führen Sie in einem Befehlsfenster einen ähnlichen Befehl wie den folgenden aus. Weitere Informationen finden Sie unter [describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html) in der Referenz zum *AWS CLI -Befehl*. 

   Geben Sie die AWS Region an, in der Sie Ihr benutzerdefiniertes AMI verwenden möchten, und ersetzen Sie den Plattform-ARN und die Versionsnummer durch die Elastic Beanstalk-Plattform, auf der Ihre Anwendung basiert.

     
**Example - Mac OS/Linux OS**  

   ```
   $ aws elasticbeanstalk describe-platform-version --region us-east-2 \
         --platform-arn "arn:aws:elasticbeanstalk:us-east-2::platform/Node.js 20 running on 64bit Amazon Linux 2023/6.1.7" \
         --query PlatformDescription.CustomAmiList
   [
       {
           "VirtualizationType": "pv",
           "ImageId": ""
       },
       {
           "VirtualizationType": "hvm",
           "ImageId": "ami-020ae06fdda6a0f66"
       }
   ]
   ```  
**Example - Windows OS**  

   ```
   C:\> aws elasticbeanstalk describe-platform-version --region us-east-2 --platform-arn"arn:aws:elasticbeanstalk:us-east-2::platform/
   IIS 10.0 running on 64bit Windows Server 2022/2.15.3" --query PlatformDescription.CustomAmiList
   [
       {
           "VirtualizationType": "pv",
           "ImageId": ""
       },
       {
           "VirtualizationType": "hvm",
           "ImageId": "ami-020ae06fdda6a0f66"
       }
   ]
   ```

1. Notieren Sie sich den `ImageId`-Wert, der im Ergebnis wie `ami-020ae06fdda6a0f66` aussieht.

Der Wert ist das standardmäßige Elastic Beanstalk Beanstalk-AMI für die Plattformversion, die EC2-Instance-Architektur und die AWS Region, die für Ihre Anwendung relevant sind. Wenn Sie AMIs für mehrere Plattformen, Architekturen oder AWS Regionen erstellen müssen, wiederholen Sie diesen Vorgang, um das richtige Basis-AMI für jede Kombination zu ermitteln.

**Anmerkung**  
Erstellen Sie kein AMI aus einer Instance, die in einer Elastic Beanstalk-Umgebung gestartet wurde. Elastic Beanstalk nimmt Änderungen an Instances während der Bereitstellung vor, die zu Problemen im gespeicherten AMI führen können. Durch das Speichern eines Image von einer Instance in einer Elastic Beanstalk-Umgebung wird auch die Version Ihrer Anwendung, die für die Instance bereitgestellt wurde, zu einem festen Teil des Image.

Für Linux ist es auch möglich, ein benutzerdefiniertes AMI von einem Community-AMI zu erstellen, dass nicht von Elastic Beanstalk veröffentlicht wurde. Sie können das neueste [Amazon Linux](https://aws.amazon.com/amazon-linux-ami/)-AMI als Ausgangspunkt verwenden. Wenn Sie eine Umgebung mit einem Linux AMI starten, das nicht von Elastic Beanstalk verwaltet wird, versucht Elastic Beanstalk die Plattformsoftware (Sprache, Framework, Proxy-Server usw.) und zusätzliche Komponenten zur Unterstützung von Funktionen, wie [Erweiterte Zustandsberichte](health-enhanced.md) zu installieren. 

**Anmerkung**  
Benutzerdefiniert, die auf Windows Server AMIs basieren, erfordern das standardmäßige Elastic Beanstalk AMI`describe-platform-version`, von dem zurückgegeben wurde, wie zuvor in Schritt 1 gezeigt.

Obwohl Elastic Beanstalk ein AMI verwenden kann, das nicht von Elastic Beanstalk verwaltet wird, kann die erhöhte Bereitstellungszeit, die sich daraus ergibt, dass Elastic Beanstalk fehlende Komponenten installiert, die Vorteile der Erstellung eines benutzerdefinierten AMI im Vorhinein verringern oder aufheben. Andere Linux-Distributionen könnten mit einiger Fehlerbehebung funktionieren, werden aber nicht offiziell unterstützt. Wenn Ihre Anwendung eine spezifische Linux-Distribution erfordert, ist es alternativ auch möglich, ein Docker-Image zu erstellen und es auf der [Docker-Plattform](docker.md) oder [Multicontainer Docker-Plattform](create_deploy_docker_ecs.md) von Elastic Beanstalk auszuführen.

**So erstellen Sie ein benutzerdefiniertes AMI**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie **Launch Instance** aus.

1. Wenn Sie ein Basis-AMI von Elastic Beanstalk (unter Verwendung von `describe-platform-version`) oder ein Amazon Linux-AMI identifiziert haben, geben Sie die AMI-ID in das Suchfeld ein. Drücken Sie anschließend die **Eingabetaste**.

   Sie können auch die Liste für eine andere Community-AMI durchsuchen, die Ihren Anforderungen entspricht.
**Anmerkung**  
Wir empfehlen, dass Sie eine AMI mit HVM-Virtualisierung verwenden. In ihrer AMIs Beschreibung wird der **Virtualisierungstyp: hvm angegeben**.  
Weitere Informationen finden Sie unter [Virtualisierungstypen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#virtualization_types) im *Amazon EC2 EC2-Benutzerhandbuch*.

1. Wählen Sie **Select (Auswählen)** zum Auswählen des AMI aus.

1. Wählen Sie einen Instance-Typen und danach **Weiter: Instance-Details konfigurieren** aus.

1. **(Für veraltete Amazon Linux AMI (AL1) -Plattformen)** Überspringen Sie diesen Schritt, wenn Ihre Umgebung auf einer unterstützten Linux-basierten Plattform oder auf einer Windows-Plattform läuft.

   Erweitern Sie den Abschnitt **Erweiterte Details** und fügen Sie den folgenden Text in das Feld **Benutzerdaten** ein.

   ```
   #cloud-config
     repo_releasever: repository version number
     repo_upgrade: none
   ```

   Die *Repository-Versionsnummer* ist das Jahr und der Monat der Version im AMI-Namen. AMIs Basierend auf der Version von Amazon Linux vom März 2015 haben Sie beispielsweise eine Repository-Versionsnummer`2015.03`. Bei einem Elastic Beanstalk-Image entspricht dies dem Datum, das im Namen des Lösungs-Stacks für Ihre [Plattformversion](concepts.platforms.md) auf der Basis von Amazon Linux AMI (Vorgängerversion von Amazon Linux 2) angegeben ist.
**Anmerkung**  
Die `repo_releasever` Einstellung konfiguriert die lock-on-launch Funktion für ein Amazon Linux AMI. Dies bewirkt, dass das AMI beim Start eine feste, spezifische Repository-Version verwendet. Diese Funktion wird unter Amazon Linux 2 nicht unterstützt . Geben Sie sie nicht an, wenn Ihre Umgebung einen aktuellen Amazon Linux 2-Plattformzweig verwendet. Die Einstellung ist erforderlich, wenn Sie ein benutzerdefiniertes AMI mit Elastic Beanstalk ausschließlich auf Amazon Linux AMI-Plattformzweigen verwenden (vor Amazon Linux 2).  
Die Einstellung `repo_upgrade` deaktiviert die automatische Installation von Sicherheitsupdates. Dies ist für die Verwendung eines benutzerdefinierten AMI mit Elastic Beanstalk erforderlich.

1. Führen Sie die Schritte im Assistenten aus, um die [EC2-Instance zu starten](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-an-instance.html). Wenn Sie dazu aufgefordert werden, wählen Sie ein Schlüsselpaar, auf das Sie Zugriff haben, um die Verbindung zur Instance für die nächsten Schritte herzustellen.

1.  [Stellen Sie eine Verbindung mit der Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) über SSH oder RDP her.

1. Führen Sie alle gewünschten Anpassungen durch.

1. **(Windows-Plattformen)** Führen Sie den EC2 Config-Dienst Sysprep aus. Informationen zu EC2 Config finden Sie unter [Konfiguration einer Windows-Instanz mithilfe des EC2 Config-Dienstes](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html). Stellen Sie sicher, dass Sysprep konfiguriert ist, um ein zufälliges Passwort zu generieren, das von der AWS-Managementkonsole abgerufen werden kann.

1. Stoppen Sie in der Amazon EC2-Konsole die EC2-Instance. Anschließend wählen Sie im Menü **Instance Actions (Instance-Aktionen)** die Option **Create Image (EBS AMI) (Image erstellen (EBS AMI))** aus.

1. Um zusätzliche AWS Gebühren zu vermeiden, [beenden Sie die EC2-Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html).

**So verwenden Sie Ihr benutzerdefiniertes AMI in einer Elastic Beanstalk-Umgebung**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Capacity (Kapazität)** die Option **Edit (Bearbeiten)**.

1. Geben Sie bei **AMI-ID** Ihre benutzerdefinierte AMI-ID ein.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Wenn Sie eine neue Umgebung mit dem benutzerdefinierten AMI erstellen, sollten Sie dieselbe Plattformversion verwenden, die Sie als Grundlage für das Erstellen des AMI verwendet haben. 

## Verwaltung einer Umgebung mit einem benutzerdefinierten AMI
<a name="using-features.customenv.managing"></a>

### Plattformaktualisierungen
<a name="using-features.customenv.platform-updates."></a>

Bei Verwendung eines benutzerdefinierten AMI verwendet Elastic Beanstalk weiterhin dasselbe benutzerdefinierte AMI in einer Umgebung, wenn die Plattformversion aktualisiert wird, unabhängig davon, ob das Update manuell oder über verwaltete Plattformupdates angewendet wird. Die Umgebung wird **nicht** zurückgesetzt, um das Standard-AMI der neuen Plattformversion zu verwenden.

Wir empfehlen, dass Sie ein neues benutzerdefiniertes AMI erstellen, das auf dem Standard-AMI der neuen Plattformversion basiert. Dadurch werden die in der neuen Plattformversion verfügbaren Patches angewendet und außerdem werden Bereitstellungsfehler aufgrund inkompatibler Paket- oder Bibliotheksversionen minimiert.

Weitere Informationen zum Erstellen eines neuen benutzerdefinierten AMI finden Sie weiter [Erstellen eines benutzerdefinierten AMI](#using-features.customenv.create) oben in diesem Thema.

### Ein benutzerdefiniertes AMI entfernen
<a name="using-features.customenv.platform-updates."></a>

Wenn Sie ein benutzerdefiniertes AMI aus einer Umgebung entfernen und es so zurücksetzen möchten, dass es das Standard-AMI für die Plattformversion der Umgebung verwendet, verwenden Sie den folgenden CLI-Befehl.

```
aws elasticbeanstalk update-environment \
  --application-name my-application \
  --environment-name my-environment \
  --region us-east-1 \
  --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId
```

**Anmerkung**  
Um Betriebsunterbrechungen zu vermeiden, testen Sie Ihre Anwendung mit einem Standard-AMI, bevor Sie diese Änderung auf Ihre Produktionsumgebung anwenden.

## Bereinigen eines benutzerdefinierten AMI
<a name="using-features.customenv.cleanup"></a>

Wenn Sie mit einem benutzerdefinierten AMI fertig sind und dieses nicht mehr benötigen, um Elastic Beanstalk-Umgebungen zu starten, sollten Sie in Betracht ziehen, es zu bereinigen, um die Speicherkosten zu minimieren. Die Bereinigung eines benutzerdefinierten AMI beinhaltet dessen Abmeldung von Amazon EC2 und das Löschen anderer zugehöriger Ressourcen. Weitere Informationen finden Sie unter [Abmelden Ihres Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html) oder [Abmelden Ihres Windows AMI](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/deregister-ami.html).

# Behalten des Zugriffs auf ein Amazon Machine Image (AMI) für eine außer Betrieb genommene Plattform
<a name="using-features.customenv-env-copy"></a>

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
<a name="using-features.customenv-env-copy.manual-steps"></a>

**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-id*im 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](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-configuration-settings.html) 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.  
**Example**  

   ```
   >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"
   ```

1. **Kopieren Sie das AMI in Ihr Konto.** Dieser Befehl gibt das neue AMI zurück, das sich aus dem Kopieren des *source-ami-id*im 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-id*im Beispielbefehl ersetzen.

   Führen Sie in einem Befehlsfenster einen ähnlichen Befehl wie den folgenden aus. Weitere Informationen finden Sie unter [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 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-id*wurde vom Befehl im vorherigen Schritt zurückgegeben. *new-ami-name*Ersetzen 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
   ```

1. **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](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 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-id*aus 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](using-features.customenv.md#using-features.customenv.cleanup).

## Eigenständiges Skript
<a name="using-features.customenv-env-copy.script"></a>

Das folgende Skript liefert dieselben Ergebnisse wie die vorherigen manuellen Schritte. Laden Sie das Skript herunter, indem Sie auf diesen Link klicken: [copy\$1ami\$1and\$1update\$1env.zip](samples/copy_ami_and_update_env.zip).

### Skriptquelle: copy\$1ami\$1and\$1update\$1env.sh
<a name="abc"></a>

```
#!/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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 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. 

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

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

1. 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.

1. 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.

1. 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.

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

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

Nachdem Sie das Skript aus der Datei [copy\$1ami\$1and\$1update\$1env.zip](samples/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](using-features.customenv.md#using-features.customenv.cleanup).