Utilizzo della piattaforma Python di - AWS App Runner

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo della piattaforma Python di

La piattaforma AWS App Runner Python fornisce runtime gestiti. Ogni runtime semplifica la creazione e l'esecuzione di contenitori con applicazioni Web basate su una versione Python. Quando si utilizza un runtime Python, App Runner inizia con un'immagine di runtime Python gestita. Questa immagine è basata sull'immagine Docker di Amazon Linux e contiene il pacchetto runtime per una versione di Python e alcuni strumenti e pacchetti di dipendenze popolari. App Runner utilizza questa immagine di runtime gestita come immagine di base e aggiunge il codice dell'applicazione per creare un'immagine Docker. Quindi distribuisce questa immagine per eseguire il servizio Web in un contenitore.

Si specifica un runtime per il servizio App Runner quando si crea un servizio utilizzando la console App Runner o l'CreateServiceoperazione API. Puoi anche specificare un runtime come parte del codice sorgente. Usa la runtime parola chiave in un file di configurazione di App Runner che includi nel tuo repository di codice. La convenzione di denominazione di un runtime gestito è. <language-name><major-version>

Per i nomi e le versioni di runtime Python validi, vedere. Informazioni sul rilascio del runtime di Python

App Runner aggiorna il runtime del servizio alla versione più recente a ogni distribuzione o aggiornamento del servizio. Se l'applicazione richiede una versione specifica di un runtime gestito, è possibile specificarla utilizzando la runtime-version parola chiave nel file di configurazione di App Runner. È possibile utilizzare qualsiasi livello di versione, inclusa una versione principale o secondaria. App Runner effettua solo aggiornamenti di livello inferiore al runtime del servizio.

Sintassi della versione per i runtime di Python: major[.minor[.patch]]

Ad esempio: 3.8.5

I seguenti esempi mostrano il blocco della versione:

  • 3.8— Blocca le versioni principali e secondarie. App Runner aggiorna solo le versioni patch.

  • 3.8.5— Blocca a una versione di patch specifica. App Runner non aggiorna la versione di runtime.

Configurazione del runtime di Python

Quando scegli un runtime gestito, devi anche configurare, come minimo, creare ed eseguire comandi. Li configuri durante la creazione o l'aggiornamento del servizio App Runner. Puoi farlo utilizzando uno dei seguenti metodi:

  • Utilizzo della console App Runner: specifica i comandi nella sezione Configure build del processo di creazione o della scheda di configurazione.

  • Utilizzo dell'API App Runner: richiama l'operazione CreateServiceor UpdateServiceAPI. Specificate i comandi utilizzando i StartCommand membri BuildCommand e del tipo di CodeConfigurationValuesdati.

  • Utilizzo di un file di configurazione: specifica uno o più comandi di compilazione in un massimo di tre fasi di compilazione e un singolo comando di esecuzione che serve per avviare l'applicazione. Sono disponibili impostazioni di configurazione opzionali aggiuntive.

Fornire un file di configurazione è facoltativo. Quando crei un servizio App Runner utilizzando la console o l'API, specifichi se App Runner ottiene le impostazioni di configurazione direttamente al momento della creazione o da un file di configurazione.

Callout per versioni di runtime specifiche

Nota

App Runner ora esegue un processo di compilazione aggiornato per le applicazioni basate sulle seguenti versioni di runtime: Python 3.11 e Node.js 18. Se l'applicazione viene eseguita su una di queste versioni di runtime, consulta Versioni di runtime gestite e build di App Runner per ulteriori informazioni sul processo di compilazione rivisto. Le applicazioni che utilizzano tutte le altre versioni di runtime non sono interessate e continuano a utilizzare il processo di compilazione originale.

Python 3.11 (build App Runner rivista)

Usa le seguenti impostazioni in apprunner.yaml per il runtime Python 3.11 gestito.

  • Imposta la chiave nella sezione Top su runtime python311

    Esempio
    runtime: python311
  • Usa pip3 invece di pip per installare le dipendenze.

  • Usa l'python3interprete invece di. python

  • Esegui il pip3 programma di installazione come comando. pre-run Python installa le dipendenze all'esterno della directory. /app Poiché App Runner esegue la build aggiornata di App Runner per Python 3.11, tutto ciò che è installato all'esterno della /app directory tramite i comandi nella sezione Build del file andrà perso. apprunner.yaml Per ulteriori informazioni, consulta La build di App Runner rivista.

    Esempio
    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 -

Per ulteriori informazioni, vedi anche l'esempio di un file di configurazione esteso per Python 3.11 più avanti in questo argomento.

Esempi di runtime in Python

Gli esempi seguenti mostrano i file di configurazione di App Runner per la creazione e l'esecuzione di un servizio Python. L'ultimo esempio è il codice sorgente per un'applicazione Python completa che puoi distribuire su un servizio di runtime Python.

Nota

La versione di runtime utilizzata in questi esempi è la 3.7.7 e la 3.11. Puoi sostituirla con una versione che desideri utilizzare. Per l'ultima versione di runtime di Python supportata, vedere. Informazioni sul rilascio del runtime di Python

Questo esempio mostra un file di configurazione minimo che puoi usare con un runtime gestito da Python. Per le ipotesi che App Runner fa con un file di configurazione minimo, vedi. Esempi di file di configurazione

Python 3.11 utilizza i comandi and. pip3 python3 Per ulteriori informazioni, vedete l'esempio di un file di configurazione esteso per Python 3.11 più avanti in questo argomento.

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

Questo esempio mostra l'uso di tutte le chiavi di configurazione con un runtime gestito da Python.

Nota

La versione di runtime utilizzata in questi esempi è la 3.7.7. Puoi sostituirla con una versione che desideri utilizzare. Per l'ultima versione di runtime di Python supportata, vedere. Informazioni sul rilascio del runtime di Python

Python 3.11 utilizza i comandi and. pip3 python3 Per ulteriori informazioni, vedete l'esempio di un file di configurazione esteso per Python 3.11 più avanti in questo argomento.

Esempio apprunner.yaml
version: 1.0 runtime: python3 build: commands: pre-build: - wget -c https://s3.amazonaws.com/DOC-EXAMPLE-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"

Questo esempio mostra l'uso di tutte le chiavi di configurazione con un runtime gestito da Python 3.11 in. apprunner.yaml Questo esempio include una pre-run sezione, poiché questa versione di Python utilizza la build di App Runner rivista.

Il pre-run parametro è supportato solo dalla build aggiornata di App Runner. Non inserire questo parametro nel file di configurazione se l'applicazione utilizza versioni di runtime supportate dalla build originale di App Runner. Per ulteriori informazioni, consulta Versioni di runtime gestite e build di App Runner.

Nota

La versione di runtime utilizzata in questi esempi è la 3.11. Puoi sostituirla con una versione che desideri utilizzare. Per l'ultima versione di runtime di Python supportata, vedere. Informazioni sul rilascio del runtime di Python

Esempio apprunner.yaml
version: 1.0 runtime: python311 build: commands: pre-build: - wget -c https://s3.amazonaws.com/DOC-EXAMPLE-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"

Questo esempio mostra il codice sorgente per un'applicazione Python completa che puoi distribuire su un servizio di runtime Python.

Esempio requirements.txt
pyramid==2.0
Esempio 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()
Esempio apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt run: command: python server.py