Déployez une version de base de Google Traduction Application Express.js sur App Engine, Cloud Functions et Cloud Run

1. Présentation

Cette série d'ateliers de programmation (tutoriels pratiques et d'auto-formation) vise à aider les développeurs à comprendre les différentes options dont ils disposent pour déployer leurs applications. Vous allez apprendre à utiliser l'API Google Cloud Translation dans une application Web simple. Cette application peut être exécutée localement 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 de la plate-forme "nébuleuse sans serveur" Open Source, qui comprend 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 à des API Google non cloud depuis nos plates-formes sans serveur.

Cet atelier de programmation porte sur le déploiement de cette application sur les plates-formes en gras ci-dessus.

Vous apprendrez à effectuer les tâches suivantes :

Prérequis

  • Un projet Google Cloud avec un compte de facturation Cloud actif
  • Un framework Web installé pour s'exécuter en local ( 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)
  • Connaissance pratique des commandes de base du système d'exploitation

Enquête

Comment allez-vous utiliser ce tutoriel ?

<ph type="x-smartling-placeholder"></ph> Je vais le lire et effectuer les exercices Lecture seule

Comment évalueriez-vous votre expérience en développement avec Python ou Node.js ?

Débutant Intermédiaire Expert

Quel est votre niveau d'expérience avec les services Google Cloud ?

<ph type="x-smartling-placeholder"></ph> Débutant Intermédiaire Expert
.

2. Préparation

Configuration de l'environnement au rythme de chacun

  1. 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.)

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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 gratuit pour bénéficier d'un crédit de 300 $.

3. Activer l'API Translation

Dans cette section, vous apprendrez à activer les API Google en général. Pour notre exemple d'application, vous allez activer l'API Cloud Translation. Vous allez également activer App Engine, Cloud Functions et/ou Cloud Run (ainsi que Cloud Artifact Registry), en fonction de la ou des plates-formes sur lesquelles vous souhaitez déployer l'exemple d'application.

Activer les API Google

Introduction

Quelle que soit l'API Google que vous souhaitez utiliser dans votre application, vous devez les activer. Vous pouvez activer les API à partir de la ligne de commande ou de la console Cloud. La procédure d'activation des API est identique. Une fois que vous avez activé une API, vous pouvez en activer une autre de la même manière.

Option 1: interface de ligne de commande gcloud (Cloud Shell ou environnement local)

Bien que l'activation des API à partir de la console Cloud soit plus courante, certains développeurs préfèrent tout faire à partir de la ligne de commande. Pour ce faire, vous devez rechercher le "nom de service" d'une API. Son URL ressemble à ceci: SERVICE_NAME.googleapis.com. Vous pouvez les trouver dans le tableau des produits compatibles ou 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 sur lequel l'outil de ligne de commande gcloud est installé) :

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:Activez plusieurs API avec une seule requête. Par exemple, si des utilisateurs déploient une application à l'aide de l'API Cloud Translation sur App Engine, Cloud Functions et Cloud Run, la ligne de commande est 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. De plus, il active Cloud Artifact Registry, car c'est là que les images de conteneur 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 à Gestionnaire d'API, puis sélectionnez Bibliothèque.

fb0f1d315f122d4a.png

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

2275786a24f8f204.png

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

7960a6752a1da767.png

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 entraîne des coûts. Lors de l'activation des API Cloud, vous pouvez être invité à indiquer un compte de facturation actif. Cependant, certains produits Google Cloud proposent un accès "Toujours sans frais" niveau supérieur, que vous devez dépasser pour que des frais vous soient facturés.

Les nouveaux utilisateurs de GCP peuvent bénéficier de l'essai sans frais, qui est actuellement valable 300 USD pour les 90 premiers jours. Les ateliers de programmation ne sont généralement pas facturés et ne sont pas facturés. Nous vous conseillons donc de suspendre l'essai sans frais jusqu'à ce que vous soyez vraiment prêt à l'essayer, d'autant plus qu'il s'agit d'une offre unique. Les quotas de la version sans frais n'expirent pas et s'appliquent que vous utilisiez ou non l'essai sans frais.

