Verwenden der Python-Plattform von - AWS App Runner

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 Python-Plattform von

Die AWS App Runner Python-Plattform bietet verwaltete Laufzeiten. Jede Laufzeit macht es einfach, Container mit Webanwendungen zu erstellen und auszuführen, die auf einer Python-Version basieren. Wenn Sie eine Python-Laufzeit verwenden, startet App Runner mit einem verwalteten Python-Runtime-Image. Dieses Image basiert auf dem Amazon Linux Docker-Image und enthält das Runtime-Paket für eine Version von Python sowie einige Tools und beliebte Abhängigkeitspakete. App Runner verwendet dieses verwaltete Runtime-Image als Basis-Image und fügt Ihren Anwendungscode hinzu, um ein Docker-Image zu erstellen. Anschließend wird dieses Image bereitgestellt, um Ihren Webservice in einem Container auszuführen.

Sie geben eine Laufzeit für Ihren App Runner-Dienst an, wenn Sie einen Dienst mithilfe der App Runner-Konsole oder des CreateServiceAPIVorgangs erstellen. Sie können auch eine Laufzeit als Teil Ihres Quellcodes angeben. Verwenden Sie das runtime Schlüsselwort in einer App Runner-Konfigurationsdatei, die Sie in Ihr Code-Repository aufnehmen. Die Benennungskonvention einer verwalteten Laufzeit lautet <language-name><major-version>.

Gültige Namen und Versionen der Python-Laufzeit finden Sie unterInformationen zur Python-Runtime-Version.

App Runner aktualisiert die Laufzeit für Ihren Dienst bei jeder Bereitstellung oder jedem Service-Update auf die neueste Version. Wenn Ihre Anwendung eine bestimmte Version einer verwalteten Laufzeit benötigt, können Sie diese mithilfe des runtime-version Schlüsselworts in der App Runner-Konfigurationsdatei angeben. Sie können sich auf eine beliebige Versionsebene beschränken, einschließlich einer Haupt- oder Nebenversion. App Runner aktualisiert die Laufzeit Ihres Dienstes nur auf niedrigerer Ebene.

Versionssyntax für Python-Laufzeiten: major[.minor[.patch]]

Zum Beispiel: 3.8.5

Die folgenden Beispiele demonstrieren das Sperren von Versionen:

  • 3.8— Sperren Sie die Haupt- und Nebenversionen. App Runner aktualisiert nur Patch-Versionen.

  • 3.8.5— Auf eine bestimmte Patch-Version festlegen. App Runner aktualisiert Ihre Runtime-Version nicht.

Python-Laufzeitkonfiguration

Wenn Sie sich für eine verwaltete Laufzeit entscheiden, müssen Sie mindestens auch Befehle zum Erstellen und Ausführen konfigurieren. Sie konfigurieren sie bei der Erstellung oder Aktualisierung Ihres App Runner-Dienstes. Sie können dies mit einer der folgenden Methoden tun:

  • Verwenden der App Runner-Konsole — Geben Sie die Befehle im Abschnitt Build konfigurieren des Erstellungsprozesses oder der Registerkarte Konfiguration an.

  • App Runner verwenden API — Rufen Sie die UpdateServiceAPIOperation CreateServiceoder auf. Geben Sie die Befehle mithilfe der StartCommand Elemente BuildCommand und des CodeConfigurationValuesDatentyps an.

  • Mithilfe einer Konfigurationsdatei — Geben Sie einen oder mehrere Build-Befehle in bis zu drei Build-Phasen sowie einen einzelnen Run-Befehl an, der zum Starten Ihrer Anwendung dient. Es gibt zusätzliche optionale Konfigurationseinstellungen.

Die Bereitstellung einer Konfigurationsdatei ist optional. Wenn Sie einen App Runner-Dienst mit der Konsole oder der erstellenAPI, geben Sie an, ob App Runner Ihre Konfigurationseinstellungen direkt bei der Erstellung oder aus einer Konfigurationsdatei bezieht.

