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 une adaptation de la page https://cloud.google.com/appengine/docs/standard/python3/quickstart.
Points abordés
- 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 ?
Comment évalueriez-vous votre expérience des services Google Cloud ?
<ph type="x-smartling-placeholder">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, vous allez utiliser Cloud Shell dans 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 vous explique de quoi il s'agit. Si un écran intermédiaire 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 dans Google Cloud, ce qui améliore considérablement les performances du réseau et l'authentification. Une grande partie, voire la totalité, de votre travail dans cet atelier de programmation peut être effectué dans un navigateur.
Une fois connecté à Cloud Shell, vous êtes authentifié et le projet est défini sur 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 Cloud Shell lancé, vous pouvez utiliser la ligne de commande pour appeler la commande gcloud
de Cloud SDK ou d'autres outils disponibles sur l'instance de machine virtuelle. Vous pouvez utiliser le répertoire $HOME
de votre espace de stockage sur disque persistant pour stocker des fichiers entre plusieurs projets et 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 dans votre répertoire $HOME
pour l'application:
mkdir ~/helloworld cd ~/helloworld
Créez un fichier nommé main.py
:
touch main.py
Modifiez le fichier à l'aide de l'éditeur de ligne de commande de votre choix (nano, vim ou emacs) ou en cliquant sur le bouton de l'é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 devriez 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 pour lancer le 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, puis vous avez exécuté et déployé l'application sur App Engine.
8. Mettre à jour l'application Web
Modifiez votre application Web en modifiant le corps de la fonction hello()
dans le 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)
À partir du terminal, redéployez l'application Web pour la mettre à jour:
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 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 créer 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.