1. Présentation

Les applications Google App Engine sont faciles à créer et à gérer. Grâce à leur caractère évolutif, elles s'adaptent en fonction de vos besoins en termes de trafic et de stockage des données. Avec App Engine, vous n'avez aucun serveur à gérer. Il vous suffit d'importer votre application : vous êtes alors prêt à démarrer.
Dans cet atelier de programmation, vous allez apprendre à déployer une application Web Python simple écrite avec le framework Web Flask. Bien que cet exemple utilise Flask, vous pouvez utiliser d'autres frameworks Web, y compris Django, Pyramid, Bottle et web.py.
Ce tutoriel est adapté de https://cloud.google.com/appengine/docs/standard/python3/quickstart.
Points abordés
- Découvrez comment créer un serveur Python simple sur Google App Engine.
- Mise à jour du code sans arrêter le serveur
Prérequis
- Connaissances de base sur Python
- Connaissance des éditeurs de texte Linux standards tels que Vim, Emacs ou nano
Enquête
Comment allez-vous utiliser ce tutoriel ?
Quel est votre niveau d'expérience avec Python ?
Quel est votre niveau d'expérience avec les services Google Cloud ?
2. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. Si vous n'avez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.



- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par
PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet. - Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Activer Cloud Shell
- Dans Cloud Console, cliquez sur Activer Cloud Shell
.

Si vous démarrez Cloud Shell pour la première fois, un écran intermédiaire s'affiche pour vous expliquer de quoi il s'agit. Si cet écran s'est affiché, cliquez sur Continuer.

Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier de programmation dans un navigateur.
Une fois connecté à Cloud Shell, vous êtes en principe authentifié, et le projet est défini avec votre ID de projet.
- Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list
Résultat de la commande
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet :
gcloud config list project
Résultat de la commande
[core] project = <PROJECT_ID>
Si vous obtenez un résultat différent, exécutez cette commande :
gcloud config set project <PROJECT_ID>
Résultat de la commande
Updated property [core/project].
3. Écrire l'application Web
Une fois l'environnement Cloud Shell lancé, vous pouvez utiliser la ligne de commande pour appeler la commande gcloud du SDK Cloud ou d'autres outils disponibles sur l'instance de machine virtuelle. Vous pouvez utiliser votre répertoire $HOME dans le stockage sur disque persistant pour stocker des fichiers dans différents projets et entre les sessions Cloud Shell. Votre répertoire $HOME est privé. Les autres utilisateurs ne peuvent pas y accéder.
Commençons par créer un dossier pour l'application dans votre répertoire $HOME :
mkdir ~/helloworld cd ~/helloworld
Créez un fichier nommé main.py :
touch main.py
Modifiez le fichier avec l'éditeur de ligne de commande de votre choix (nano, vim ou emacs) ou en cliquant sur le bouton "Éditeur Cloud Shell" :

Pour modifier directement le fichier avec l'éditeur Cloud Shell, utilisez la commande suivante :
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
return "Hello World!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
4. Définir les dépendances
Pour spécifier les dépendances de votre application Web, revenez au terminal et créez un fichier requirements.txt dans le répertoire racine de votre projet, avec la version exacte de Flask à utiliser :
touch requirements.txt
Pour modifier le fichier avec l'éditeur Cloud Shell, utilisez la commande suivante :
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/Flask
Flask==3.0.2
5. Configurer le déploiement
Pour déployer votre application Web sur App Engine, vous avez besoin d'un fichier app.yaml. Ce fichier de configuration définit les paramètres de votre application Web pour App Engine.
Depuis le terminal, créez et modifiez le fichier app.yaml dans le répertoire racine de votre projet :
touch app.yaml
Pour modifier le fichier avec l'éditeur Cloud Shell, utilisez la commande suivante :
cloudshell edit app.yaml
app.yaml
runtime: python312
6. Déployer l'application Web
Depuis le terminal, vérifiez le contenu de votre répertoire :
ls
Vous devez disposer des trois fichiers suivants :
app.yaml main.py requirements.txt
Déployez votre application Web à l'aide de la commande suivante :
gcloud app deploy
La première fois, vous devez choisir une région de déploiement :
Please choose the region where you want your App Engine application located: [1] asia-east2 ... [7] australia-southeast1 [8] europe-west [9] europe-west2 ... [12] northamerica-northeast1 [13] southamerica-east1 ... [19] us-west4 ... Please enter your numeric choice:
Confirmez le lancement du déploiement :
Creating App Engine application in project [PROJECT_ID] and region [REGION]....done. Services to deploy: descriptor: [~/helloworld/app.yaml] source: [~/helloworld] target project: [PROJECT_ID] target service: [default] target version: [YYYYMMDDtHHMMSS] target url: [https://PROJECT_ID.REGION_ID.r.appspot.com] Do you want to continue (Y/n)?
Votre application est déployée :
Beginning deployment of service [default]... Created .gcloudignore file. See `gcloud topic gcloudignore` for details. Uploading 3 files to Google Cloud Storage 100% File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Votre application Web est maintenant prête à répondre aux requêtes HTTP sur https://PROJECT_ID.REGION_ID.r.appspot.com.
7. Tester l'application Web
Votre application Web est prête à répondre aux requêtes HTTP sur https://PROJECT_ID.REGION_ID.r.appspot.com.
Commencez par récupérer le nom d'hôte de votre application Web à l'aide de la commande gcloud app describe :
APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")
Testez votre application Web avec cette simple requête HTTP GET :
curl https://$APPENGINE_HOSTNAME
Vous devriez obtenir la réponse suivante :
Hello World!
Résumé
Au cours des étapes précédentes, vous avez configuré une application Web Python simple, que vous avez ensuite exécutée et déployée sur App Engine.
8. Mettre à jour l'application Web
Modifiez votre application Web en changeant le corps de la fonction hello() dans votre fichier main.py.
Pour modifier le fichier avec l'éditeur Cloud Shell, utilisez la commande suivante :
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
# return "Hello World!\n" # ← Replace this line
who = flask.request.args.get("who", "World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
Depuis le terminal, redéployez pour mettre à jour votre application Web :
gcloud app deploy --quiet
La nouvelle version de votre application est déployée :
Beginning deployment of service [default]... Uploading 1 file to Google Cloud Storage ... Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Testez la nouvelle version de votre application Web, exactement comme vous l'avez fait précédemment :
curl https://$APPENGINE_HOSTNAME
Vous devriez obtenir la même réponse :
Hello World!
Testez-le avec le paramètre facultatif :
curl https://$APPENGINE_HOSTNAME?who=Universe
Vous devriez obtenir la réponse suivante :
Hello Universe!
Résumé
Au cours de cette étape, vous avez mis à jour et redéployé votre application Web sans aucune interruption de service.
9. Félicitations !
Vous avez appris à écrire votre première application Web App Engine en Python.
En savoir plus
- Documentation App Engine : https://cloud.google.com/appengine
- Suivez ce tutoriel pour écrire une application Python complète sur App Engine : https://cloud.google.com/appengine/docs/standard/python3/building-app.
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.