Guide de démarrage rapide pour Python dans l'environnement flexible App Engine

Dans ce guide de démarrage rapide, vous allez apprendre à créer une petite application App Engine affichant un court message.

Avant de commencer

Avant d'exécuter et de déployer l'application de ce guide de démarrage rapide, installez le SDK Cloud, puis configurez un projet GCP pour App Engine :

  1. Téléchargez et installez le SDK Cloud :

    Télécharger le SDK

    Remarque : Si le SDK Cloud est déjà installé, mettez-le à jour en exécutant la commande suivante :

    gcloud components update
    
  2. Créez un projet :

    gcloud projects create [YOUR_PROJECT_NAME] --set-as-default
    

    Vérifiez que le projet a été créé :

    gcloud projects describe [YOUR_PROJECT_NAME]
    

    Vous voyez alors les informations relatives au projet qui se présentent sous la forme suivante :

    createTime: year-month-hour
    lifecycleState: ACTIVE
    name: project-name
    parent:
    id: '433637338589'
    type: organization
    projectId: project-name-id
    projectNumber: 499227785679
    
  3. Initialisez votre application App Engine avec votre projet, puis choisissez sa région :

    gcloud app create --project=[YOUR_PROJECT_NAME]
    

    Lorsque vous y êtes invité, sélectionnez la région dans laquelle vous souhaitez déployer votre application App Engine.

  4. Assurez-vous que la facturation est activée pour votre projet. Un compte de facturation doit être associé à votre projet pour que l'application puisse être déployée sur App Engine.

    Activer la facturation

  5. Installez les composants obligatoires suivants :

    • Exécutez la commande suivante pour installer le composant gcloud qui inclut l'extension App Engine pour Python :

      gcloud components install app-engine-python
      
  6. Préparez l'environnement au développement de Python. Il est recommandé d'installer la dernière version de Python, pip, virtualenv et d'autres outils connexes sur votre système. Pour obtenir des instructions, reportez-vous au Guide de configuration de l'environnement de développement Python.

Zones App Engine

App Engine est régional, ce qui signifie que l'infrastructure qui exécute vos applications est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région.

Lors de la sélection d'une région dans laquelle exécuter vos applications, vous devez tout d'abord considérer vos exigences en matière de latence, de disponibilité et de durabilité. Vous pouvez choisir la région la plus proche des utilisateurs de votre application, mais vous devez aussi tenir compte de l'emplacement des autres produits et services GCP exploités par votre application. L'utilisation des services dans plusieurs emplacements peut affecter la latence et les tarifs de votre application.

App Engine est disponible dans les régions suivantes :

  • northamerica-northeast1 (Montréal)
  • us-central (Iowa)
  • us-west2 (Los Angeles)
  • us-east1 (Caroline du Sud)
  • us-east4 (Virginie du Nord)
  • southamerica-east1 (São Paulo)
  • europe-west (Belgique)
  • europe-west2 (Londres)
  • europe-west3 (Francfort)
  • europe-west6 (Zurich)
  • asia-northeast1 (Tokyo)
  • asia-east2 (Hong Kong)
  • asia-south1 (Mumbai)
  • australia-southeast1 (Sydney)

Une fois définie, vous ne pouvez plus modifier la région d'une application.

Si vous avez déjà créé une application App Engine, vous pouvez afficher la région en exécutant la commande gcloud app describe ou en ouvrant le tableau de bord App Engine dans la console GCP. La région de votre application App Engine est indiquée sous http://[YOUR_PROJECT_ID].appspot.com.

Ce démarrage rapide présente une application Python simple, écrite à l'aide du framework Web Flask et pouvant être déployée sur App Engine. Bien que cet exemple utilise Flask, vous pouvez opter pour n'importe quel framework Web répondant aux exigences ci-dessus. Il est également possible d'utiliser d'autres frameworks comme Django, Pyramid, Bottle et web.py.

Télécharger l'application Hello World

Nous avons créé une application Hello World simple pour Python afin de vous aider à comprendre rapidement comment déployer une application sur Google Cloud Platform.

  1. Clonez le dépôt de l'exemple d'application Hello World sur votre ordinateur.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    Vous pouvez également télécharger l'exemple en tant que fichier zip et l'extraire.

  2. Accédez au répertoire qui contient l'exemple de code.

    cd python-docs-samples/appengine/flexible/hello_world
    

Exécuter Hello World sur votre ordinateur local

Pour exécuter l'application Hello World sur votre ordinateur local :

macOS/Linux

  1. Créez un environnement Python isolé dans un répertoire externe à votre projet et activez-le :
    virtualenv env
    source env/bin/activate
  2. Accédez au répertoire de votre projet et installez des dépendances :
    cd YOUR_PROJECT
    pip install  -r requirements.txt
  3. Exécutez l'application :
    python main.py
  4. Dans votre navigateur Web, saisissez l'adresse suivante :
    http://localhost:8080

Windows