Callouts für bestimmte Runtime-Versionen

Anmerkung

App Runner führt jetzt einen aktualisierten Build-Prozess für Anwendungen aus, die auf den folgenden Laufzeitversionen basieren: Python 3.11 und Node.js 18. Wenn Ihre Anwendung auf einer dieser Runtime-Versionen ausgeführt wird, finden Sie weitere Informationen Verwaltete Runtime-Versionen und der App Runner-Build zum überarbeiteten Build-Prozess unter. Anwendungen, die alle anderen Runtime-Versionen verwenden, sind nicht betroffen und sie verwenden weiterhin den ursprünglichen Build-Prozess.

Python 3.11 (überarbeiteter App Runner-Build)

Verwenden Sie die folgenden Einstellungen in der Datei apprunner.yaml für die verwaltete Python 3.11-Laufzeit.

  • Stellen Sie den Schlüssel im oberen Bereich auf runtime python311

    Beispiel
    runtime: python311
  • Verwenden Sie pip3 statt vonpip, um Abhängigkeiten zu installieren.

  • Verwenden Sie den python3 Interpreter anstelle von. python

  • Führen Sie das pip3 Installationsprogramm als pre-run Befehl aus. Python installiert Abhängigkeiten außerhalb des /app Verzeichnisses. Da App Runner den überarbeiteten App Runner-Build für Python 3.11 ausführt, geht alles verloren, was außerhalb des /app Verzeichnisses über Befehle im Build-Abschnitt der apprunner.yaml Datei installiert wurde. Weitere Informationen finden Sie unter Der überarbeitete App Runner-Build.

    Beispiel
    run: runtime-version: 3.11 pre-run: - pip3 install pipenv - pipenv install - python3 copy-global-files.py command: pipenv run gunicorn django_apprunner.wsgi --log-file -

Weitere Informationen finden Sie auch im Beispiel einer erweiterten Konfigurationsdatei für Python 3.11 weiter unten in diesem Thema.

Beispiele für Python-Runtime

Die folgenden Beispiele zeigen App Runner-Konfigurationsdateien zum Erstellen und Ausführen eines Python-Dienstes. Das letzte Beispiel ist der Quellcode für eine vollständige Python-Anwendung, die Sie in einem Python-Runtime-Service bereitstellen können.

Anmerkung

Die Runtime-Version, die in diesen Beispielen verwendet wird, ist 3.7.7 and 3.11. Sie können es durch eine Version ersetzen, die Sie verwenden möchten. Die neueste unterstützte Python-Laufzeitversion finden Sie unterInformationen zur Python-Runtime-Version.

Dieses Beispiel zeigt eine minimale Konfigurationsdatei, die Sie mit einer von Python verwalteten Laufzeit verwenden können. Informationen zu den Annahmen, die App Runner mit einer minimalen Konfigurationsdatei trifft, finden Sie unterBeispiele für Konfigurationsdateien.

Python 3.11 verwendet die python3 Befehle pip3 und. Weitere Informationen finden Sie im Beispiel einer erweiterten Konfigurationsdatei für Python 3.11 weiter unten in diesem Thema.

Beispiel apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install pipenv - pipenv install run: command: python app.py

Dieses Beispiel zeigt die Verwendung aller Konfigurationsschlüssel mit einer von Python verwalteten Laufzeit.

Anmerkung

Die Runtime-Version, die in diesen Beispielen verwendet wird, ist 3.7.7. Sie können es durch eine Version ersetzen, die Sie verwenden möchten. Die neueste unterstützte Python-Laufzeitversion finden Sie unterInformationen zur Python-Runtime-Version.

Python 3.11 verwendet die python3 Befehle pip3 und. Weitere Informationen finden Sie im Beispiel einer erweiterten Konfigurationsdatei für Python 3.11 weiter unten in diesem Thema.

