1. Présentation
Cette série d'ateliers de programmation (tutoriels pratiques à suivre à votre rythme) est destinée à aider les développeurs à comprendre les différentes options dont ils disposent lorsqu'ils déploient leurs applications. Vous apprendrez à utiliser l'API Google Cloud Translation dans une application Web simple. Cette application peut être exécutée en local ou déployée sur une plate-forme de calcul sans serveur Cloud (App Engine, Cloud Functions ou Cloud Run).
Vous allez suivre ce tutoriel JavaScript avec Node.js à l'aide du framework Web Express.js. Vous découvrirez également comment accéder aux API Google Cloud depuis nos plates-formes sans serveur. Toutes les versions de cette application proviennent du dépôt Open Source"nebulous serverless", qui inclut une version Python de cette application et des ateliers de programmation indépendants. Le dépôt héberge également des applications similaires qui montrent aux développeurs comment accéder aux API Google non Cloud depuis nos plates-formes sans serveur.
Cet atelier de programmation se concentre sur le déploiement de cette application sur la ou les plates-formes en gras ci-dessus.
Vous apprendrez à effectuer les tâches suivantes :
- Utiliser les API Google Cloud, en particulier l'API Cloud Translation (Advanced/v3)
- Exécuter une application Web de base en local ou la déployer sur une plate-forme de calcul sans serveur dans le cloud
Prérequis
- Un projet Google Cloud avec un compte de facturation Cloud actif
- Un framework Web installé pour l'exécution locale ( Flask pour ceux qui suivent le tutoriel Python ou Express pour ceux qui suivent le tutoriel JavaScript/Node.js)
- Au moins une plate-forme de calcul sans serveur activée pour les déploiements Google Cloud
- Compétences de base en programmation (Python ou JavaScript/Node.js)
- Bonne connaissance des commandes de base du système d'exploitation
Enquête
Comment allez-vous utiliser ce tutoriel ?
Comment évalueriez-vous votre expérience en développement avec Python ou Node.js ?
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 ne possédez 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 qui n'est pas utilisée par les API Google, et que vous pouvez modifier à tout moment.
- L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). Cloud Console génère automatiquement une chaîne unique dont la composition importe peu, en général. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (généralement identifié comme
PROJECT_ID), donc s'il ne vous convient pas, générez-en un autre au hasard ou définissez le vôtre, puis vérifiez s'il est disponible. Il est ensuite "gelé" une fois le projet créé. - La troisième valeur est le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter qu'elles ne vous soient facturées après ce tutoriel, suivez les instructions de nettoyage indiquées à la fin de l'atelier. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.
3. Activer l'API Translation
Dans cette section, vous allez apprendre à activer les API Google en général. Pour notre exemple d'application, vous allez activer l'API Cloud Translation. Vous activerez également App Engine, Cloud Functions et/ou Cloud Run (ainsi que Cloud Artifact Registry), selon la ou les plates-formes sur lesquelles vous souhaitez déployer l'application exemple.
Activer les API Google
Introduction
Quelle que soit l'API Google que vous souhaitez utiliser dans votre application, vous devez l'activer. Vous pouvez activer les API depuis la ligne de commande ou la console Cloud. La procédure d'activation des API est identique. Une fois que vous en avez activé une, vous pouvez en activer une autre de la même manière.
Option 1 : gcloud interface de ligne de commande (Cloud Shell ou environnement local)
Bien qu'il soit plus courant d'activer les API depuis la console Cloud, certains développeurs préfèrent tout faire depuis la ligne de commande. Pour ce faire, vous devez rechercher le "nom de service " d'une API. Elle ressemble à une URL : SERVICE_NAME.googleapis.com. Vous les trouverez dans le tableau des produits compatibles. Vous pouvez également les interroger de manière programmatique avec l'API Google Discovery.
Grâce à ces informations, vous pouvez activer une API à l'aide de Cloud Shell (ou de votre environnement de développement local avec l'outil de ligne de commande gcloud installé), comme suit :
gcloud services enable SERVICE_NAME.googleapis.com
Exemple 1 : Activer l'API Cloud Vision
gcloud services enable vision.googleapis.com
Exemple 2 : Activer Google App Engine
gcloud services enable appengine.googleapis.com
Exemple 3 : Activer plusieurs API avec une seule requête Par exemple, si cet atelier de programmation demande aux lecteurs de déployer une application à l'aide de l'API Cloud Translation sur App Engine, Cloud Functions et Cloud Run, la ligne de commande sera la suivante :
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Cette commande active App Engine, Cloud Functions, Cloud Run et l'API Cloud Translation. Il active également Cloud Artifact Registry, car c'est là que les images de conteneurs doivent être enregistrées par le système Cloud Build pour pouvoir être déployées sur Cloud Run.
Option 2 : Cloud Console
Vous pouvez également activer les API Google dans le gestionnaire d'API. Dans la console Cloud, accédez au Gestionnaire d'API, puis sélectionnez Bibliothèque.

