Esegui il deployment di una versione di base di "Google Traduttore" App Express.js su App Engine, Cloud Functions e Cloud Run

1. Panoramica

Questa serie di codelab (tutorial pratici e autonomi) ha lo scopo di aiutare gli sviluppatori a comprendere le varie opzioni a loro disposizione durante il deployment delle applicazioni. Imparerai a utilizzare l'API Google Cloud Translation in una semplice applicazione web. Questa app può essere eseguita localmente o di cui è possibile eseguire il deployment su una piattaforma di calcolo serverless cloud (App Engine, Cloud Functions o Cloud Run).

Seguirai questo tutorial JavaScript con Node.js utilizzando il framework web Express.js. Imparerai anche ad accedere alle API Google Cloud dalle nostre piattaforme serverless. Tutte le versioni di questa app provengono dal repository open source"nebulous serverless", che include una versione Python di questa app e codelab indipendenti. Il repository ospita anche app simili che mostrano agli sviluppatori come accedere alle API Google non cloud dalle nostre piattaforme serverless.

Questo codelab si concentra sul deployment di questa app sulle piattaforme in grassetto sopra.

Imparerai come

Che cosa ti serve

  • Un progetto Google Cloud con un account di fatturazione Cloud attivo
  • Un framework web installato per l'esecuzione locale ( Flask per chi segue il tutorial su Python o Express per chi segue il tutorial su JavaScript/Node.js)
  • Almeno una piattaforma di computing serverless abilitata per i deployment Google Cloud
  • Competenze di programmazione di base (Python o JavaScript/Node.js)
  • Conoscenza pratica dei comandi di base del sistema operativo

Sondaggio

Come utilizzerai questo tutorial?

Leggilo e completa gli esercizi Leggilo soltanto

Come valuteresti la tua esperienza di sviluppo in Python o Node.js?

Principiante Intermedio Avanzato

Come valuti la tua esperienza di utilizzo dei servizi Google Cloud?

Principiante Intermedio Avanzato

2. Configurazione e requisiti

Configurazione dell'ambiente autonomo

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google e puoi aggiornarla in qualsiasi momento.
  • L'ID progetto deve essere univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). Cloud Console genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che in genere è identificato come PROJECT_ID), quindi, se non ti piace, generane un altro casuale oppure puoi provare il tuo e vedere se è disponibile. Viene "congelato" dopo la creazione del progetto.
  • Esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Per arrestare le risorse in modo da non incorrere in costi di fatturazione al termine di questo tutorial, segui le istruzioni di "pulizia" riportate alla fine del codelab. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.

3. Abilita l'API Translation

In questa sezione, imparerai come abilitare le API di Google in generale. Per la nostra app di esempio, abiliterai l'API Cloud Translation. Abiliterai anche App Engine, Cloud Functions e/o Cloud Run (più Cloud Artifact Registry), a seconda delle piattaforme su cui vuoi eseguire il deployment dell'app di esempio.

Abilitare le API di Google

Introduzione

Indipendentemente dall'API Google che vuoi utilizzare nella tua applicazione, deve essere abilitata. Le API possono essere abilitate dalla riga di comando o dalla console Cloud. La procedura di attivazione delle API è identica, quindi una volta attivata un'API, puoi attivarne un'altra nello stesso modo.

Opzione 1: gcloud interfaccia a riga di comando (Cloud Shell o ambiente locale)

Sebbene l'abilitazione delle API dalla console Cloud sia più comune, alcuni sviluppatori preferiscono fare tutto dalla riga di comando. Per farlo, devi cercare il "nome del servizio " di un'API. Sembra un URL: SERVICE_NAME.googleapis.com. Puoi trovarli nel grafico dei prodotti supportati oppure puoi eseguire query in modo programmatico con l'API Google Discovery.

Con queste informazioni, utilizzando Cloud Shell (o il tuo ambiente di sviluppo locale con lo strumento a riga di comando gcloud installato), puoi abilitare un'API nel seguente modo:

gcloud services enable SERVICE_NAME.googleapis.com

Esempio 1: abilita l'API Cloud Vision

gcloud services enable vision.googleapis.com

Esempio 2: attiva Google App Engine

gcloud services enable appengine.googleapis.com

Esempio 3: abilita più API con una sola richiesta. Ad esempio, se questo codelab ha visualizzatori che eseguono il deployment di un'app utilizzando l'API Cloud Translation in App Engine, Cloud Functions e Cloud Run, la riga di comando sarebbe:

gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