Beispiel apprunner.yaml
version: 1.0 runtime: python3 build: commands: pre-build: - wget -c https://s3.amazonaws.com/amzn-s3-demo-bucket/test-lib.tar.gz -O - | tar -xz build: - pip install pipenv - pipenv install post-build: - python manage.py test env: - name: DJANGO_SETTINGS_MODULE value: "django_apprunner.settings" - name: MY_VAR_EXAMPLE value: "example" run: runtime-version: 3.7.7 command: pipenv run gunicorn django_apprunner.wsgi --log-file - network: port: 8000 env: MY_APP_PORT env: - name: MY_VAR_EXAMPLE value: "example" secrets: - name: my-secret value-from: "arn:aws:secretsmanager:us-east-1:123456789012:secret:testingstackAppRunnerConstr-kJFXde2ULKbT-S7t8xR:username::" - name: my-parameter value-from: "arn:aws:ssm:us-east-1:123456789012:parameter/parameter-name" - name: my-parameter-only-name value-from: "parameter-name"

Dieses Beispiel zeigt die Verwendung aller Konfigurationsschlüssel mit einer verwalteten Python 3.11-Laufzeit in derapprunner.yaml. Dieses Beispiel enthält einen pre-run Abschnitt, da diese Version von Python den überarbeiteten App Runner-Build verwendet.

Der pre-run Parameter wird nur vom überarbeiteten App Runner-Build unterstützt. Fügen Sie diesen Parameter nicht in Ihre Konfigurationsdatei ein, wenn Ihre Anwendung Runtime-Versionen verwendet, die vom ursprünglichen App Runner-Build unterstützt werden. Weitere Informationen finden Sie unter Verwaltete Runtime-Versionen und der App Runner-Build.

Anmerkung

Die Runtime-Version, die in diesen Beispielen verwendet wird, ist 3.11. Sie können es durch eine Version ersetzen, die Sie verwenden möchten. Die neueste unterstützte Python-Laufzeitversion finden Sie unterInformationen zur Python-Runtime-Version.

Beispiel apprunner.yaml
version: 1.0 runtime: python311 build: commands: pre-build: - wget -c https://s3.amazonaws.com/amzn-s3-demo-bucket/test-lib.tar.gz -O - | tar -xz build: - pip3 install pipenv - pipenv install post-build: - python3 manage.py test env: - name: DJANGO_SETTINGS_MODULE value: "django_apprunner.settings" - name: MY_VAR_EXAMPLE value: "example" run: runtime-version: 3.11 pre-run: - pip3 install pipenv - pipenv install - python3 copy-global-files.py command: pipenv run gunicorn django_apprunner.wsgi --log-file - network: port: 8000 env: MY_APP_PORT env: - name: MY_VAR_EXAMPLE value: "example" secrets: - name: my-secret value-from: "arn:aws:secretsmanager:us-east-1:123456789012:secret:testingstackAppRunnerConstr-kJFXde2ULKbT-S7t8xR:username::" - name: my-parameter value-from: "arn:aws:ssm:us-east-1:123456789012:parameter/parameter-name" - name: my-parameter-only-name value-from: "parameter-name"

Dieses Beispiel zeigt den Quellcode für eine vollständige Python-Anwendung, die Sie in einem Python-Runtime-Service bereitstellen können.

Beispiel requirements.txt
pyramid==2.0
Beispiel server.py
from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response import os def hello_world(request): name = os.environ.get('NAME') if name == None or len(name) == 0: name = "world" message = "Hello, " + name + "!\n" return Response(message) if __name__ == '__main__': port = int(os.environ.get("PORT")) with Configurator() as config: config.add_route('hello', '/') config.add_view(hello_world, route_name='hello') app = config.make_wsgi_app() server = make_server('0.0.0.0', port, app) server.serve_forever()
Beispiel apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt run: command: python server.py