Déployer une application Python

Déployez votre application pour l'importer et l'exécuter dans App Engine. Lorsque vous déployez vos applications, vous créez des versions de ces applications et de leurs services correspondants dans App Engine. Vous pouvez déployer des applications entières, y compris l'ensemble du code source et des fichiers de configuration, ou déployer et mettre à jour des versions ou des fichiers de configuration individuels.

Pour déployer vos applications de façon automatisée, utilisez l'API Admin.

Avant de commencer

Avant de déployer votre application, les conditions suivantes doivent être remplies :

Pour déployer votre application avec l'outil gcloud, vous devez télécharger, installer et initialiser le SDK Google Cloud :

Télécharger le SDK

Si l'outil gcloud est déjà installé et que vous souhaitez le configurer pour utiliser un ID de projet GCP autre que celui ayant servi à l'initialisation, consultez la page Gérer les configurations du SDK Cloud.

Utiliser un proxy

Si vous exécutez la commande de déploiement à partir d'un système utilisant un proxy HTTP ou HTTPS, vous devez configurer l'outil afin qu'il puisse communiquer via le proxy.

gcloud

Exécutez les commandes suivantes pour configurer l'outil gcloud :

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

Vous pouvez également définir un nom d'utilisateur (username) et un mot de passe (password) pour le proxy. Pour en savoir plus, consultez la page gcloud config.

appcfg

Définissez la variable d'environnement qui correspond à votre proxy :

Mac/Linux
export HTTP_PROXY="http://cache.example.com:3128"
export HTTPS_PROXY="http://cache.example.com:3128"
Windows
set HTTP_PROXY=http://cache.example.com:3128
set HTTPS_PROXY=http://cache.example.com:3128

Déployer une application

Pour déployer votre application sur App Engine, exécutez la commande gcloud app deploy depuis le répertoire racine de votre application où se trouvent les fichiers de configuration (par exemple, app.yaml).

gcloud

gcloud app deploy [YOUR_DEPLOYMENTS]

[YOUR_DEPLOYMENTS] désigne le nom et le chemin d'accès d'un ou de plusieurs fichiers de configuration. Séparez chaque fichier de configuration que vous spécifiez par une seule espace. Par défaut, le fichier app.yaml est déployé lorsqu'aucun fichier de configuration n'est spécifié.

Indicateurs facultatifs :

  • Incluez l'indicateur --version pour spécifier un ID de version personnalisé. Si vous l'omettez, cet ID est généré automatiquement.
  • Pour déployer votre application sans acheminer de façon automatique tout le trafic vers cette version, incluez l'indicateur --no-promote.
  • Incluez l'indicateur --project pour spécifier un ID de projet GCP autre que celui ayant servi à l'initialisation par défaut dans l'outil gcloud.

Exemples :

gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]

Par défaut, chaque version que vous déployez est automatiquement configurée de sorte à recevoir la totalité du trafic. Pour en savoir plus sur les options de configuration, consultez la section relative à l'indicateur --promote dans la documentation de référence sur gcloud app deploy.

Conseil : Exécutez la commande gcloud help depuis la ligne de commande pour obtenir la liste complète des arguments et des indicateurs.

appcfg

Après avoir installé le SDK App Engine d'origine pour Python, vous pouvez exécuter la commande suivante :

appcfg.py -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update [YOUR_APP_DIR]

Par défaut, la version initiale que vous déployez sur un service est automatiquement configurée de manière à recevoir la totalité du trafic. Cependant, toutes les versions ultérieures que vous déployez sur le même service doivent être configurées manuellement. Sinon, elles ne recevront aucun trafic.

Choisir des ID de version uniques

Pour les instances avec scaling manuel, l'ID de votre version doit commencer par une lettre afin de les distinguer des ID d'instances numériques. Les requêtes sont ainsi acheminées vers la bonne destination et cela évite toute ambiguïté avec les modèles d'URL tels que 123.my-service.appspot.com, qui peuvent être interprétés de deux façons :

  • Si la version 123 existe, la requête est acheminée vers la version 123 du service.my-service
  • Si la version 123 n'existe pas, la requête est acheminée vers l'ID d'instance 123 où sont exécutées les versions du service my-service.

Vous pouvez attribuer n'importe quel type de nom aux versions des instances qui sont configurées pour l'autoscaling ou le scaling de base, car il n'est pas possible de les cibler.

Déployer des applications à plusieurs services

Lorsque votre application est intégrée à plusieurs services, vous pouvez déployer et mettre à jour simultanément certains services ou tous les services. Le déploiement de mises à jour des services peut inclure la mise à jour de fichiers de configuration individuels ou la mise à jour du code source dans les versions correspondantes.

Vous pouvez, par exemple, déployer et créer deux versions dans App Engine, chaque version s'exécutant sur son propre service. La première version sert de service d'interface, et la seconde de backend de votre application. Vous pouvez ensuite déployer des fichiers de configuration individuels pour ne mettre à jour que les paramètres d'un service. Vous avez également la possibilité de déployer une nouvelle version sur un service afin de mettre à jour le code source de l'interface, du backend ou des deux simultanément.

Conditions requises pour déployer plusieurs services

