Verwenden der Elastic Beanstalk Python-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.

Verwenden der Elastic Beanstalk Python-Plattform

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. Siehe Python in der AWS Elastic Beanstalk Eine vollständige Liste finden Sie im Dokument Plattformen.

Die Python-Webanwendungen können hinter einem Proxyserver mit ausgeführt WSGI werden. Elastic Beanstalk stellt Gunicorn als Standardserver zur Verfügung. WSGI

Sie können Ihrem Quellpaket einen hinzufügenProcfile, um den WSGI Server für Ihre Anwendung zu spezifizieren und zu konfigurieren. Details hierzu finden Sie unter Konfiguration des WSGI Servers mit einem Profil auf Elastic Beanstalk.

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.

Elastic Beanstalk bietet Konfigurationsoptionen, 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 verfügbar. Um zu verhindern, dass die Umgebungskonfiguration beim Beenden verloren geht, können Sie gespeicherte Konfigurationen 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 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.

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.

Details zu den verschiedenen Erweiterungsmöglichkeiten einer Linux-basierten Elastic Beanstalk-Plattform finden Sie unter Erweitern von Elastic Beanstalk-Linux-Plattformen.

Konfigurieren Ihrer Python-Umgebung

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 die Python-Prozesseinstellungen zu konfigurieren, aktivieren Sie AWS X-Ray, aktivieren Sie die Protokollrotation zu Amazon S3 und konfigurieren Sie Variablen, 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 und wählen Sie in der Liste Regionen Ihre AWS-Region.

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

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

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

  4. Wählen Sie in der Konfigurationskategorie Updates, monitoring and logging  (Updates, Überwachung und Protokolle) die Option Edit (Bearbeiten) aus.

Python-Einstellungen

  • Proxy server (Proxy-Server) – Der Proxyserver, der in Ihren Umgebungs-Instances verwendet werden soll. Standardmäßig wird nginx verwendet.

  • WSGIPfad — 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

Protokolloptionen

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

Um die Leistung zu verbessern, können Sie den Abschnitt Statische Dateien verwenden, um den Proxy-Server so zu konfigurieren, dass statische Dateien (z. HTML B. Bilder) aus einer Reihe von Verzeichnissen in Ihrer Webanwendung bereitgestellt werden. 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.

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

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.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 Umgebungseigenschaften und andere Softwareeinstellungen.

Namespaces der Python-Konfiguration

Mithilfe einer Konfigurationsdatei können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Die Konfigurationsoptionen können plattformspezifisch sein oder für alle Plattformen 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 erstellt und der Apache-Proxy-Server ausgewählt werden. Dieser Namespace enthält Optionen, mit denen Sie den Speicherort des WSGI Skripts in Ihrem Quellcode und die Anzahl der Threads und Prozesse angeben können, in denen es ausgeführt werden soll. WSGI

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 AMI Linux-Python-Plattformversion (vor Amazon Linux 2) verwenden, ersetzen Sie den Wert für WSGIPath durchebdjango/wsgi.py. Der Wert im Beispiel funktioniert mit dem WSGI Gunicorn-Server, der auf Amazon AMI Linux-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. In diesem Beispiel wird der Schlüssel packages (Pakete) für die Memcached-Installation mit yum und Container-Befehlen 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 auch Konfigurationsoptionen über die Konsole, gespeicherte Konfigurationen, den EB oder CLI den AWS CLI. KonfigurationsoptionenWeitere Informationen finden Sie unter.