Commencez à saisir le nom d'une API dans la barre de recherche pour afficher les résultats correspondants :

Sélectionnez l'API que vous souhaitez activer, puis cliquez sur le bouton Activer :

Le processus d'activation de toutes les API est similaire, quelle que soit l'API Google que vous souhaitez utiliser.
Coût
De nombreuses API Google peuvent être utilisées sans frais. Toutefois, l'utilisation de la plupart des produits et API Google Cloud est payante. Lorsque vous activez les API Cloud, vous pouvez être invité à renseigner un compte de facturation actif. Toutefois, certains produits Google Cloud disposent d'un niveau "Always Free" que vous devez dépasser pour que la facturation démarre.
Les nouveaux utilisateurs de GCP peuvent bénéficier de l'essai sans frais, qui offre actuellement un crédit de 300 $valable pendant les 90 premiers jours. Les ateliers de programmation n'entraînent généralement pas de facturation ou très peu. Nous vous suggérons donc d'attendre d'être vraiment prêt à tester l'essai sans frais, d'autant plus qu'il s'agit d'une offre unique. Les quotas du niveau sans frais n'expirent pas et s'appliquent que vous utilisiez ou non l'essai sans frais.
Les utilisateurs doivent consulter les informations tarifaires de chaque API avant de l'activer (par exemple, la page Tarifs de l'API Cloud Vision ), en particulier pour savoir si elle propose une version sans frais et, le cas échéant, quelles sont ses limites. Tant que votre utilisation agrégée ne dépasse pas les limites quotidiennes ou mensuelles spécifiées, aucuns frais ne vous seront facturés. Les tarifs et les niveaux sans frais varient selon les API des groupes de produits Google. Exemples :
- Google Cloud/GCP : chaque produit est facturé différemment, généralement au paiement à l'utilisation. Consultez les informations sur le niveau sans frais ci-dessus.
- Google Maps : propose une suite d'API et offre aux utilisateurs un crédit mensuel sans frais de 200$.
- Les API Google Workspace (anciennement G Suite) : leur utilisation (jusqu'à certaines limites) est couverte par les frais d'abonnement mensuels Workspace. Par conséquent, il n'y a pas de facturation directe pour l'utilisation des API pour des applications telles que Gmail, Google Drive, Agenda, Docs, Sheets ou Slides.
La procédure de facturation est différente selon les produits Google. Par conséquent, assurez-vous de vous référer à la documentation appropriée pour obtenir ces informations.
Vérifier que les services souhaités sont activés
Assurez-vous que l'API Cloud Translation est activée dans API Manager, comme indiqué ci-dessus. Si vous n'avez pas activé les plates-formes sans serveur à partir de la ligne de commande, vous pouvez le faire à partir de chacun de leurs tableaux de bord respectifs dans la console Cloud : App Engine, Cloud Functions et Cloud Run.
Bien qu'il soit visuellement informatif d'activer les API depuis la console Cloud, il est plus rapide d'utiliser l'outil gcloud, qui ne prend que quelques secondes pour activer tous les services :
$ gcloud services enable appengine.googleapis.com \ cloudfunctions.googleapis.com artifactregistry.googleapis.com \ run.googleapis.com translate.googleapis.com Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.
En savoir plus sur les coûts
La section ci-dessus sur les coûts est générale à toutes les API Google. Nous allons aborder plus de détails pour ce tutoriel. Bien que son quota mensuel ne soit pas indiqué sur la page récapitulative du niveau "Toujours sans frais ", la page des tarifs de l'API Translation indique que tous les utilisateurs bénéficient d'un nombre fixe de caractères traduits par mois. Si vous restez en dessous de ce seuil, vous ne devriez pas être facturé pour l'API. Pour en savoir plus sur les coûts liés à l'utilisation des plates-formes Google Cloud sans serveur, consultez la section "Coûts" du dépôt. La section "Effectuer un nettoyage" à la fin de l'atelier de programmation explique comment éviter toute facturation une fois cet atelier terminé.
4. Obtenir le code de l'application exemple
Télécharger le fichier ZIP ou cloner le dépôt
- Téléchargez le fichier ZIP ou clonez le dépôt avec
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git. - Si vous ne disposez pas d'environnement de développement local et que vous souhaitez suivre ce tutoriel dans Cloud Shell, vous pouvez cloner le dépôt avec la même commande
git clone. - Vous pouvez également accéder au fichier ZIP à partir de son bouton vert Code, comme illustré dans la capture d'écran suivante :

Maintenant que vous avez tout, créez une copie complète du dossier pour suivre ce tutoriel spécifique, car il impliquera probablement la suppression ou la modification des fichiers. Si vous souhaitez effectuer un autre déploiement, vous pouvez recommencer en copiant l'original afin de ne pas avoir à le cloner ni à le télécharger à nouveau.
5. Confirmer l'environnement Node.js
Pour configurer votre environnement Node.js, procédez comme suit :
- Assurez-vous d'avoir installé les versions actuelles de Node (>=10) et NPM (>=6).
- Accédez à l'emplacement où vous avez cloné le dépôt (ou décompressé le fichier ZIP), puis accédez au dossier
cloud/nodejs. - Vérifiez que
package.jsonest présent, puis exécuteznpm install.
Pour le point 1 ci-dessus, vous pouvez vérifier les versions dont vous disposez sur la ligne de commande :
$ node -v v17.0.1 $ npm -v 8.1.0
6. Visite guidée de l'application exemple
L'application exemple est un simple dérivé de Google Traduction qui invite les utilisateurs à saisir du texte en anglais et à recevoir la traduction équivalente de ce texte en espagnol.
Le fichier de configuration package.json indique les packages tiers requis pour l'application (notez que les versions des packages peuvent être mises à jour au-delà de celles listées ici) :
{
"name": "cloud-nebulous-serverless-nodejs",
"version": "0.0.1",
"description": "Nebulous Serverless sample app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha test/test_neb.js"
},
"author": "Google LLC",
"license": "Apache-2.0",
"dependencies": {
"@google-cloud/translate": "^6.3.1",
"express": "^4.17.1",
"nunjucks": "^3.2.3"
},
"devDependencies": {
"mocha": "^9.1.3",
"supertest": "^6.1.6"
}
}
Ouvrez maintenant le fichier index.js pour voir comment il fonctionne. Si vous omettez les lignes commentées sur les licences, le résultat ressemble à ceci en haut et en bas :
const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');
const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();
const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
parent = `projects/${result}`;
});
if (!process.env.FUNCTION_TARGET) {
app.listen(PORT, () =>
console.log(`Listening on port ${PORT}`)
);
}
# . . . [translate() function definition] . . .
app.all('/', translate);
module.exports = {
app
};
- Les
requireapportent des fonctionnalités de framework et de création de modèles, ainsi que la bibliothèque cliente de l'API Cloud Translation. - Les variables globales représentent l'application Web, l'ID du projet Cloud, le client de l'API Translation, le "chemin d'emplacement" parent pour les appels de l'API Translation, ainsi que les langues
SOURCEetTARGET. Dans ce cas, il s'agit de l'anglais (en) et de l'espagnol (es), mais n'hésitez pas à remplacer ces valeurs par d'autres codes de langue acceptés par l'API Cloud Translation. - Le premier élément de chaque paire (
SOURCEetTARGET) est le code de langue, tandis que le second est le nom de la langue (utilisé uniquement à des fins d'affichage, car il n'a aucune importance pour l'API). - Les quelques lignes en bas servent à envoyer toutes les requêtes HTTP à
translate(), puis à exporter l'objet d'applicationapp.
Enfin, au milieu de index.js se trouve le cœur de l'application, la fonction translate() :
async function translate(req, rsp) {
let text = null;
let translated = null;
if (req.method === 'POST') {
text = req.body.text.trim();
if (text) {
const data = {
contents: [text],
parent: parent,
targetLanguageCode: TARGET[0]
};
const [response] = await TRANSLATE.translateText(data);
translated = response.translations[0].translatedText;
}
}
const context = {
orig: {text: text, lc: SOURCE},
trans: {text: translated, lc: TARGET}
};
rsp.render('index.html', context);
}
La fonction principale consiste à prendre l'entrée utilisateur et à appeler l'API Translation pour effectuer le gros du travail. Examinons cela en détail :
- Réinitialisez les variables de base du formulaire. Cela concerne principalement les requêtes GET, car les requêtes POST auront des données qui les remplaceront.
- S'il s'agit d'une requête POST, récupérez le texte à traduire et, s'il n'est pas vide, créez une structure JSON représentant les exigences en termes de métadonnées de l'API. Appelez ensuite l'API pour le service.
- Nous n'avons pas transmis
SOURCE[0]à l'API pour une source anglaise spécifique. Lorsque vous omettez la langue source, vous demandez à l'API de la détecter automatiquement (voirsourceLanguageCodedans la documentation). - Dans tous les cas, mettez en forme les résultats réels (POST) ou l'absence de données (GET) dans le contexte du modèle, puis affichez-les.
La partie visuelle de l'application se trouve dans le fichier de modèle index.html. Il affiche les résultats précédemment traduits (vide dans le cas contraire), suivis du formulaire demandant un élément à traduire :
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<style>
body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}
</style>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
Pour le reste du tutoriel, vous pouvez choisir une, plusieurs ou l'ensemble des quatre options de déploiement et d'exécution de cette application. Tous les déploiements sont facultatifs, ce qui signifie que vous pouvez en effectuer un, plusieurs ou aucun.
- Exécuter le service en local
- Déployer sur App Engine (environnement standard)
- Déployer une application dans Cloud Functions
- Déployer dans Cloud Run
7. OPTION 1 : Exécuter le service en local
Cette section de l'atelier de programmation ne concerne que l'exécution locale. Si vous ne déployez que dans le cloud, passez à la section suivante.
Pour exécuter l'exemple d'application en local, vous devez suivre trois étapes distinctes :
- Créer un compte de service
- Créer une paire de clés publique/privée pour un compte de service
- Télécharger le fichier d'identifiants et l'inclure dans le code de l'application
- Démarrer le service
En savoir plus sur les comptes de service
Les comptes de service sont le mécanisme de sécurité permettant d'accéder aux API Google pour les applications cloud lorsqu'elles accèdent à des données qui n'appartiennent pas à des utilisateurs humains. Lorsque vous déployez des applications dans le cloud, toutes les plates-formes de calcul Google Cloud (avec ou sans serveur) fournissent des comptes de service par défaut pour réduire le temps d'intégration des utilisateurs au cloud.
Les comptes de service par défaut sont fournis avec un large éventail d'autorisations pour "éviter les formalités administratives". Toutefois, lorsque vous vous préparez à lancer un service de production, nous recommandons vivement aux utilisateurs de suivre la bonne pratique du "moindre privilège" en créant des comptes de service gérés par l'utilisateur qui ne disposent que des autorisations nécessaires au bon fonctionnement de votre application. Quoi qu'il en soit, il n'existe pas de compte de service par défaut pour les déploiements locaux. Vous devez donc créer un compte de service et une clé de compte de service (en fait, une paire de clés publique/privée) et rendre ces identifiants disponibles pour le code de l'application.
Créer une paire de clés de compte de service et télécharger le fichier d'identifiants
Suivez les instructions sur cette page pour créer un compte de service et une paire de clés publique/privée à exécuter en local. Lorsque vous créerez la clé du compte de service, vous serez invité à fournir les autorisations souhaitées. Veillez à sélectionner roles/cloudtranslate.user pour pouvoir accéder à l'API.
Une fois votre paire de clés créée, vous serez invité à télécharger le fichier de clé du compte de service. Appelez-le credentials.json et déplacez-le dans le dossier de premier niveau de l'application. Vous devez maintenant indiquer au SDK Cloud d'utiliser ces identifiants : définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS pour qu'elle pointe vers ce fichier. Pour en savoir plus sur cette procédure, consultez cette page sur l'utilisation des comptes de service.
Démarrer le service
Lorsque vous êtes prêt à continuer, lancez le serveur Express en local avec la commande suivante :
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
Accédez à votre navigateur Web pour vous connecter à l'adresse localhost:8080. Vous devriez voir quelque chose comme ceci :

