Utilisation de la plateforme Python Elastic Beanstalk - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de la plateforme Python Elastic Beanstalk

Cette rubrique explique comment configurer, créer et exécuter vos applications Python sur Elastic Beanstalk.

AWS Elastic Beanstalk prend en charge un certain nombre de branches de plate-forme pour différentes versions du langage de programmation Python. Voir Python dans le AWS Elastic Beanstalk Document sur les plateformes pour une liste complète.

Les applications Web Python peuvent s'exécuter derrière un serveur proxy avecWSGI. Elastic Beanstalk fournit Gunicorn comme serveur par défaut. WSGI

Vous pouvez ajouter un Procfile à votre bundle source pour spécifier et configurer le WSGI serveur de votre application. Pour plus de détails, consultez Configuration du WSGI serveur avec un Procfile sur Elastic Beanstalk.

Vous pouvez utiliser les fichiers Pipfile.lock et Pipfile créés par Pipenv pour spécifier les dépendances du package Python et d'autres exigences. Pour plus d'informations sur la spécification des dépendances, consultez Spécification des dépendances à l'aide d'un fichier d'exigences sur Elastic Beanstalk.

Elastic Beanstalk propose des options de configuration que vous pouvez utiliser pour personnaliser le logiciel qui s'exécute EC2 sur les instances de votre environnement Elastic Beanstalk. Vous pouvez configurer des variables d'environnement nécessaires pour votre application, activer la rotation des journaux sur Amazon S3 et mapper des dossiers dans la source de votre application contenant des fichiers statiques vers des chemins desservis par le serveur proxy.

Des options de configuration sont disponibles dans la console Elastic Beanstalk pour modifier la configuration d'un environnement en cours d'exécution. Pour éviter de perdre la configuration de votre environnement en le résiliant, vous pouvez utiliser des configurations enregistrées pour enregistrer vos paramètres et les appliquer par la suite à un autre environnement.

Pour enregistrer les paramètres dans votre code source, vous pouvez inclure des fichiers de configuration. Les paramètres des fichiers de configuration sont appliquées chaque fois que vous créez un environnement ou que vous déployez votre application. Vous pouvez également utiliser des fichiers de configuration pour installer des packages, exécuter des scripts ou effectuer d'autres opérations de personnalisation d'instance lors des déploiements.

Les paramètres appliqués dans la console Elastic Beanstalk remplacent les mêmes paramètres des fichiers de configuration, s'ils existent. Cela vous permet d'utiliser les paramètres par défaut dans les fichiers de configuration et de les remplacer par des paramètres spécifiques à l'environnement dans la console. Pour plus d'informations sur la priorité et les autres méthodes de modification des paramètres, consultez Options de configuration.

Pour les packages Python disponibles à partir de pip, vous pouvez également inclure un fichier d'exigences dans la racine du code source de votre application. Elastic Beanstalk installe tous les packages de dépendance spécifiés dans un fichier de configuration lors du déploiement. Pour plus de détails, consultez Spécification des dépendances à l'aide d'un fichier d'exigences sur Elastic Beanstalk.

Pour plus d'informations sur les différentes manières d'étendre une plateforme Elastic Beanstalk basée sur Linux, consultez Extension des plateformes Linux Elastic Beanstalk.

Configuration de votre environnement Python

Les paramètres de la plateforme Python vous permettent d'affiner le comportement de vos EC2 instances Amazon. Vous pouvez modifier la configuration de l'instance Amazon de l'environnement Elastic Beanstalk à l'aide EC2 de la console Elastic Beanstalk.

Utilisez la console Elastic Beanstalk pour configurer les paramètres des processus Python, activez AWS X-Ray, activez la rotation des journaux vers Amazon S3 et configurez les variables que votre application peut lire depuis l'environnement.

Pour configurer votre environnement Python dans la console Elastic Beanstalk
  1. Ouvrez la console Elastic Beanstalk, puis dans la liste des régions, sélectionnez votre Région AWS.

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Dans le panneau de navigation, choisissez Configuration.

  4. Dans la catégorie de configuration Mises à jour, surveillance et journalisation, sélectionnez Modifier.

Paramètres Python

  • Proxy server (Serveur proxy) – Serveur proxy à utiliser sur vos instances d'environnement. Le serveur nginx est utilisé par défaut.

  • WSGIChemin : nom ou chemin d'accès de votre fichier d'application principal. Par exemple, application.py ou django/wsgi.py.

  • NumProcesses— Le nombre de processus à exécuter sur chaque instance d'application.

  • NumThreads— Le nombre de threads à exécuter dans chaque processus.

AWS X-Ray paramètres

Options du journal

