

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 der Elastic Beanstalk Python-Plattform
<a name="create-deploy-python-container"></a>

In diesem Thema wird beschrieben, wie Sie Ihre Python-Anwendungen auf Elastic Beanstalk konfigurieren, erstellen und ausführen.

AWS Elastic Beanstalk unterstützt eine Reihe von Plattformzweigen für verschiedene Versionen der Programmiersprache Python. Eine vollständige Liste finden Sie unter [Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python) im Dokument *AWS Elastic Beanstalk Plattformen*.

Die Python-Webanwendungen können hinter einem Proxyserver mit WSGI ausgeführt werden. Elastic Beanstalk stellt [Gunicorn](https://gunicorn.org/) als Standard-WSGI-Server bereit. 

Sie können eine `Procfile` zu Ihrem Quell-Bundle hinzufügen, um den WSGI-Server für Ihre Anwendung anzugeben und zu konfigurieren. Details hierzu finden Sie unter [Konfiguration des WSGI-Servers mit einem Profil auf Elastic Beanstalk](python-configuration-procfile.md).

Mit den von Pipenv erstellten `Pipfile`- und `Pipfile.lock`-Dateien können Sie Python-Paketabhängigkeiten und andere Anforderungen angeben. Details zur Angabe von Abhängigkeiten finden Sie unter [Angeben von Abhängigkeiten mithilfe einer Anforderungsdatei auf Elastic Beanstalk](python-configuration-requirements.md).

Elastic Beanstalk bietet [Konfigurationsoptionen](command-options.md), mit denen Sie die Software anpassen können, die auf den EC2 Instances in Ihrer Elastic Beanstalk Beanstalk-Umgebung ausgeführt wird. Sie können die für Ihre Anwendung erforderlichen Umgebungsvariablen konfigurieren, die Protokollrotation an Amazon S3 aktivieren und die Ordner in der Anwendungsquelle, die statische Dateien enthalten, den vom Proxy-Server verwendeten Pfaden zuordnen.

In der Elastic Beanstalk-Konsole sind Konfigurationsoptionen für das [Ändern der Konfiguration einer ausgeführten Umgebung](environment-configuration-methods-after.md) verfügbar. Um zu verhindern, dass die Umgebungskonfiguration beim Beenden verloren geht, können Sie [gespeicherte Konfigurationen](environment-configuration-savedconfig.md) verwenden, um Ihre Einstellungen zu speichern und sie später für eine andere Umgebung zu übernehmen.

Zum Speichern der Einstellungen im Quellcode können Sie [Konfigurationsdateien](ebextensions.md) einschließen. Die Einstellungen in Konfigurationsdateien werden jedes Mal verwendet, wenn Sie eine Umgebung erstellen oder Ihre Anwendung bereitstellen. Mit Konfigurationsdateien können Sie auch Pakete installieren, Skripts ausführen und andere Instance-Anpassungen bei Bereitstellungen vornehmen.

Die in der Elastic Beanstalk-Konsole angewendeten Einstellungen überschreiben die entsprechenden Einstellungen in Konfigurationsdateien, wenn vorhanden. So sind Standardeinstellungen in Konfigurationsdateien möglich, die Sie mit umgebungsspezifischen Einstellungen in der Konsole überschreiben können. Für weitere Informationen zur Rangfolge und zu anderen Methoden zum Ändern der Einstellungen siehe [Konfigurationsoptionen](command-options.md).

Bei Python-Paketen, die über `pip` bereitgestellt werden, können Sie eine Anforderungsdatei in den Stamm des Anwendungsquellcodes aufnehmen. Elastic Beanstalk installiert alle Abhängigkeitspakete, die während der Bereitstellung in einer Anforderungsdatei angegeben sind. Details hierzu finden Sie unter [Angeben von Abhängigkeiten mithilfe einer Anforderungsdatei auf Elastic Beanstalk](python-configuration-requirements.md).

Details zu den verschiedenen Erweiterungsmöglichkeiten einer Linux-basierten Elastic Beanstalk-Plattform finden Sie unter [Erweitern von Elastic Beanstalk-Linux-Plattformen](platforms-linux-extend.md).

## Konfigurieren Ihrer Python-Umgebung
<a name="create-deploy-python-container-console"></a>

Mit den Python-Plattformeinstellungen können Sie das Verhalten Ihrer EC2 Amazon-Instances optimieren. Sie können die EC2 Amazon-Instance-Konfiguration der Elastic Beanstalk Beanstalk-Umgebung mithilfe der Elastic Beanstalk Beanstalk-Konsole bearbeiten.

Verwenden Sie die Elastic Beanstalk Beanstalk-Konsole, um Python-Prozesseinstellungen zu konfigurieren AWS X-Ray, zu aktivieren, die Protokollrotation zu Amazon S3 zu aktivieren und Variablen zu konfigurieren, die Ihre Anwendung aus der Umgebung lesen kann.

**So konfigurieren Sie Ihre Python-Umgebung in der Elastic Beanstalk-Konsole**

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 **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

### Python-Einstellungen
<a name="python-console-settings"></a>
+ **Proxy server (Proxy-Server)** – Der Proxyserver, der in Ihren Umgebungs-Instances verwendet werden soll. Standardmäßig wird nginx verwendet.
+ **WSGI-Pfad** – Der Name oder Pfad zu Ihrer Hauptanwendungsdatei. Beispiel: `application.py` oder `django/wsgi.py`.
+ **NumProcesses**— Die Anzahl der Prozesse, die auf jeder Anwendungsinstanz ausgeführt werden sollen.
+ **NumThreads**— Die Anzahl der Threads, die in jedem Prozess ausgeführt werden sollen.

### AWS X-Ray Einstellungen
<a name="python-console-xray"></a>
+ **X-Ray-Daemon** — Führen Sie den AWS X-Ray Daemon aus, um Trace-Daten aus dem zu verarbeiten. [AWS X-Ray-SDK für Python](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html)

### Protokolloptionen
<a name="create-deploy-python-container.console.logoptions"></a>

Im Abschnitt mit den Protokolloptionen hat zwei Einstellungen:
+ **Instance profile (Instance-Profil)** – Gibt das Instance-Profil an, das zum Zugriff auf den entsprechenden Amazon S3-Bucket der Anwendung berechtigt ist.
+ **Rotation der Protokolldateien nach Amazon S3 aktivieren** — Gibt an, ob Protokolldateien für die EC2 Amazon-Instances Ihrer Anwendung in den Amazon S3-Bucket kopiert werden, der Ihrer Anwendung zugeordnet ist.

### Statische Dateien
<a name="python-platform-staticfiles"></a>

Um die Leistung zu verbessern, können Sie den Abschnitt **Static files** (Statische Dateien) benutzen, um den Proxy-Server so zu konfigurieren, dass er statische Dateien (z. B. HTML oder Bilder) aus Verzeichnissen innerhalb Ihrer Webanwendung bereitstellt. Legen Sie für jedes Verzeichnis den virtuellen Pfad zum Verzeichnis-Mapping fest. Wenn der Proxy-Server eine Anfrage nach einer Datei unter dem angegebenen Pfad erhält, stellt er die Datei direkt bereit, anstatt die Anfrage an Ihre Anwendung weiterzuleiten.

Weitere Informationen zum Konfigurieren statischer Dateien mit der Elastic Beanstalk-Konsole finden Sie unter [Bereitstellen von statischen Dateien](environment-cfg-staticfiles.md).

Standardmäßig stellt der Proxy-Server in einer Python-Umgebung alle Dateien im Ordner `static` unter dem Pfad `/static` bereit. Wenn beispielsweise die Anwendungsquelle eine Datei mit dem Namen `logo.png` im Ordner `static` enthält, wird diese vom Proxy-Server unter `subdomain.elasticbeanstalk.com/static/logo.png` an die Benutzer weitergeleitet. Sie können zusätzliche Zuweisungen konfigurieren, wie in diesem Abschnitt erklärt.

### Umgebungseigenschaften
<a name="create-deploy-python-custom-container-envprop"></a>

Mithilfe von Umgebungseigenschaften stellen Sie Informationen für die Anwendung bereit und konfigurieren Umgebungsvariablen. Beispielsweise können Sie eine Umgebungseigenschaft mit dem Namen `CONNECTION_STRING` mit einer Verbindungszeichenfolge erstellen, über die Ihre Anwendung eine Verbindung zu einer Datenbank herstellen kann.

Innerhalb der in Elastic Beanstalk ausgeführten Python-Umgebung können Sie diese Werte im `os.environ`-Wörterbuch von Python finden. Weitere Informationen finden Sie unter [http://docs.python. org/library/os](http://docs.python.org/library/os.html).html.

Der Code für den Zugriff auf Schlüssel und Parameter sollte wie folgt aussehen:

```
import os
endpoint = os.environ['API_ENDPOINT']
```

Umgebungseigenschaften können auch Informationen für ein Framework bereitstellen. Sie können beispielsweise eine Eigenschaft mit dem Namen `DJANGO_SETTINGS_MODULE` erstellen und so Django zur Verwendung eines bestimmten Einstellungsmoduls konfigurieren. Abhängig von der Umgebung könnte der Wert z. B. `development.settings` oder `production.settings` lauten.

Weitere Informationen finden Sie unter [Umgebungsvariablen und andere Softwareeinstellungen](environments-cfg-softwaresettings.md).

## Namespaces der Python-Konfiguration
<a name="python-namespaces"></a>

Mithilfe einer [Konfigurationsdatei](ebextensions.md) können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Die Konfigurationsoptionen können [plattformspezifisch](command-options-specific.md) sein oder für [alle Plattformen](command-options-general.md) im Elastic Beanstalk-Service als Ganzes gelten. *Die Konfigurationsoptionen sind in Namespaces organisiert.*

Die Python-Plattform definiert Optionen in den Namespaces `aws:elasticbeanstalk:environment:proxy`, `aws:elasticbeanstalk:environment:proxy:staticfiles` und `aws:elasticbeanstalk:container:python`.

In der folgenden Beispielkonfigurationsdatei werden Einstellungen für Konfigurationsoptionen angegeben, mit denen die `DJANGO_SETTINGS_MODULE`-Umgebungseigenschaft, zwei Optionen für statische Dateien, die das Verzeichnis `statichtml` dem Pfad `/html` und das Verzeichnis `staticimages` dem Pfad `/images` zuordnen, sowie weitere Einstellungen im Namespace `[aws:elasticbeanstalk:container:python](command-options-specific.md#command-options-python)` erstellt und der Apache-Proxy-Server ausgewählt werden. Dieser Namespace enthält Optionen, mit denen Sie den Speicherort des WSGI-Skripts im Quellcode und die Anzahl der Threads und Prozesse, die in WSGI ausgeführt werden sollen, angeben können.

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: production.settings
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /html: statichtml
    /images: staticimages
  aws:elasticbeanstalk:container:python:
    WSGIPath: ebdjango.wsgi:application
    NumProcesses: 3
    NumThreads: 20
```

**Hinweise**  
Wenn Sie eine Amazon Linux AMI Python-Plattformversion (Vorgängerversion von Amazon Linux 2) verwenden, ersetzen Sie den Wert für `WSGIPath` durch `ebdjango/wsgi.py`. Der Wert in diesem Beispiel ist für einen Gunicorn WSGI-Server bestimmt, der von Amazon Linux AMI-Plattformversionen nicht unterstützt wird.
Darüber hinaus verwenden diese älteren Plattformversionen einen anderen Namespace für die Konfiguration statischer Dateien:.—`aws:elasticbeanstalk:container:python:staticfiles`. Er hat die gleichen Optionsnamen und die gleiche Semantik wie der standardmäßige Namespace für statische Dateien.

Konfigurationsdateien unterstützen außerdem zahlreiche Schlüssel für die weitere [Anpassung der Software auf den Umgebungs-Instances](customize-containers-ec2.md). In diesem Beispiel wird der Schlüssel [packages (Pakete)](customize-containers-ec2.md#linux-packages) für die Memcached-Installation mit `yum` und [Container-Befehlen](customize-containers-ec2.md#linux-container-commands) verwendet, um Befehle für die Konfiguration des Servers während der Bereitstellung auszuführen.

```
packages:
  yum:
    libmemcached-devel: '0.31'

container_commands:
  collectstatic:
    command: "django-admin.py collectstatic --noinput"
  01syncdb:
    command: "django-admin.py syncdb --noinput"
    leader_only: true
  02migrate:
    command: "django-admin.py migrate"
    leader_only: true
  03wsgipass:
    command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
  99customize:
    command: "scripts/customize.sh"
```

Elastic Beanstalk bietet zahlreiche Konfigurationsoptionen für die Anpassung Ihrer Umgebung. Neben den Konfigurationsdateien können Sie die Konfigurationsoptionen auch unter Verwendung der Konsole, gespeicherter Konfigurationen, der EB CLI oder der AWS CLI einrichten. Weitere Informationen finden Sie unter [Konfigurationsoptionen](command-options.md).

## `python3`Die ausführbare Datei
<a name="python3-executable"></a>

Die Version der `python3` ausführbaren Datei, die auf EC2 Instances in Elastic Beanstalk-Python-Umgebungen verfügbar ist, entspricht nicht immer derselben Python-Version, die von der Plattform verwendet wird. `/usr/bin/python3`Verweist beispielsweise auf der Plattform Python 3.12 AL2 023 auf Python 3.9. Dies liegt daran, dass Python 3.9 das *System Python* auf AL2 023 ist. Weitere Informationen finden Sie unter [Python in AL2 023](https://docs.aws.amazon.com/linux/al2023/ug/python.html) im *Amazon Linux 2023 User Guide*. Sie können auf eine ausführbare Datei zugreifen, die der von der Plattform verwendeten Python-Version entspricht, an einem versionierten Speicherort (z. B.`/usr/bin/python3.12`) oder im `bin` Verzeichnis der virtuellen Anwendungsumgebung (z. B.`/var/app/venv/staging-LQM1lest/bin/python3`). Die Plattform verwendet die richtige ausführbare Python-Datei, die dem Plattformzweig entspricht. 

# Konfiguration des WSGI-Servers mit einem Profil auf Elastic Beanstalk
<a name="python-configuration-procfile"></a>

Sie können eine [`Procfile`](platforms-linux-extend.build-proc.md#platforms-linux-extend.proc) zu Ihrem Quell-Bundle hinzufügen, um den WSGI-Server für Ihre Anwendung anzugeben und zu konfigurieren. Sie können benutzerdefinierte Start- und Ausführungsbefehle in der angeben. `Procfile`

Wenn Sie eine `Procfile` verwenden, überschreibt sie die `aws:elasticbeanstalk:container:python`-Namespaceoptionen, die Sie mithilfe von Konfigurationsdateien festlegen.

Im folgenden Beispiel wird eine `Procfile` verwendet, um uWSGI als Server anzugeben und ihn zu konfigurieren.

**Example Procfile**  

```
web: uwsgi --http :8000 --wsgi-file application.py --master --processes 4 --threads 2
```

Im folgenden Beispiel wird eine `Procfile` verwendet, um Gunicorn, den Standard-WSGI-Server, zu konfigurieren.

**Example Procfile**  

```
web: gunicorn --bind :8000 --workers 3 --threads 2 project.wsgi:application
```

**Hinweise**  
Wenn Sie einen anderen WSGI-Server als Gunicorn konfigurieren, müssen Sie ihn auch als Abhängigkeit Ihrer Anwendung angeben, damit er auf Ihren Umgebungs-Instances installiert wird. Weitere Informationen zur Abhängigkeitsspezifikation finden Sie unter [Angeben von Abhängigkeiten mithilfe einer Anforderungsdatei auf Elastic Beanstalk](python-configuration-requirements.md).
Der Standardport für den WSGI-Server ist 8000. Wenn Sie in Ihrem `Procfile`-Befehl eine andere Portnummer angeben, legen Sie auch die `PORT`-[Umgebungseigenschaft](environments-cfg-softwaresettings.md) auf diese Portnummer fest.

# Angeben von Abhängigkeiten mithilfe einer Anforderungsdatei auf Elastic Beanstalk
<a name="python-configuration-requirements"></a>

In diesem Thema wird beschrieben, wie Sie Ihre Anwendung für die Installation anderer Python Python-Pakete konfigurieren. Eine typische Python-Anwendung weist Abhängigkeiten zu anderen Python-Paketen von Drittanbietern auf. Mit der Python-Plattform von Elastic Beanstalk haben Sie mehrere Möglichkeiten, Python-Pakete anzugeben, von denen Ihre Anwendung abhängt.

## Verwendung von `pip` und `requirements.txt`
<a name="python-configuration-requirements.txt"></a>

Das Standardwerkzeug für die Installation von Python-Paketen ist `pip`. Es hat eine Funktion, mit der Sie alle benötigten Pakete (und deren Versionen) in einer einzelnen Anforderungsdatei spezifizieren können. Weitere Informationen zur Anforderungsdatei finden Sie unter [Format der Anforderungsdatei](https://pip.pypa.io/en/latest/reference/requirements-file-format/#requirements-file-format) in der Website zur pip-Dokumentation.

Erstellen Sie eine Datei mit dem Namen `requirements.txt`, und speichern Sie diese im höchsten Verzeichnis Ihres Quell-Bundles. Das folgende Beispiel zeigt eine `requirements.txt`-Beispieldatei für Django.

```
Django==2.2
mysqlclient==2.0.3
```

In der Entwicklungsumgebung können Sie die Anforderungsdatei mit dem Befehl `pip freeze` generieren.

```
~/my-app$ pip freeze > requirements.txt
```

Damit sichergestellt ist, dass die Anforderungsdatei nur die tatsächlich von der Anwendung genutzten Pakete enthält, sollten Sie eine [virtuelle Umgebung](python-development-environment.md#python-common-setup-venv) verwenden, in der nur diese Pakete installiert sind. Außerhalb einer virtuellen Umgebung sind in der Ausgabe von `pip freeze` alle `pip`-Pakete enthalten, die auf dem Entwicklungscomputer installiert sind, darunter auch solche, die mit dem Betriebssystem ausgeliefert wurden.

**Anmerkung**  
Bei Amazon Linux AMI Python-Plattformversionen unterstützt Elastic Beanstalk Pipenv oder Pipfiles nicht nativ. Wenn Sie mit Pipenv Abhängigkeiten Ihrer Anwendung verwalten, führen Sie den folgenden Befehl aus, um eine `requirements.txt`-Datei zu generieren.  

```
~/my-app$ pipenv lock -r > requirements.txt
```
Weitere Informationen finden Sie unter [Generating a requirements.txt (Generieren einer Anforderungen.txt)](https://pipenv.readthedocs.io/en/latest/advanced/#generating-a-requirements-txt) in der Pipenv-Dokumentation.

## Verwendung von Pipenv und `Pipfile`
<a name="python-configuration-requirements.pipenv"></a>

Pipenv ist ein moderneres Python-Verpackungs-Tool. Es kombiniert die Paketinstallation mit der Erstellung und Verwaltung einer Abhängigkeitsdatei und einem virtualenv für Ihre Anwendung. Weitere Informationen finden Sie unter [Pipenv: Python Dev Workflow for Humans (Pipenv: Python Dev Workflow für Menschen)](https://pipenv.readthedocs.io/en/latest/).

Pipenv verwaltet zwei Dateien: 
+ `Pipfile` – Diese Datei enthält verschiedene Arten von Abhängigkeiten und Anforderungen.
+ `Pipfile.lock` – Diese Datei enthält einen Versions-Snapshot, der deterministische Builds ermöglicht.

Sie können die entsprechenden Dateien in Ihrer Entwicklungsumgebung erstellen und in das oberste Verzeichnis des Quellpakets aufnehmen, das Sie in Elastic Beanstalk bereitstellen. Weitere Informationen zu diesen beiden Dateien finden Sie unter [Beispiel für Pipfile und Pipfile.lock](https://pipenv.pypa.io/en/latest/basics/#).



Im folgenden Beispiel wird Pipenv verwendet, um Django und das Django REST-Framework zu installieren. Diese Befehle erstellen die Dateien `Pipfile` und `Pipfile.lock`.

```
~/my-app$ pipenv install django
~/my-app$ pipenv install djangorestframework
```

 

## Precedence
<a name="python-configuration-requirements.precedence"></a>

Wenn Sie mehr als eine der hier beschriebenen Anforderungsdateien hinzufügen, wird Elastic Beanstalk nur eine davon verwenden. Die folgende Liste zeigt die Rangfolge in absteigender Reihenfolge.

1. `requirements.txt`

1. `Pipfile.lock`

1. `Pipfile`

**Anmerkung**  
Ab der Amazon-Linux-2-Plattformversion vom 7. März 2023 gibt Elastic Beanstalk eine Konsolenmeldung aus, die angibt, welche der Abhängigkeitsdateien während einer Bereitstellung verwendet wurde, wenn Sie mehr als eine dieser Dateien bereitstellen.

In den folgenden Schritten wird die Logik beschrieben, der Elastic Beanstalk folgt, um die Abhängigkeiten zu installieren, wenn es eine Instance bereitstellt.
+ Wenn es eine `requirements.txt`-Datei gibt, verwenden wir den Befehl `pip install -r requirements.txt`.
+ Ab der Amazon Linux 2-Plattformversion vom 7. März 2023 verwenden wir den Befehl `pipenv sync`, wenn es keine `requirements.txt`-Datei gibt, aber eine `Pipfile.lock`. Vor dieser Veröffentlichung haben wir `pipenv install --ignore-pipfile` verwendet.
+ Wenn es weder eine `requirements.txt`-Datei noch eine `Pipfile.lock` gibt, aber eine `Pipfile`, verwenden wir den Befehl `pipenv install --skip-lock`.
+ Wenn keine der drei Anforderungsdateien gefunden wird, installieren wir keine Anwendungsabhängigkeiten.