Questo comando abilita App Engine, Cloud Functions, Cloud Run e l'API Cloud Translation. Inoltre, abilita Cloud Artifact Registry perché è qui che le immagini container devono essere registrate dal sistema Cloud Build per poter essere sottoposte a deployment su Cloud Run.

Opzione 2: Cloud Console

Puoi anche abilitare le API di Google in API Manager. Nella console Cloud, vai a API Manager e seleziona Libreria.

fb0f1d315f122d4a.png

Inizia a inserire il nome di un'API nella barra di ricerca per visualizzare i risultati corrispondenti:

2275786a24f8f204.png

Seleziona l'API che vuoi abilitare e fai clic sul pulsante Abilita:

7960a6752a1da767.png

La procedura di attivazione di tutte le API è simile, indipendentemente dall'API Google che vuoi utilizzare.

Costo

Molte API di Google possono essere utilizzate senza costi, tuttavia, l'utilizzo della maggior parte dei prodotti e delle API Google Cloud comporta dei costi. Quando abiliti le API Cloud, potrebbe esserti chiesto un account di fatturazione attivo. Tuttavia, alcuni prodotti Google Cloud includono un livello"Always Free", che devi superare per incorrere in addebiti di fatturazione.

I nuovi utenti di GCP hanno diritto alla prova senza costi, attualmente pari a 300 $da utilizzare nei primi 90 giorni. I codelab in genere non comportano costi di fatturazione elevati o nulli, quindi ti consigliamo di rimandare la prova senza costi finché non sei pronto a provarla, soprattutto perché si tratta di un'offerta una tantum. Le quote del Livello senza costi non scadono e si applicano indipendentemente dal fatto che tu utilizzi o meno la prova senza costi.

Gli utenti devono fare riferimento alle informazioni sui prezzi di qualsiasi API prima di attivarla (ad esempio, la pagina Prezzi dell'API Cloud Vision ), in particolare per verificare se è disponibile un livello senza costi e, in caso affermativo, qual è. Se rispetti i limiti giornalieri o mensili specificati in totale, non dovresti sostenere alcun costo. I prezzi e i livelli senza costi variano a seconda delle API del gruppo di prodotti Google. Esempi:

I diversi prodotti Google vengono fatturati in modo diverso, quindi assicurati di consultare la documentazione appropriata per queste informazioni.

Assicurarsi che i servizi desiderati siano attivati

Assicurati che l'API Cloud Translation sia presente in API Manager come indicato sopra. Se non hai abilitato le piattaforme serverless dalla riga di comando, puoi farlo dai rispettivi dashboard nella console Cloud: App Engine, Cloud Functions, Cloud Run.

Sebbene l'attivazione delle API da Cloud Console sia visivamente informativa, è più veloce utilizzare lo strumento gcloud, che impiega pochi secondi per attivare tutti i servizi:

$ 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.

Maggiori informazioni sui costi

La sezione precedente sui costi è generale per tutte le API di Google. Vediamo più nel dettaglio questo tutorial. Sebbene la quota mensile non sia elencata nella pagina di riepilogo del livello "Sempre senza costi" complessivo, la pagina dei prezzi dell'API Translation indica che tutti gli utenti ricevono mensilmente un importo fisso di caratteri tradotti. Se rimani al di sotto di questa soglia, non dovresti sostenere alcun costo per l'API. Per saperne di più sui costi utilizzando le piattaforme serverless di Google Cloud, consulta la sezione Costi del repository. La sezione "Pulizia" alla fine spiega come interrompere la fatturazione al termine di questo codelab.

4. Ottieni il codice dell'app di esempio

Scaricare il file ZIP o clonare il repository

  • Scarica il file ZIP o clona il repository con git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
  • Se non hai un ambiente di sviluppo locale e vuoi seguire questo tutorial in Cloud Shell, puoi clonare il repository con lo stesso comando git clone.
  • Puoi anche accedere al file ZIP dal pulsante verde Codice, come mostrato nello screenshot seguente:

5cd6110c4414cf65.png

Ora che hai tutto, crea una copia completa della cartella per seguire questo tutorial specifico, perché probabilmente dovrai eliminare o modificare i file. Se vuoi eseguire un deployment diverso, puoi ricominciare copiando l'originale, in modo da non doverlo clonare o scaricare di nuovo.

5. Conferma l'ambiente Node.js

Per configurare l'ambiente Node.js:

  1. Assicurati di aver installato le versioni contemporanee di Node (>=10) e NPM (>=6).
  2. Vai alla posizione in cui hai clonato il repository (o decompresso il file ZIP), quindi vai alla cartella cloud/nodejs.
  3. Verifica che package.json sia presente, poi esegui npm install

Per il punto 1 sopra, puoi verificare le versioni che hai sulla riga di comando:

$ node -v
v17.0.1
$ npm -v
8.1.0

6. Tour dell'app di esempio

L'app di esempio è un semplice derivato di Google Traduttore che chiede agli utenti di inserire un testo in inglese e di ricevere la traduzione equivalente in spagnolo.

Il file di configurazione package.json indica quali pacchetti di terze parti sono necessari per l'applicazione (tieni presente che le versioni dei pacchetti potrebbero essere aggiornate oltre a quelle elencate qui):

{
  "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"
  }
}

