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 :
- Utiliser les API Google Cloud, en particulier l'API Cloud Translation (avancé/v3)
- Exécutez une application Web de base en local ou déployez-la 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 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">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 ?
<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 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 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.
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 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 :
- Google Cloud/GCP : chaque produit est facturé différemment et est généralement facturé à 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 USD dans l'ensemble.
- API Google Workspace (anciennement G Suite) : l'utilisation des API d'applications telles que Gmail, Google Drive, Agenda, Docs, Sheets ou Slides est couverte par des frais d'abonnement mensuels Workspace (dans la limite de certaines limites).
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:
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:
- Assurez-vous que les versions contemporaines de Node (>=10) et de NPM (>=6) sont installées.
- 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.json
est présent, puis exécuteznpm 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
};
- 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. - 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
etTARGET
. 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. - Le premier élément de chaque paire (
SOURCE
etTARGET
) 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). - Les lignes du bas permettent d'envoyer toutes les requêtes HTTP à
translate()
, puis d'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 récupère l'entrée utilisateur et appelle l'API Translation pour effectuer le gros du travail. Voyons cela de plus près:
- 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.
- 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.
- 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 (voirsourceLanguageCode
dans la documentation). - 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.
- Exécuter le service en local
- Déployer une application dans 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 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:
- Créer un compte de service
- Créer une paire de clés publique/privée de compte de service
- Télécharger le fichier d'identifiants et l'associer au code de l'application
- 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:
Traduisez quelque chose pour voir ça fonctionner !
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:
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.
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
" :
Traduisez quelque chose pour voir ça fonctionner !
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:
- 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).
- Suivez ce tutoriel dans un autre langage de programmation.
- Modifiez cette application pour qu'elle prenne en charge d'autres langues sources ou cibles.
- 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
- Page d'accueil de Cloud Functions
- Documentation sur Cloud Functions
- Comptes de service par défaut pour Cloud Functions
Google Cloud Run
Packs de création Google Cloud, Container Registry, Artifact Registry
- Annonce Cloud Buildpacks
- 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 acceptées par l'API Cloud Translation (parlée ou écrite)
- Page des tarifs de l'API Translation
- Tous les éléments de base de l'IA et du ML dans le cloud API
- Google ML Kit (sous-ensemble d'API Cloud AI/ML pour mobile)
- API Google ML Kit Translation
Autres produits/pages Google Cloud
- Bibliothèques clientes Google Cloud
- "Toujours sans frais" de Google Cloud niveau
- Toute la documentation Google Cloud
Liens Python
- Guide de démarrage rapide d'App Engine pour Python 3
- Environnement d'exécution App Engine (standard) pour Python 2
- Environnement d'exécution App Engine (standard) pour Python 3
- Différences entre Python 2 et Trois environnements d'exécution App Engine (standard)
- Guide de migration pour Python 2 vers App Engine (standard)
- Guide de démarrage rapide de Cloud Functions pour Python
- Guide de démarrage rapide de Cloud Run pour Python
- Compatibilité de Google Cloud avec Python
- Flask
Liens Node.js
- Guide de démarrage rapide d'App Engine pour Node.js
- Environnement d'exécution App Engine (standard) Node.js
- Guide de démarrage rapide de Cloud Functions en Node.js
- Guide de démarrage rapide de Cloud Run en Node.js
- Compatibilité avec Google Cloud Node.js
- Express
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.