Traduisez quelque chose pour voir comment ça marche !

Lorsque vous êtes satisfait, quittez le serveur avec ^C (Ctrl+C) et fermez la fenêtre. Félicitations pour avoir réussi à exécuter un déploiement local. Bonne nouvelle : le déploiement dans le cloud est beaucoup plus facile.
Dépannage
Avez-vous reçu un message d'erreur de ce type lorsque vous avez demandé une traduction ?
node:fs:2486
handleErrorFromBinding(ctx);
^
Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json'
. . .
SOLUTION : Cette erreur signifie que vous n'avez pas terminé de créer un compte de service et de télécharger le fichier de paire de clés publique/privée credentials.json. Veuillez revenir à OPTION 1 : Exécuter le service en local, effectuer cette procédure et installer les identifiants dans le dossier principal avant de continuer.
8. OPTION 2 : Déployer sur App Engine (environnement standard)
Cette section de l'atelier de programmation ne concerne que le déploiement sur Node App Engine. Si cela ne vous intéresse pas, passez à la section suivante.
Ce déploiement utilise le fichier de configuration app.yaml, qui indique à App Engine l'environnement d'exécution à utiliser sur une seule ligne :
runtime: nodejs16
Le fichier app.yaml n'est utilisé ni par Cloud Functions, ni par Cloud Run. Si vous ne prévoyez pas d'utiliser App Engine, vous pouvez supprimer ce fichier sans risque. Lorsque vous êtes prêt à déployer sur App Engine, exécutez cette commande :
$ gcloud app deploy
Une fois une région sélectionnée, le résultat gcloud app deploy sera beaucoup moins verbeux et devrait se présenter comme suit :
Services to deploy: descriptor: [/private/tmp/nodejs/app.yaml] source: [/private/tmp/nodejs] target project: [PROJECT_ID] target service: [default] target version: [2021...] target url: [https://PROJECT_ID.REG_ABBR.appspot.com] target service account: [App Engine default service account] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 2 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REG_ABBR.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse To take a quick anonymous survey, run: $ gcloud survey
Maintenant que votre application est disponible dans le monde entier, vous devriez pouvoir y accéder à l'URL contenant l'ID de votre projet. Vous devriez voir un résultat semblable à la version Express locale, mais sachez qu'elle s'exécute dans le cloud et est disponible dans le monde entier :

Si vous envoyez une requête, vous constaterez qu'elle fonctionne de la même manière que tous les autres déploiements.
9. OPTION 3 : Déployer sur Cloud Functions
Cette section de l'atelier de programmation ne concerne que le déploiement sur les fonctions Cloud Functions Node. Si cela ne vous intéresse pas, passez à la section suivante.
Cloud Functions n'utilise pas de fichier de configuration. Par conséquent, lorsque vous êtes prêt à déployer votre fonction sur Cloud Functions, exécutez la commande suivante :
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
Votre projet GCP peut avoir un REGION par défaut, mais vous pouvez utiliser l'indicateur --region pour déployer votre fonction dans une région spécifique. Contrairement à d'autres produits Cloud, Cloud Functions ne vous invite pas à activer l'API. Quelle que soit la région choisie, le résultat gcloud functions deploy doit se présenter comme suit :
Deploying function (may take a while - up to 2 minutes)...⠛ For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx entryPoint: app httpsTrigger: securityLevel: SECURE_OPTIONAL url: https://REGION-PROJECT_ID.cloudfunctions.net/translate ingressSettings: ALLOW_ALL labels: deployment-tool: cli-gcloud name: projects/PROJECT_ID/locations/REGION/functions/translate runtime: nodejs16 serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip status: ACTIVE timeout: 60s updateTime: '2021...' versionId: '...'
Maintenant que votre application est disponible dans le monde entier, vous devriez pouvoir y accéder à l'URL contenant l'ID de votre projet, comme indiqué dans le résultat du déploiement (sous "httpsTrigger/url"). L'URL devrait ressembler à ceci : https://REGION-PROJECT_ID.cloudfunctions.net/translate, qui varie en fonction de la région que vous avez sélectionnée et de l'ID de votre projet Cloud.

10. OPTION 4 : Déployer sur Cloud Run
Cette section de l'atelier de programmation ne concerne que le déploiement sur Cloud Run. Si cela ne vous intéresse pas, passez à la section suivante.
Cloud Run ne comporte pas de fichiers de configuration. Par conséquent, lorsque vous êtes prêt à déployer votre application sur Cloud Run, suivez les instructions ci-dessous.
Vous êtes maintenant prêt à déployer votre service de traduction sur Cloud Run en exécutant la commande suivante :
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
Le résultat doit se présenter comme suit et fournir des suggestions pour les prochaines étapes :
Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
Les packs de création Cloud conteneurisent vos applications pour Cloud Run de la même manière que si vous les exécutiez en local. Pour les utilisateurs de Node.js, il exécute npm install et npm start. Pour Python, il exécute pip install -r requirements.txt et démarre l'application à partir des instructions de votre Procfile. (Il en va de même pour toutes les autres langues compatibles avec les buildpacks Cloud.) Votre application sera prête à l'emploi une fois le processus de compilation terminé.
Votre application est ensuite (déployée au niveau régional, mais) disponible dans le monde entier. Vous pouvez y accéder à l'URL contenant votre ID de projet, comme indiqué dans le résultat du déploiement (sous "Service URL:").

Traduisez quelque chose pour voir comment ça marche !

11. Conclusion
Félicitations ! Vous avez appris à activer et à utiliser l'API Cloud Translation, à obtenir les identifiants nécessaires et à déployer une application Web simple sur Express en local, sur App Engine, Cloud Functions et/ou Cloud Run. Pour en savoir plus ou accéder à d'autres versions de cette application ainsi qu'à d'autres ateliers de programmation, veuillez consulter le dossier du dépôt.
Effectuer un nettoyage
L'API Cloud Translation vous permet de traduire sans frais un nombre fixe de caractères par mois. App Engine dispose également d'un quota sans frais, tout comme Cloud Functions et Cloud Run. Des frais vous seront facturés si l'un ou l'autre de ces seuils est dépassé. Si vous prévoyez de passer au prochain atelier de programmation, vous n'avez pas besoin d'arrêter votre application.
Toutefois, si vous n'êtes pas encore prêt à passer au tutoriel suivant ou si vous craignez que l'application que vous venez de déployer soit découverte sur Internet, désactivez votre application App Engine, supprimez votre fonction Cloud Functions ou désactivez votre service Cloud Run pour éviter les frais. Lorsque vous serez prêt à passer au prochain atelier de programmation, vous pourrez le réactiver. En revanche, si vous ne souhaitez pas poursuivre avec cette application ni d'autres ateliers de programmation et que vous souhaitez tout supprimer complètement, vous pouvez arrêter le projet.
De plus, le déploiement sur une plate-forme de calcul sans serveur Google Cloud entraîne des coûts de compilation et de stockage mineurs. Cloud Build et Cloud Storage disposent chacun de leur propre quota sans frais. Pour plus de transparence, Cloud Build compile l'image de votre application, qui est ensuite stockée dans Cloud Container Registry ou Artifact Registry, son successeur. Le stockage de cette image utilise une partie de ce quota, tout comme le trafic sortant du réseau lors du transfert de cette image vers le service. Toutefois, il est possible que vous résidiez dans une région où ce niveau sans frais n'est pas disponible. Veillez donc à surveiller votre utilisation de l'espace de stockage pour minimiser les coûts potentiels.
12. Ressources supplémentaires
Dans les sections suivantes, vous trouverez des ressources de lecture supplémentaires ainsi que des exercices recommandés pour approfondir vos connaissances acquises en suivant ce tutoriel.
Étude supplémentaire
Maintenant que vous avez acquis de l'expérience avec l'API Translation, faisons quelques exercices supplémentaires pour développer vos compétences. Pour poursuivre votre parcours d'apprentissage, modifiez notre exemple d'application pour effectuer les opérations suivantes :
- Suivez toutes les autres éditions de cet atelier de programmation pour l'exécuter en local ou le déployer sur les plates-formes de calcul sans serveur Google Cloud (consultez le fichier README du dépôt).
- Suivez ce tutoriel en utilisant un autre langage de programmation.
- Modifiez cette application pour qu'elle accepte différentes langues sources ou cibles.
- Mettez à niveau cette application pour pouvoir traduire du texte dans plusieurs langues. Modifiez le fichier de modèle pour qu'il contienne un menu déroulant des langues cibles acceptées.
En savoir plus
Google App Engine
Google Cloud Functions
- Page d'accueil de Cloud Functions
- Documentation sur Cloud Functions
- Comptes de service par défaut pour Cloud Functions
Google Cloud Run
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Annonce des packs de création Google Cloud
- Dépôt des packs de création Google Cloud
- Page d'accueil de Cloud Artifact Registry
- Documentation Cloud Artifact Registry
- Page d'accueil de Cloud Container Registry
- Documentation Cloud Container Registry
Google Cloud Translation et Google ML Kit
- Page d'accueil de Cloud Translation
- Documentation Cloud Translation
- Bibliothèques clientes de l'API Cloud Translation (tous les langages de développement)
- Langues (parlées/écrites) acceptées par l'API Cloud Translation
- Page sur la tarification de l'API Translation
- Toutes les API de "composants" Cloud AI/ML
- Google ML Kit (sous-ensemble d'API Cloud AI/ML pour mobile)
- API Translation de Google ML Kit
Autres produits/pages Google Cloud
- Bibliothèques clientes Google Cloud
- Niveau "Toujours sans frais" de Google Cloud
- Toute la documentation Google Cloud
Liens Python
- Démarrage rapide avec App Engine pour Python 3
- Environnement d'exécution Python 2 App Engine (Standard)
- Environnement d'exécution Python 3 App Engine (Standard)
- Différences entre les environnements d'exécution Python 2 et Python 3 App Engine (Standard)
- Guide de migration d'App Engine (Standard) de Python 2 vers Python 3
- Guide de démarrage rapide de Cloud Functions pour Python
- Guide de démarrage rapide de Cloud Run pour Python
- Assistance Google Cloud Python
- Flask
Liens Node.js
- Guide de démarrage rapide Node.js App Engine
- Environnement d'exécution Node.js App Engine (Standard)
- Guide de démarrage rapide de Cloud Functions pour Node.js
- Guide de démarrage rapide de Node.js Cloud Run
- Assistance Google Cloud Node.js
- Express
Licence
Ce tutoriel est publié sous licence Creative Commons Attribution 2.0 Generic, tandis que le code source du dépôt est publié sous licence Apache 2.