Ora apri il file index.js per vedere come funziona. Omettendo le righe commentate relative alle licenze, la parte superiore e inferiore ha questo aspetto:

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. requires include funzionalità di framework e modelli, nonché la libreria client dell'API Cloud Translation.
  2. Le variabili globali rappresentano l'app web, l'ID progetto Cloud, il client API Translation, il "percorso della posizione" principale per le chiamate all'API Translation e le lingue SOURCE e TARGET. In questo caso, si tratta di inglese (en) e spagnolo (es), ma puoi modificare questi valori con altri codici lingua supportati dall'API Cloud Translation.
  3. Il primo elemento di ogni coppia (SOURCE e TARGET) è il codice della lingua, mentre il secondo è il nome della lingua (e viene utilizzato solo a scopo di visualizzazione, in quanto è irrilevante per l'API).
  4. Le poche righe in basso servono a inviare tutte le richieste HTTP a translate() e poi a esportare l'oggetto applicazione app.

Infine, al centro di index.js si trova il cuore dell'applicazione, la funzione 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 funzione principale si occupa di prendere l'input dell'utente e chiamare l'API Translation per svolgere il lavoro più pesante. Analizziamo la questione nel dettaglio:

  1. Reimposta le variabili di base per il modulo. Questo vale principalmente per le richieste GET, poiché le richieste POST avranno dati che li sostituiranno.
  2. Se si tratta di un POST, prendi il testo da tradurre e, se non è vuoto, crea una struttura JSON che rappresenti il requisito dei metadati dell'API. Quindi, chiama l'API per il servizio.
  3. Non abbiamo passato SOURCE[0] all'API a un'origine inglese specifica. Quando ometti la lingua di origine, richiedi all'API di rilevarla automaticamente (vedi sourceLanguageCode nella documentazione).
  4. In ogni caso, formatta i risultati effettivi (POST) o nessun dato (GET) nel contesto del modello ed esegui il rendering.

La parte visiva dell'applicazione si trova nel file modello index.html. Mostra i risultati tradotti in precedenza (altrimenti vuoti), seguiti dal modulo che chiede di tradurre qualcosa:

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

Per il resto del tutorial, puoi scegliere una o tutte e quattro le opzioni per il deployment e l'esecuzione di questa app. Tutti i deployment sono facoltativi, il che significa che puoi eseguirne uno, alcuni o tutti.

  1. Esegui il servizio localmente
  2. Esegui il deployment in App Engine (ambiente standard)
  3. Esegui il deployment in Cloud Functions
  4. Esegui il deployment in Cloud Run

7. OPZIONE 1: esegui il servizio localmente

Questa sezione del codelab è solo per l'esecuzione locale. Se esegui il deployment solo sul cloud, vai alla sezione successiva.

Per eseguire l'app di esempio in locale, devi seguire tre passaggi distinti:

  1. Crea un account di servizio
  2. Crea una coppia di chiavi pubblica/privata dell'account di servizio
  3. Scaricare il file delle credenziali e raggrupparlo con il codice dell'applicazione
  4. Avviare il servizio

Scopri di più sui service account

Gli account di servizio sono il meccanismo di sicurezza per accedere alle API di Google per le applicazioni basate sul cloud quando si accede a dati che non appartengono a utenti umani. Durante il deployment sul cloud, per ridurre il tempo di attivazione dell'onboarding degli utenti sul cloud, tutte le piattaforme di computing di Google Cloud (serverless e non) forniscono service account predefiniti.

I service account predefiniti sono dotati di un ampio set di autorizzazioni per "tagliare la burocrazia", ma quando ci si prepara a lanciare un servizio di produzione, consigliamo vivamente agli utenti di seguire la best practice dei "privilegi minimi", creando service account gestiti dall'utente con solo le autorizzazioni sufficienti per il corretto funzionamento dell'app. In ogni caso, non esistono service account predefiniti per i deployment locali, quindi devi creare un service account e una chiave del service account (in realtà una coppia di chiavi pubblica/privata) e rendere disponibili queste credenziali al codice dell'applicazione.

Crea una coppia di chiavi del service account e scarica il file delle credenziali

Segui le istruzioni riportate in questa pagina per creare un account di servizio e una coppia di chiavi pubblica/privata da eseguire localmente. Quando crei la chiave del service account, ti viene chiesto di fornire le autorizzazioni desiderate. Assicurati di selezionare roles/cloudtranslate.user per poter accedere correttamente all'API.

Una volta creata correttamente la coppia di chiavi, ti verrà chiesto di scaricare il file della chiave del service account. Chiamalo credentials.json e spostalo nella cartella di primo livello dell'applicazione. Ora devi indicare a Cloud SDK di utilizzare queste credenziali: imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che punti a questo file. Per saperne di più su questa procedura, consulta anche questa pagina sull'utilizzo dei service account.

Avviare il servizio

Quando è tutto pronto per procedere, avvia il server Express in locale con il comando seguente:

$ npm start

> cloud-nebulous-serverless-nodejs@0.0.1 start
> node index.js

Listening on port 8080

Vai al browser web per connetterti all'indirizzo localhost:8080 e dovresti visualizzare un messaggio simile al seguente:

adc6665b7ae13c40.png

Traduci qualcosa per vedere come funziona.

fc154326080bf14f.png

Quando hai finito, esci dal server con ^C (Control+C). Congratulazioni per aver eseguito un deployment locale. La buona notizia è che il deployment nel cloud è molto più semplice.

Risoluzione dei problemi

Ricevi un errore simile a questo quando richiedi una traduzione?

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'
    . . .

SOLUZIONE: questo errore indica che non hai completato la creazione di un service account e il download del file di coppia di chiavi pubblica/privata credentials.json. Torna a "OPZIONE 1: esegui il servizio localmente", completa la procedura e installa le credenziali nella cartella principale prima di procedere.

8. OPZIONE 2: esegui il deployment in App Engine (ambiente standard)

Questa sezione del codelab è dedicata solo al deployment in Node App Engine. Se non ti interessa, vai alla sezione successiva.

Questo deployment utilizza il file di configurazione app.yaml, che indica ad App Engine quale runtime utilizzare con una sola riga:

runtime: nodejs16

Il file app.yaml non viene utilizzato né da Cloud Functions né da Cloud Run. Se non prevedi di utilizzare App Engine, questo file può essere eliminato in modo sicuro. Quando è tutto pronto per il deployment in App Engine, esegui questo comando:

$ gcloud app deploy

Una volta selezionata una regione, l'output di gcloud app deploy sarà molto meno dettagliato e dovrebbe essere simile al seguente:

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

Ora che la tua app è disponibile a livello globale in tutto il mondo, dovresti essere in grado di raggiungerla all'URL contenente l'ID progetto e dovresti vedere un output simile alla versione locale di Express, ma sappi che viene eseguita nel cloud ed è disponibile in tutto il mondo:

da28f951c33a2c3d.png

Se invii una richiesta, vedrai che funziona come tutte le altre implementazioni.

9. OPZIONE 3: esegui il deployment in Cloud Functions

Questa sezione del codelab è solo per il deployment in Node Cloud Functions. Se non ti interessa, vai alla sezione successiva.

Non esistono file di configurazione con Cloud Functions, quindi quando è tutto pronto per il deployment su Cloud Functions, esegui questo comando:

$ gcloud functions deploy translate \
  --runtime nodejs16 \
  --entry-point app \
  --trigger-http \
  --region REGION \
  --allow-unauthenticated

Il tuo progetto Google Cloud potrebbe avere un REGION predefinito, ma puoi utilizzare il flag --region per eseguire il deployment della funzione in una regione specifica. Cloud Functions non ti chiede di eseguire l'accesso come altri prodotti Cloud. Indipendentemente dalla regione scelta, l'output di gcloud functions deploy dovrebbe avere l'aspetto seguente:

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: '...'

Ora che la tua app è disponibile a livello globale, dovresti essere in grado di raggiungerla all'URL contenente l'ID progetto, come mostrato nell'output del deployment (in "httpsTrigger/url"). L'URL dovrebbe avere un aspetto simile a https://REGION-PROJECT_ID.cloudfunctions.net/translate, che varia in base alla regione selezionata e all'ID progetto Cloud.

518f1c3165f2096d.png

10. OPZIONE 4: esegui il deployment in Cloud Run

Questa sezione del codelab riguarda solo il deployment in Cloud Run. Se non ti interessa, vai alla sezione successiva.

Non sono presenti file di configurazione con Cloud Run, quindi quando sei pronto per il deployment in Cloud Run, segui le istruzioni riportate di seguito.

Ora puoi eseguire il deployment del servizio di traduzione su Cloud Run eseguendo questo comando:

$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed

L'output dovrebbe essere simile al seguente e fornire alcuni suggerimenti per i passaggi successivi:

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 esegue il pacchetto delle tue app in Cloud Run in modo simile a come faresti se eseguissi l'app localmente. Per gli utenti Node.js, esegue npm install e npm start. Per Python, esegue pip install -r requirements.txt e avvia l'app dalle istruzioni nel file Procfile. Lo stesso vale per tutte le altre lingue supportate da Cloud Buildpacks. L'app sarà pronta all'uso al termine della procedura di build.

L'app viene quindi (implementata a livello regionale, ma) resa disponibile a livello globale e può essere raggiunta all'URL contenente l'ID progetto, come mostrato nell'output di deployment (in "Service URL:"

169f6edf5f7d2068.png

Traduci qualcosa per vedere come funziona.

31554e71cb80f1b4.png

11. Conclusione

Complimenti! Hai imparato ad attivare e utilizzare l'API Cloud Translation, a ottenere le credenziali necessarie e a eseguire il deployment di una semplice app web su Express in locale, su App Engine, Cloud Functions e/o Cloud Run. Per scoprire di più o per accedere ad altre versioni di questa app e ad altri codelab, consulta la cartella del repository.

Esegui la pulizia

L'API Cloud Translation ti consente di eseguire una quantità fissa di caratteri tradotti al mese senza costi. Anche App Engine ha una quota senza costi, così come Cloud Functions e Cloud Run. Se uno dei due viene superato, ti verranno addebitati dei costi. Se prevedi di continuare con il codelab successivo, non devi chiudere l'app.

Tuttavia, se non sei ancora pronto per passare al tutorial successivo o temi che internet possa scoprire l'app che hai appena eseguito il deployment, disattiva l'app App Engine, elimina la tua Cloud Function o disattiva il servizio Cloud Run per evitare addebiti. Quando vuoi passare al codelab successivo, puoi riattivarlo. D'altra parte, se non intendi continuare con questa applicazione o con altri codelab e vuoi eliminare tutto completamente, puoi chiudere il progetto.

Inoltre, il deployment su una piattaforma di serverless computing di Google Cloud comporta costi minimi di build e archiviazione. Cloud Build ha una propria quota senza costi, così come Cloud Storage. Per una maggiore trasparenza, Cloud Build crea l'immagine dell'applicazione, che viene poi archiviata in Cloud Container Registry o in Artifact Registry, il suo successore. L'archiviazione di questa immagine utilizza parte della quota, così come l'uscita di rete durante il trasferimento dell'immagine al servizio. Tuttavia, potresti vivere in una regione che non dispone di un livello senza costi, quindi tieni sotto controllo l'utilizzo dello spazio di archiviazione per ridurre al minimo i potenziali costi.

12. Risorse aggiuntive

Nelle sezioni seguenti puoi trovare materiale di lettura aggiuntivo ed esercizi consigliati per approfondire le conoscenze acquisite completando questo tutorial.

Ulteriori studi

Ora che hai un po' di esperienza con l'API Translation, facciamo altri esercizi per sviluppare ulteriormente le tue competenze. Per continuare il tuo percorso di apprendimento, modifica la nostra app di esempio per eseguire le seguenti operazioni:

  1. Completa tutte le altre versioni di questo codelab per l'esecuzione locale o il deployment sulle piattaforme di serverless computing di Google Cloud (vedi il file README del repository).
  2. Completa questo tutorial utilizzando un altro linguaggio di programmazione.
  3. Modifica questa applicazione per supportare lingue di origine o di destinazione diverse.
  4. Esegui l'upgrade di questa applicazione per poter tradurre il testo in più di una lingua; modifica il file del modello in modo che contenga un menu a discesa delle lingue di destinazione supportate.

Scopri di più

Google App Engine

Google Cloud Functions

Google Cloud Run

Google Cloud Buildpacks, Container Registry, Artifact Registry

Google Cloud Translation e Google ML Kit

Altre pagine/altri prodotti Google Cloud

Licenza

Questo tutorial è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic, mentre il codice sorgente nel repository è concesso in licenza ai sensi di Apache 2.