Utilizzo della piattaforma Python di Elastic Beanstalk - AWS Elastic Beanstalk

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 Elastic Beanstalk

La piattaforma Python AWS Elastic Beanstalk è un insieme di versioni di piattaforma per applicazioni Web Python che possono essere eseguite dietro un server proxy con WSGI. Ogni ramo della piattaforma corrisponde a una versione di Python, come Python 3.8.

A partire dai rami della piattaforma Amazon Linux 2, Elastic Beanstalk fornisce Gunicorn come server WSGI predefinito.

È possibile aggiungere un Procfile al bundle di origine per specificare e configurare il server WSGI per l'applicazione. Per informazioni dettagliate, consulta Configurazione del server WSGI con un Procfile.

È possibile utilizzare i file Pipfile.lock e Pipfile creati da Pipenv per specificare le dipendenze dei pacchetti Python e altri requisiti. Per informazioni dettagliate sulla definizione delle dipendenze, consulta Specifica delle dipendenze utilizzando un file di requisiti.

Elastic Beanstalk fornisce le opzioni di configurazione che puoi utilizzare per personalizzare il software in esecuzione sulle istanze EC2 nell'ambiente. Puoi configurare le variabili di ambiente necessarie per la tua applicazione, accedere alla rotazione dei log su Amazon S3 e mappare le cartelle nel codice sorgente dell'applicazione che contengono i file statici ai percorsi serviti dal server proxy.

Sono disponibili opzioni di configurazione specifiche della piattaforma nella console Elastic Beanstalk per la modifica della configurazione di un ambiente in esecuzione. Per conservare la configurazione dell'ambiente una volta terminata, puoi utilizzare configurazioni salvate per salvare le impostazioni e applicarle successivamente a un altro ambiente.

Per salvare le impostazioni nel codice sorgente, puoi includere i file di configurazione. Le impostazioni nei file di configurazione vengono applicate ogni volta che crei un ambiente o distribuisci l'applicazione. Puoi inoltre utilizzare i file di configurazione per installare pacchetti, eseguire script o altre operazioni di personalizzazione delle istanze durante le distribuzioni.

Le impostazioni applicate nella console Elastic Beanstalk sostituiscono le stesse impostazioni nei file di configurazione, se esistenti. Ciò ti consente di disporre di impostazioni predefinite nei file di configurazione, sostituibili con impostazioni specifiche per l'ambiente nella console. Per ulteriori informazioni sulla precedenza e altri metodi di modifica delle impostazioni, consulta Opzioni di configurazione.

Per i pacchetti Python disponibili in pip, puoi includere un file di requisiti nella radice del codice sorgente dell'applicazione. Elastic Beanstalk installa tutti i pacchetti delle dipendenze specificati in un file dei requisiti durante la distribuzione. Per informazioni dettagliate, consulta Specifica delle dipendenze utilizzando un file di requisiti.

Per informazioni dettagliate sui vari modi in cui è possibile estendere una piattaforma Elastic Beanstalk basata su Linux, consulta Estensione delle piattaforme Elastic Beanstalk Linux.

Configurazione dell'ambiente Python

Le impostazioni della piattaforma Python consentono di ottimizzare il comportamento delle istanze Amazon EC2. Puoi modificare la configurazione dell'istanza Amazon EC2 dell'ambiente Elastic Beanstalk utilizzando la console Elastic Beanstalk.

Utilizza la console Elastic Beanstalk per configurare le impostazioni del processo Python, abilitare AWS X-Ray, la rotazione dei log in Amazon S3 e configurare le variabili che l'applicazione può leggere dall'ambiente.

Per configurare l'ambiente Python nella console Elastic Beanstalk
  1. Apri la console Elastic Beanstalk e nell'elenco Regions (Regioni) seleziona la tua Regione AWS.

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Nel riquadro di navigazione, seleziona Configuration (Configurazione).

  4. Nella categoria di configurazione Monitoring  (Monitoraggio), scegli Edit (Modifica).

Impostazioni Python

  • Proxy server (Server proxy): il server proxy da utilizzare nelle istanze dell'ambiente. Per impostazione predefinita, viene utilizzato nginx.

  • WSGI Path (Percorso WSGI): nome del file principale dell'applicazione o il relativo percorso. Ad esempio, application.py o django/wsgi.py.

  • NumProcesses: numero di processi da eseguire su ciascuna istanza dell'applicazione.

  • NumThreads: numero di thread da eseguire in ciascun processo.

Impostazioni di AWS X-Ray

Opzioni di log