La section Options du journal a deux paramètres :

  • Instance profile (Profil d'instance) – Spécifie le profil d'instance qui est autorisé à accéder au compartiment Amazon S3 associé à votre application.

  • Activer la rotation des fichiers journaux vers Amazon S3 : indique si les fichiers journaux des EC2 instances Amazon de votre application sont copiés dans le compartiment Amazon S3 associé à votre application.

Fichiers statiques

Pour améliorer les performances, vous pouvez utiliser la section Fichiers statiques pour configurer le serveur proxy pour qu'il diffuse des fichiers statiques (par exemple, HTML ou des images) à partir d'un ensemble de répertoires au sein de votre application Web. Pour chaque répertoire, vous définissez le chemin virtuel sur le mappage de répertoires. Lorsque le serveur proxy reçoit une demande pour un fichier dans le chemin spécifié, il fournit le fichier directement au lieu d'acheminer la demande vers votre application.

Pour en savoir plus sur la configuration des fichiers statiques à l'aide des fichiers de configuration ou de la console Elastic Beanstalk, consultez Service de fichiers statiques.

Par défaut, le serveur proxy d'un environnement Python sert tous les fichiers dans un dossier nommé static sur le chemin d'accès /static. Par exemple, si votre code source d'application contient un fichier nommé logo.png dans un dossier nommé static, le serveur proxy le sert aux utilisateurs dans subdomain.elasticbeanstalk.com/static/logo.png. Vous pouvez configurer d'autres mappages comme expliqué dans cette section.

Propriétés de l'environnement

Vous pouvez utiliser les propriétés de l'environnement afin de fournir des informations à votre application et de configurer des variables d'environnement. Par exemple, vous pouvez créer une propriété de l'environnement nommée CONNECTION_STRING qui spécifie une chaîne de connexion que votre application peut utiliser pour se connecter à une base de données.

A l'intérieur de l'environnement Python s'exécutant dans Elastic Beanstalk, ces valeurs sont accessibles à l'aide du dictionnaire os.environ Python. Pour plus d'informations, consultez http://docs.python.org/library/os.html.

Vous pouvez utiliser un code similaire au suivant pour accéder aux clés et aux paramètres :

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

Les propriétés de l'environnement peuvent également fournir des informations à une infrastructure. Par exemple, vous pouvez créer une propriété nommée DJANGO_SETTINGS_MODULE pour configurer Django pour utiliser un module de paramètres spécifique. Selon l'environnement, cette valeur peut être development.settings, production.settings, etc.

Pour plus d’informations, consultez Propriétés de l'environnement et autres paramètres de logiciel.

Espaces de noms de la configuration Python

Vous pouvez utiliser un fichier de configuration pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être spécifiques à la plate-forme ou s'appliquer à toutes les plateformes du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en espaces de noms.

La plateforme Python définit des options dans les espaces de noms aws:elasticbeanstalk:environment:proxy, aws:elasticbeanstalk:environment:proxy:staticfiles et aws:elasticbeanstalk:container:python.

L'exemple suivant de fichier de configuration spécifie des paramètres d'option de configuration pour créer une propriété d'environnement nommée DJANGO_SETTINGS_MODULE, deux options de fichiers statiques qui mappent un répertoire nommé statichtml avec le chemin d'accès /html, un répertoire nommé staticimages avec le chemin d'accès /images et des paramètres supplémentaires dans l'espace de noms aws:elasticbeanstalk:container:python. Cet espace de noms contient des options qui vous permettent de spécifier l'emplacement du WSGI script dans votre code source, ainsi que le nombre de threads et de processus à WSGI exécuter.

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
Remarques
  • Si vous utilisez une version de la plateforme Amazon Linux AMI Python (antérieure à Amazon Linux 2), remplacez la valeur WSGIPath parebdjango/wsgi.py. La valeur de l'exemple fonctionne avec le WSGI serveur Gunicorn, qui n'est pas pris en charge sur les versions de la AMI plateforme Amazon Linux.

  • De plus, ces anciennes versions de plateforme utilisent un espace de noms différent pour configurer les fichiers statiques aws:elasticbeanstalk:container:python:staticfiles. Il a les mêmes noms d'option et la même sémantique que l'espace de noms de fichier statique standard.

Les fichiers de configuration prennent également en charge plusieurs clés permettant de modifier davantage le logiciel sur les instances de votre environnement. Cet exemple utilise la clé de packages pour installer Memcached avec yum et des commandes de conteneur pour exécuter des commandes qui configurent le serveur durant le déploiement :

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 fournit de nombreuses options de configuration pour personnaliser votre environnement. Outre les fichiers de configuration, vous pouvez également définir les options de configuration à l'aide de la console, des configurations enregistrées, de l'EB CLI ou du AWS CLI. Voir Options de configuration pour plus d'informations.