Les mêmes commandes de déploiement permettent de déployer et de mettre à jour les différents services de votre application si vous respectez les conditions requises suivantes :

  • Vous devez d'abord déployer une version de votre application sur le service default pour pouvoir créer et déployer des services ultérieurs.

  • Vous devez spécifier l'ID de votre service dans le fichier de configuration app.yaml de la version correspondante. Pour spécifier l'ID de service, indiquez la définition de l'élément service: [YOUR_SERVICE_ID] dans chaque fichier de configuration. Par défaut, l'exclusion de cette définition d'élément de votre fichier de configuration entraîne le déploiement de la version sur le service default.

  • Vous devez spécifier tous les fichiers de configuration app.yaml correspondants dans votre commande de déploiement pour pouvoir déployer simultanément plusieurs services.

Déployer plusieurs services

Depuis le répertoire racine de l'application où se trouvent les fichiers de configuration, exécutez la commande de déploiement, puis spécifiez les chemins d'accès relatifs et les noms de fichier correspondant au fichier app.yaml de chaque service :

gcloud

gcloud app deploy [DEPLOYMENTS]

appcfg

appcfg.py update [DEPLOYMENTS]

[DEPLOYMENTS] désigne le nom et le chemin d'accès d'un ou de plusieurs fichiers de configuration. Séparez chaque fichier de configuration que vous spécifiez par une seule espace.

Exemple

gcloud

gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml

appcfg

appcfg.py update main/app.yaml service1/app.yaml service2/app.yaml

Vous recevrez une vérification via la ligne de commande à chaque déploiement de service réussi.

Mettre à jour des index

Pour créer ou mettre à jour les index utilisés par votre application, importez le fichier de configuration index.yaml dans Cloud Datastore. Les index qui n'existent pas encore sont créés après l'importation de ce fichier de configuration.

Cloud Datastore peut mettre un certain temps à créer tous les index. Par conséquent, ces index ne seront pas immédiatement disponibles dans App Engine. Si l'application est déjà configurée pour recevoir du trafic, des exceptions peuvent se produire pour les requêtes nécessitant un index dont la création est toujours en cours.

Pour éviter les exceptions, vous devez prévoir du temps pour la création de tous les index. Exemple :

  • Importez le fichier de configuration index.yaml dans Cloud Datastore avant de déployer votre version :

    1. Importez le fichier index.yaml dans Cloud Datastore :

      appcfg
      appcfg.py -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update_indexes [YOUR_APP_DIR]

    2. Surveillez l'état de tous les index à l'aide de la console GCP :

      Accéder à la page Datastore

    3. Une fois tous vos index créés, déployez la nouvelle version sur App Engine.

  • Créez vos index avant de transférer ou de répartir le trafic sur votre version :

    1. Déployez la nouvelle version sans y acheminer le trafic :
      gcloud
      Vous devez spécifier les fichiers app.yaml et index.yaml, et inclure également l'indicateur --no-promote afin qu'aucun trafic ne soit acheminé vers la version :
      gcloud app deploy app.yaml index.yaml --no-promote
      appcfg
      appcfg.py -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update [YOUR_APP_DIR]
    2. Surveillez l'état de tous les index à l'aide de la console GCP :

      Accéder à la page Datastore

    3. Une fois tous vos index créés, transférez ou répartissez le trafic sur votre version à l'aide de la console GCP :

      Accéder à la page Versions

Pour en savoir plus sur les index, consultez la page Configurer des index Datastore.

Dépannage

Voici des messages d'erreur courants que vous pouvez rencontrer :

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Si le projet GCP n'inclut pas l'application App Engine requise, la commande gcloud app deploy risque d'échouer lorsqu'elle tente d'exécuter la commande gcloud app create. Seuls les comptes associés au rôle de propriétaire disposent des autorisations nécessaires pour créer des applications App Engine.
Command not found

Si, lors de l'installation du SDK, vous n'avez pas créé de liens symboliques pour les outils appcfg.py ou dev_appserver.py, vous devrez peut-être spécifier le chemin d'accès complet du répertoire pour exécuter l'outil, par exemple : [PATH_TO_APP_ENGINE_SDK]/appcfg.py ou [PATH_TO_CLOUD_SDK]/bin/dev_appserver.py.

Remarque : Pour utiliser appcfg.py, vous devez télécharger et installer le SDK App Engine d'origine pour Python.

Import Error

Si vous avez installé le SDK Google Cloud et le SDK App Engine d'origine, les entrées de votre variable PATH peuvent entrer en conflit et entraîner des erreurs d'importation. Si vous avez reçu des erreurs lors de l'exécution des commandes du SDK Cloud, essayez explicitement d'utiliser le SDK App Engine d'origine. Vous pouvez déplacer l'entrée du SDK App Engine d'origine au début de votre variable PATH pour donner la priorité à ces commandes. Vous pouvez aussi exécuter la commande en spécifiant le chemin d'accès complet au répertoire : [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py.
Conseil : Sous Linux ou Mac, vous pouvez vous servir du fichier which dev_appserver.py pour savoir quel SDK se trouve en première position dans votre variable PATH.

[400] The first service (module) you upload to a new application must be the 'default' service (module)

Pour pouvoir déployer et créer les différents services de votre application, vous devez d'abord déployer et créer le service default. Pour en savoir plus sur le déploiement d'une version sur le service default, consultez la section Déployer des applications à plusieurs services.

Too Many Versions (403)

App Engine limite le nombre de versions déployées de votre application. Ce nombre est différent pour les applications gratuites et les applications déployées. Vous pouvez supprimer une ancienne version, puis importer le code le plus récent à l'aide de la console GCP.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python