La sezione Log Options (Opzioni di log) ha due impostazioni:

  • Instance profile (Profilo dell'istanza): specifica il profilo dell'istanza che dispone dell'autorizzazione ad accedere al bucket Amazon S3 associato all'applicazione.

  • Enable log file rotation to Amazon S3 (Abilita rotazione file di log in Amazon S3): specifica se i file di log per le istanze Amazon EC2 dell'applicazione debbano essere copiati nel bucket Amazon S3 associato all'applicazione.

File statici

Per migliorare le prestazioni, la sezione Static files (File statici) consente di configurare il server proxy affinché fornisca file statici (ad esempio, HTML o immagini) da un set di directory all'interno dell'applicazione Web. Per ogni directory, è possibile impostare il percorso virtuale per la mappatura delle directory. Quando il server proxy riceve una richiesta da un file nel percorso specificato, questo serve il file direttamente anziché instradare la richiesta all'applicazione.

Per informazioni dettagliate sulla configurazione di file statici utilizzando file di configurazione o la console Elastic Beanstalk, consulta Fornire i file statici.

Per impostazione predefinita, il server proxy in un ambiente Python serve qualsiasi file in una cartella denominata static nel percorso /static. Ad esempio, se il codice sorgente dell'applicazione contiene un file con nome logo.png in una cartella chiamata static, il server proxy lo servirà agli utenti su subdomain.elasticbeanstalk.com/static/logo.png. È possibile configurare mappature aggiuntive come indicato in questa sezione.

Proprietà dell'ambiente

Puoi utilizzare le proprietà dell'ambiente per fornire informazioni alla tua applicazione e configurare variabili di ambiente. Ad esempio, puoi creare una proprietà di ambiente denominata CONNECTION_STRING che specifica una stringa di connessione che la tua applicazione può utilizzare per connettersi a un database.

All'interno dell'ambiente Python in esecuzione in Elastic Beanstalk, questi valori sono accessibili tramite il dizionario os.environ di Python. Per ulteriori informazioni, consulta http://docs.python.org/library/os.html.

Puoi utilizzare un codice simile al seguente per accedere alle chiavi e ai parametri:

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

Le proprietà dell'ambiente sono inoltre in grado di fornire informazioni a un framework. Ad esempio, è possibile creare una proprietà denominata DJANGO_SETTINGS_MODULE per configurare Django in modo che utilizzi un modulo specifico di impostazioni. A seconda dell'ambiente, il valore potrebbe essere development.settings, production.settings e così via.

Per ulteriori informazioni, consultare Proprietà dell'ambiente e altre impostazioni software.

Spazio dei nomi di configurazione di Python

È possibile utilizzare un file di configurazione per impostare le opzioni di configurazione ed eseguire alte attività di configurazione delle istanze durante le distribuzioni. Le opzioni di configurazione, che possono essere definite dal servizio Elastic Beanstalk o dalla piattaforma utilizzata, sono organizzate in spazi dei nomi.

La piattaforma Python definisce le opzioni negli spazi dei nomi aws:elasticbeanstalk:environment:proxy, aws:elasticbeanstalk:environment:proxy:staticfiles e aws:elasticbeanstalk:container:python.

Il seguente file di configurazione di esempio specifica le impostazioni delle opzioni di configurazione per creare una proprietà di ambiente denominata DJANGO_SETTINGS_MODULE, scegliere il server proxy Apache, specificare due opzioni di file statici che mappano una directory denominata statichtml sul percorso /html e una directory denominata staticimages sul percorso /images e specificare le impostazioni aggiuntive nello spazio dei nomi aws:elasticbeanstalk:container:python. Questo spazio dei nomi contiene le opzioni che consentono di specificare il percorso dello script WSGI nel tuo codice sorgente e il numero di thread e processi in esecuzione in 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
Note
  • Se stai utilizzando una versione di piattaforma Python in AMI Amazon Linux (precedente ad Amazon Linux 2), sostituisci il valore WSGIPath con ebdjango/wsgi.py. Il valore nell'esempio funziona con il server Gunicorn WSGI, che non è supportato nelle versioni della piattaforma AMI Amazon Linux.

  • Inoltre, queste versioni della piattaforma precedenti utilizzano uno spazio dei nomi diverso per la configurazione dei file statici, ovvero aws:elasticbeanstalk:container:python:staticfiles. Ha gli stessi nomi di opzioni e semantica dello spazio dei nomi dei file statici standard.

I file di configurazione, supportano inoltre diverse chiavi per modificare ulteriormente il software delle istanze del tuo ambiente. Questo esempio utilizza la chiave pacchetti per installare Memcached con yum e i comandi dei container per eseguire comandi che consentono di configurare il server durante la distribuzione:

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"

In Elastic Beanstalk sono disponibili varie opzioni di configurazione per la personalizzazione dell'ambiente. Oltre ai file di configurazione, puoi impostare le opzioni di configurazione tramite la console, le configurazioni salvate, la CLI EB o AWS CLI. Per ulteriori informazioni, consultare Opzioni di configurazione.