Si vous avez installé le SDK Cloud, vous devez disposer de Python 2.7, généralement disponible sous C:\python27_x64\ (pour les systèmes 64 bits). Exécutez les packages Python à l'aide de PowerShell.

  1. Localisez votre installation de PowerShell.
  2. Cliquez avec le bouton droit sur le raccourci PowerShell et démarrez une session en tant qu'administrateur.
  3. Essayez d'exécuter la commande python. Si le dossier Python est introuvable, ajoutez-le à la variable d'environnement PATH.
    $env:Path += ";C:\python27_x64\"
  4. Créez un environnement Python isolé dans un répertoire externe à votre projet et activez-le :
    python -m virtualenv env
    env\Scripts\activate
  5. Accédez au répertoire de votre projet et installez des dépendances :
    cd YOUR_PROJECT
    python -m pip install -r requirements.txt
  6. Exécutez l'application :
    python main.py
  7. Dans votre navigateur Web, saisissez l'adresse suivante :
    http://localhost:8080

Le message Hello World de l'exemple d'application s'affiche sur la page. Dans votre fenêtre de terminal, appuyez sur Ctrl+C pour quitter le serveur Web.

Déployer et exécuter Hello World sur App Engine

Pour déployer votre application dans l'environnement flexible App Engine, procédez comme suit :

  1. Déployez l'application Hello World en exécutant la commande suivante depuis le répertoire hello_world :

    gcloud app deploy

    Obtenez plus d'informations sur les indicateurs facultatifs.

    Indicateurs de commande gcloud courants

    • Incluez l'indicateur --version pour spécifier un ID qui identifie de manière unique la version de votre application. Si vous l'omettez, cet ID est généré pour vous. Exemple : --version [YOUR_VERSION_ID]
    • Incluez l'indicateur --project pour spécifier un ID de projet GCP alternatif à celui que vous avez initialisé par défaut dans l'outil gcloud. Exemple : --project [YOUR_PROJECT_ID]

    Exemple :

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    Pour en savoir plus sur le déploiement de votre application à partir de la ligne de commande, consultez la section Tester et déployer votre application. Pour obtenir la liste de tous les indicateurs de commande, consultez la documentation de référence sur gcloud app deploy.

  2. Lancez votre navigateur, puis saisissez l'adresse http://YOUR_PROJECT_ID.appspot.com pour afficher l'application.

    gcloud app browse
    YOUR_PROJECT_ID représente l'ID de votre projet GCP.

Cette fois, la page qui affiche le message Hello World est diffusée par un serveur Web exécuté sur une instance App Engine.

Félicitations ! Vous avez déployé votre première application Python dans un environnement flexible App Engine.

Consultez les sections suivantes pour en savoir plus sur le nettoyage et découvrir les prochaines étapes que vous pourriez effectuer.

Effectuer un nettoyage

Afin d'éviter que des frais ne vous soient facturés, vous pouvez supprimer votre projet GCP. Cette démarche interrompra la facturation de toutes les ressources utilisées dans le projet.

  1. Dans la console GCP, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer .
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étapes suivantes

Maintenant que vous en avez terminé avec Hello World, vous pouvez vous concentrer sur le prochain exemple d'application : l'application Bookshelf. Il s'agit d'une application Web Python, toujours très simple quoiqu'un peu plus élaborée. Elle exploite de nombreuses fonctionnalités de Cloud Platform, telles que le stockage de données, l'authentification, la journalisation, la messagerie Pub/Sub et bien plus.

Démarrer le tutoriel de l'application Bookshelf

Pour en savoir plus sur l'environnement flexible App Engine, consultez la page Présentation d'App Engine.

Examen du code Hello World

Hello World est l'application App Engine la plus simple qui soit : elle ne contient qu'un seul service, ne possède qu'une seule version, et tout le code se trouve dans le répertoire racine de l'application. Cette section décrit chacun des fichiers de l'application en détail.

main.py

L'application Hello World est une application Flask basique à fichier unique.

import logging

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    return 'Hello World!'

@app.errorhandler(500)
def server_error(e):
    logging.exception('An error occurred during a request.')
    return """
    An internal error occurred: <pre>{}</pre>
    See logs for full stacktrace.
    """.format(e), 500

if __name__ == '__main__':
    # This is used when running locally. Gunicorn is used to run the
    # application on Google App Engine. See entrypoint in app.yaml.
    app.run(host='127.0.0.1', port=8080, debug=True)

app.yaml

Le fichier app.yaml décrit la configuration de déploiement d'une application :

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Ici, le fichier app.yaml spécifie l'environnement d'exécution utilisé par l'application et définit env: flex, qui indique que l'application utilise l'environnement flexible.

entrypoint indique à App Engine comment démarrer l'application. gunicorn permet de diffuser l'application Python. La variable $PORT est définie par App Engine au démarrage de l'application. Pour en savoir plus sur entrypoint, consultez la section Démarrage de l'application.

De plus, la section optionnelle runtime_config définit python_version sur Python 3. Si python_version n'est pas spécifié, Python 2 est utilisé par défaut. Vous pouvez également préciser python_version: 2.

requirements.txt

requirements.txt et le gestionnaire de packages de Python pip permettent de déclarer et d'installer les dépendances d'application. Hello World requiert Flask, un framework Web, et Gunicorn, un serveur WSGI.

Flask==1.0.2
gunicorn==19.9.0

requirements.txt définit les bibliothèques qui seront installées localement et lors du déploiement sur App Engine.