Les utilisateurs doivent consulter les informations tarifaires d'une API avant de l'activer (par exemple, la page des tarifs de l'API Cloud Vision ), surtout en indiquant s'il s'agit d'une version sans frais et, le cas échéant, de quoi il s'agit. Tant que vous respectez les limites quotidiennes ou mensuelles spécifiées, aucuns frais ne vous seront facturés. Les tarifs et les niveaux de sans frais varient selon les API des groupes de produits Google. Exemples :

La facturation varie selon les produits Google. Veillez donc à consulter la documentation appropriée pour en savoir plus.

Vérifier que les services souhaités sont activés

Vérifiez que l'API Cloud Translation est disponible dans le gestionnaire d'API 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 depuis chacun de leurs tableaux de bord respectifs dans Cloud Console: App Engine, Cloud Functions ou Cloud Run.

Bien qu'il soit visuellement instructif d'activer des API à partir de la console Cloud, il est plus rapide d'utiliser l'outil gcloud, qui prend 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 concerne l'ensemble des API Google. Étudions plus en détail ce tutoriel. Bien que son quota mensuel ne figure pas dans la liste des ressources "Toujours sans frais" la page de résumé du niveau de service, la page des tarifs de l'API Translation indique que tous les utilisateurs bénéficient d'un nombre fixe de caractères traduits chaque mois. Aucuns frais ne devraient vous être facturés par l'API si vous restez en dessous de ce seuil. Pour en savoir plus sur les coûts liés à l'utilisation des plates-formes sans serveur Google Cloud, consultez la section "Coûts" du dépôt. Effectuer un nettoyage à la fin de cet atelier de programmation vous explique comment ne plus être facturé à l'issue de cet atelier de programmation.

4. Obtenir le code de l'application exemple

Télécharger le fichier ZIP ou le dépôt de clones

  • 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'un 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 à l'aide du bouton vert Code (Code), comme illustré dans la capture d'écran suivante:

5cd6110c4414cf65.png

Maintenant que vous avez tout ce qu'il faut, créez une copie complète du dossier pour suivre ce tutoriel, car cela impliquera probablement de supprimer ou de modifier les 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:

  1. Assurez-vous que les versions contemporaines de Node (>=10) et de NPM (>=6) sont installées.
  2. 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.
  3. Vérifiez que package.json est présent, puis exécutez npm install

Pour l'étape 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 une application dérivée simple de Google Traduction qui invite les utilisateurs à saisir du texte en anglais pour obtenir la traduction équivalente 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 ce qui est indiqué 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 cela fonctionne. En l'absence des commentaires sur l'attribution de licence, la phrase se présente 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
};
  1. Les require incluent des fonctionnalités de framework et de création de modèles, ainsi que la bibliothèque cliente de l'API Cloud Translation.
  2. Les variables globales représentent l'application Web, l'ID du projet Cloud, le client de l'API Translation et le "chemin d'accès de l'emplacement" parent. pour les appels de l'API Translation, et dans les langues SOURCE et TARGET. 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 compatibles avec l'API Cloud Translation.
  3. Le premier élément de chaque paire (SOURCE et TARGET) est le code de langue, tandis que le second correspond au nom de la langue (et utilisé à des fins d'affichage uniquement, car il n'est pas pertinent pour l'API).
  4. Les lignes du bas permettent d'envoyer toutes les requêtes HTTP à translate(), puis d'exporter l'objet d'application app.

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 récupère l'entrée utilisateur et appelle l'API Translation pour effectuer le gros du travail. Voyons cela de plus près:

  1. Réinitialisez les variables de base du formulaire. Cela concerne principalement les requêtes GET, car les requêtes POST contiennent des données qui les remplacent.
  2. S'il s'agit d'une requête POST, récupérez le texte à traduire et, si elle n'est pas vide, créez une structure JSON représentant l'exigence de métadonnées de l'API. Appelez ensuite l'API du service.
  3. 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 (voir sourceLanguageCode dans la documentation).
  4. Dans tous les cas, mettez en forme les résultats réels (POST) ou aucune donnée (GET) dans le contexte du modèle et effectuez le rendu.

La partie visuelle de l'application se trouve dans le modèle de fichier index.html. Il affiche tous les résultats précédemment traduits (sinon, il est vide) suivis du formulaire demandant une traduction:

<!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>

Dans la suite du tutoriel, vous pouvez choisir l'une 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 les réaliser tous ou certains.

  1. Exécuter le service en local
  2. Déployer une application dans App Engine (environnement standard)
  3. Déployer une application dans Cloud Functions
  4. 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 en local. Si vous n'effectuez le déploiement que dans le cloud, passez à la section suivante.

Pour exécuter l'application exemple en local, vous devez suivre trois étapes distinctes:

  1. Créer un compte de service
  2. Créer une paire de clés publique/privée de compte de service
  3. Télécharger le fichier d'identifiants et l'associer au code de l'application
  4. Démarrer le service

En savoir plus sur les comptes de service

Les comptes de service constituent le mécanisme de sécurité permettant d'accéder aux API Google pour les applications cloud lorsque vous accédez à des données qui n'appartiennent pas à des utilisateurs humains. Lors du déploiement dans le cloud, toutes les plates-formes de calcul Google Cloud (sans serveur ou autre) fournissent des comptes de service par défaut afin de réduire le temps nécessaire à l'intégration des utilisateurs dans le cloud.

Les comptes de service par défaut sont dotés d'un large ensemble d'autorisations permettant de « passer les tâches fastidieuses ». Toutefois, lorsqu'ils se préparent à lancer un service de production, nous recommandons vivement aux utilisateurs de suivre la bonne pratique des "moindres privilèges", mais en créant des comptes de service gérés par l'utilisateur avec seulement les autorisations suffisantes pour que votre application fonctionne correctement. 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 (une paire de clés publique/privée) et mettre ces identifiants à la disposition du 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 de cette page pour créer un compte de service et une paire de clés publique/privée à exécuter en local. Lors de la création de la clé de compte de service, vous serez invité à fournir les autorisations souhaitées. Veillez à sélectionner roles/cloudtranslate.user pour accéder à l'API.

Une fois votre paire de clés créée, vous êtes 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 demander 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 ce processus, consultez cette page.

Démarrer le service

Lorsque vous êtes prêt à continuer, lancez le serveur Express en local à l'aide de 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 y connecter sur localhost:8080. Vous devriez obtenir un résultat semblable à celui-ci:

adc6665b7ae13c40.png

Traduisez quelque chose pour voir ça fonctionner !

fc154326080bf14f.png

Lorsque vous en êtes satisfait, quittez le serveur en appuyant sur ^C (Ctrl+C), puis quittez. Félicitations ! Vous venez d'exécuter un déploiement local. La bonne nouvelle, c'est que le déploiement dans le cloud est beaucoup plus facile.

Dépannage

Ce type d'erreur s'affiche-t-il lorsque vous demandez 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 créé de compte de service ni téléchargé le fichier de paire de clés publique/privée credentials.json. Veuillez revenir à " OPTION 1: Exécuter le service localement" et terminez ce processus et installez creds dans le dossier principal avant de continuer.

8. OPTION 2: Déployer une application dans l'environnement standard App Engine

Cette section de l'atelier de programmation ne concerne que le déploiement sur Node App Engine. Si ce n'est pas le cas, passez à la section suivante.

Ce déploiement utilise le fichier de configuration app.yaml, qui indique à App Engine quel environnement d'exécution utiliser avec 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 en toute sécurité. Lorsque vous êtes prêt à effectuer le déploiement sur App Engine, exécutez la commande suivante:

$ gcloud app deploy

Une fois la région sélectionnée, la sortie gcloud app deploy sera beaucoup moins détaillée 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 via l'URL contenant l'ID de votre projet. Vous devriez obtenir un résultat semblable à la version Express locale, mais sachez qu'elle s'exécute dans le cloud et qu'elle est disponible dans le monde entier:

da28f951c33a2c3d.png

Si vous envoyez une demande, vous constaterez que son fonctionnement est le même que pour tous les autres déploiements.

9. OPTION 3: Déployer une application dans Cloud Functions

Cette section de l'atelier de programmation ne concerne que le déploiement sur des fonctions Cloud Node. Si ce n'est pas le cas, passez à la section suivante.

Cloud Functions ne contient aucun fichier de configuration. Par conséquent, lorsque vous êtes prêt à effectuer le déploiement 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'option --region pour déployer votre fonction dans une région spécifique. Les invites Cloud Functions ne vous sont pas demandées comme les autres produits Cloud. Quelle que soit la région que vous choisissez, 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 via l'URL contenant l'ID de votre projet, comme indiqué dans le résultat du déploiement (sous "httpsTrigger/url"). L'URL doit ressembler à ceci: https://REGION-PROJECT_ID.cloudfunctions.net/translate, qui varie en fonction de la région sélectionnée et de l'ID de votre projet Cloud.

518f1c3165f2096d.png

10. OPTION 4: Déployer une application sur Cloud Run

Cette section de l'atelier de programmation ne concerne que le déploiement sur Cloud Run. Si ce n'est pas le cas, passez à la section suivante.

Cloud Run ne comporte aucun fichier de configuration. Par conséquent, lorsque vous êtes prêt à effectuer le déploiement 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 quelques invites pour les étapes suivantes:

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

Cloud Buildpacks vos applications dans Cloud Run de la même manière que si vous exécutiez votre application 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 lance l'application à partir des instructions de votre Procfile. Il en va de même pour tous les autres langages compatibles avec les packs de création Cloud. Votre application sera prête à être utilisée une fois le processus de compilation terminé.

Votre application est alors disponible (déployée au niveau régional, mais) dans le monde entier. Elle est accessible via l'URL contenant votre ID de projet, comme indiqué dans le résultat du déploiement (sous "Service URL" :

169f6edf5f7d2068.png

Traduisez quelque chose pour voir ça fonctionner !

31554e71cb80f1b4.png

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 pour Express en local, sur App Engine, Cloud Functions et/ou Cloud Run. Veuillez consulter le dossier du dépôt pour en savoir plus ou pour accéder à d'autres versions de cette application ainsi qu'à d'autres ateliers de programmation.

Effectuer un nettoyage

L'API Cloud Translation vous permet d'exécuter sans frais un nombre fixe de caractères traduits par mois. App Engine dispose également d'un quota sans frais. Il en va de même pour Cloud Functions et Cloud Run. Des frais vous seront facturés en cas de dépassement. Si vous prévoyez de passer à l'atelier de programmation suivant, 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 qu'Internet découvre l'application que vous venez de déployer, désactivez votre application App Engine, supprimez votre fonction Cloud ou désactivez votre service Cloud Run pour éviter des frais. Lorsque vous serez prêt à passer au prochain atelier de programmation, vous pourrez le réactiver. En revanche, si vous ne comptez pas utiliser cette application ou d'autres ateliers de programmation, mais que vous souhaitez tout supprimer complètement, vous pouvez arrêter votre projet.

De plus, le déploiement sur une plate-forme de calcul sans serveur Google Cloud entraîne des coûts minimes de compilation et de stockage. Cloud Build et Cloud Storage disposent de leur propre quota sans frais. Pour plus de transparence, Cloud Build crée l'image de votre application, qui est ensuite stockée dans Cloud Container Registry ou dans Artifact Registry, son successeur. Le stockage de cette image utilise une partie de ce quota, tout comme la sortie réseau lors du transfert de cette image vers le service. Cependant, vous pouvez résider dans une région qui n'offre pas ce type de version sans frais. Vous devez donc surveiller l'utilisation de votre espace de stockage afin de réduire les coûts potentiels.

12. Ressources supplémentaires

Dans les sections suivantes, vous trouverez d'autres documents à lire ainsi que des exercices recommandés pour parfaire les connaissances acquises lors de ce tutoriel.

Étude supplémentaire

Maintenant que vous disposez d'une certaine expérience de l'API Translation, vous allez maintenant effectuer quelques exercices supplémentaires pour développer vos compétences. Pour poursuivre votre parcours de formation, modifiez notre application exemple comme suit:

  1. Suivez toutes les autres éditions de cet atelier de programmation pour une exécution en local ou un déploiement sur des plates-formes de calcul sans serveur Google Cloud (consultez le fichier README du dépôt).
  2. Suivez ce tutoriel dans un autre langage de programmation.
  3. Modifiez cette application pour qu'elle prenne en charge d'autres langues sources ou cibles.
  4. Mettre à niveau cette application pour pouvoir traduire du texte dans plusieurs langues modifier le fichier de modèle pour y inclure un menu déroulant des langues cibles prises en charge.

En savoir plus

Google App Engine

Google Cloud Functions

Google Cloud Run

Packs de création Google Cloud, Container Registry, Artifact Registry

Google Cloud Translation et Google ML Kit

Autres produits/pages Google Cloud

Licence

Ce tutoriel est soumis à une licence générique Creative Commons Attribution 2.0, tandis que le code source du dépôt est sous licence Apache 2.