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

ID de la région

Le REGION_ID est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. L'ajout de REGION_ID.r dans les URL App Engine est facultatif pour les applications existantes. Il sera bientôt obligatoire pour toutes les applications nouvelles.

Pour assurer une transition en douceur, nous mettons lentement à jour App Engine afin d'utiliser les ID de région. Si nous n'avons pas encore mis à jour votre projet Google Cloud, vous ne verrez pas d'ID de région pour votre application. Étant donné que l'ID est facultatif pour les applications existantes, vous n'avez pas besoin de mettre à jour les URL ni d'effectuer d'autres modifications une fois l'ID de région disponible pour vos applications existantes.

En savoir plus sur les ID de région

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

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activez Cloud Build API.

    Activer l'API

  5. Installez et initialisez le SDK Cloud.

Conditions préalables supplémentaires

  1. Initialisez votre application App Engine avec votre projet, puis choisissez sa région :

    gcloud app create --project=[YOUR_PROJECT_ID]
    

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

  2. Installez les composants requis 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
      

  3. Préparez l'environnement au développement de Python. Il est recommandé d'installer la dernière version de Python, pip et d'autres outils connexes sur votre système. Pour obtenir des instructions, consultez le 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 que Google la gère de sorte qu'elle soit 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 généralement sélectionner la région la plus proche des utilisateurs de votre application, mais pensez aussi aux emplacements où App Engine est disponible ainsi qu'aux emplacements des autres produits et services Google Cloud que votre application utilise. L'utilisation de services situés dans des emplacements différents peut avoir des répercussions sur la latence de votre application, ainsi que sur les tarifs.

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

Si vous avez déjà créé une application App Engine, vous pouvez afficher sa région en effectuant l'une des opérations suivantes :

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.

  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 :
    python3 -m venv 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

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. Créez un environnement Python isolé dans un répertoire externe à votre projet et activez-le :
    python -m venv env
    env\Scripts\activate
  4. Accédez au répertoire de votre projet et installez des dépendances :
    cd YOUR_PROJECT
    pip install -r requirements.txt
  5. Exécutez l'application :
    python main.py
  6. 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 à partir du répertoire hello_world :

    gcloud app deploy

    Obtenez plus d'informations sur les options facultatives.

    Options de commande gcloud courantes

    • Incluez l'option --version pour spécifier un ID qui identifie de manière unique cette version de votre application, sans quoi un ID est généré automatiquement. Exemple : --version [YOUR_VERSION_ID]
    • Incluez l'option --project pour spécifier un ID de projet Cloud différent de 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 toutes les options de commande, consultez la documentation de référence gcloud app deploy.

  2. Lancez votre navigateur pour afficher l'application sur https://PROJECT_ID.REGION_ID.r.appspot.com

    gcloud app browse
    PROJECT_ID représente l'ID de votre projet Google Cloud.

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.

Si vous rencontrez des erreurs lors du déploiement de votre application, consultez les conseils de dépannage.

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

Nettoyer

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

  1. Dans Cloud Console, 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

Découvrez la plate-forme dans son ensemble

Maintenant que vous savez comment développer et déployer des applications App Engine, vous pouvez explorer le reste de Google Cloud. Le SDK Cloud est déjà installé et vous permet d'interagir avec des produits tels que Cloud SQL, Cloud Storage, Firestore, etc.

Pour apprendre pas à pas à créer une application qui utilise l'ensemble de la plate-forme et pas seulement App Engine, accédez à notre guide de démarrage rapide pour créer l'application Bookshelf.

En savoir plus sur l'environnement flexible App Engine

Voici quelques articles qui vous aideront à mieux connaître App Engine :

Examiner le 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 :

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

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.

L'élément entrypoint indique à App Engine comment démarrer l'application. Cette application utilise gunicorn pour diffuser l'application Python au lieu du serveur de développement de Flask (utilisé lors de l'exécution en local). 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 facultative 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 spécifier explicitement python_version: 2.

requirements.txt

requirements.txt et le gestionnaire de packages Python pip servent à déclarer et à installer des dépendances d'application. Hello World requiert le framework Web Flask et le serveur WSGI Gunicorn.

Flask==1.1.2
gunicorn==20.1.0

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