1. Panoramica
Questa serie di codelab (tutorial pratici e autogestiti) mira ad aiutare gli sviluppatori a comprendere le varie opzioni a disposizione per il deployment delle loro applicazioni. Imparerai a utilizzare l'API Google Cloud Translation in una semplice applicazione web. L'app può essere eseguita localmente o sottoposta a deployment su una piattaforma di computing serverless Cloud (App Engine, Cloud Functions o Cloud Run).
Svolgerai questo tutorial JavaScript con Node.js utilizzando il framework web Express.js. Imparerai inoltre ad accedere alle API Google Cloud dalle nostre piattaforme serverless. Tutte le versioni di questa app provengono dal "nebulous serverless" un repository open source, 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 di Google non cloud dalle nostre piattaforme serverless.
Questo codelab è incentrato sul deployment di questa app nelle piattaforme in grassetto riportate sopra.
Imparerai a
- Usa le API Google Cloud, in particolare l'API Cloud Translation (avanzata/v3)
- Esegui un'applicazione web di base in locale o eseguine il deployment su una piattaforma di computing serverless Cloud
Che cosa ti serve
- Un progetto Google Cloud con un account di fatturazione Cloud attivo.
- Un framework web installato per l'esecuzione in locale ( Flask per chi esegue il tutorial Python o Espresso per chi esegue il tutorial JavaScript/Node.js)
- Almeno una piattaforma di computing serverless abilitata per i deployment di 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?
Come valuteresti la tua esperienza di sviluppo in Python o Node.js?
Come giudichi la tua esperienza di utilizzo dei servizi Google Cloud?
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- 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.
- Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google e può essere aggiornata 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). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che solitamente è identificato come
PROJECT_ID
), quindi, se non ti piace, generane un altro a caso oppure puoi fare un tentativo personalizzato e controllare se è disponibile. Poi c'è "congelato" dopo la creazione del progetto. - C'è un terzo valore, il numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le risorse/le API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, segui eventuali "pulizie" istruzioni riportate alla fine del codelab. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
3. Abilita API Translation
In questa sezione scoprirai 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 (oltre a Cloud Artifact Registry), a seconda delle piattaforme su cui vuoi eseguire il deployment dell'app di esempio.
Abilitazione delle API di Google
Introduzione
Indipendentemente dall'API di Google che vuoi utilizzare nell'applicazione, queste devono essere abilitate. Le API possono essere abilitate dalla riga di comando o dalla console Cloud. Il processo di abilitazione delle API è identico, quindi una volta abilitata un'API, puoi eseguirne 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 eseguire tutte le operazioni 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.
Grazie a queste informazioni, utilizzando Cloud Shell (o il tuo ambiente di sviluppo locale in cui è installato 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: abilita Google App Engine
gcloud services enable appengine.googleapis.com
Esempio 3: abilita più API con una singola richiesta. Ad esempio, se questo codelab prevede visualizzatori che eseguono il deployment di un'app in App Engine, Cloud Functions e Cloud Run utilizzando l'API Cloud Translation, la riga di comando sarà:
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 eseguire il deployment in Cloud Run.
Opzione 2: console Cloud
Puoi anche abilitare le API di Google nel gestore API. Dalla console Cloud, vai a Gestore API e seleziona Libreria.
Inizia a inserire il nome di un'API nella barra di ricerca per visualizzare i risultati corrispondenti:
Seleziona l'API che vuoi abilitare e fai clic sul pulsante Abilita:
Il processo di abilitazione di tutte le API è simile, indipendentemente dall'API di Google che intendi 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, ti potrebbe essere richiesto di creare un account di fatturazione attivo. Tuttavia, alcuni prodotti Google Cloud dispongono di un'opzione " Always Free" , che dovrai superare per sostenere i costi di fatturazione.
I nuovi utenti Google Cloud sono idonei alla prova senza costi, che al momento costa 300 $per i primi 90 giorni. In genere, i codelab non prevedono una gran o nessuna fatturazione, quindi ti consigliamo di aspettare il momento della prova senza costi, specialmente se si tratta di un'offerta una tantum. Le quote del Livello senza costi non scadono e si applicano indipendentemente dal fatto che utilizzi o meno la prova senza costi.
Gli utenti devono fare riferimento alle informazioni sui prezzi di qualsiasi API prima di abilitarla (ad esempio, la pagina Prezzi dell'API Cloud Vision ), soprattutto indicando se è disponibile un livello senza costi e, in tal caso, di cosa si tratta. Se rimani entro i limiti giornalieri o mensili specificati in forma aggregata, non ti verrà addebitato alcun costo. I prezzi e i livelli senza costi variano a seconda delle API dei gruppi di prodotti Google. Esempi:
- Google Cloud/Google Cloud: ogni prodotto viene fatturato in modo diverso e in genere viene addebitato in base al consumo. consulta le informazioni sui livelli senza costi riportate sopra.
- Google Maps: include una suite di API e offre agli utenti un totale di 200$di credito mensile senza costi.
- API di Google Workspace (in precedenza G Suite): offrono un utilizzo (fino a determinati limiti) coperto dalla tariffa di abbonamento mensile a Workspace, quindi non è prevista alcuna fatturazione diretta per l'utilizzo delle API per applicazioni come Gmail, Google Drive, Calendar, Documenti, Fogli o Presentazioni.
I vari prodotti Google vengono fatturati in modo diverso, quindi assicurati di consultare la documentazione appropriata per queste informazioni.
Assicurarsi che i servizi desiderati siano abilitati
Assicurati che l'API Cloud Translation nel gestore API sia indicata sopra. Se non hai abilitato le piattaforme serverless dalla riga di comando, puoi farlo da ciascuna delle rispettive dashboard nella console Cloud: App Engine, Cloud Functions, Cloud Run.
Sebbene sia visivamente informativo per abilitare le API dalla console Cloud, è più veloce utilizzare lo strumento gcloud
, che richiede pochi secondi per abilitare 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 riguarda le API di Google. Vediamo maggiori dettagli per questo tutorial. Sebbene la sua quota mensile non figura nell'elenco complessivo di " Always Free" della pagina di riepilogo dei livelli, la pagina dei prezzi dell'API Translation indica che tutti gli utenti ricevono un numero fisso di caratteri tradotti al mese. Se rimani al di sotto di questa soglia, non dovresti ricevere alcun addebito dall'API. Per ulteriori informazioni sui costi relativi all'utilizzo delle piattaforme serverless di Google Cloud, consulta la sezione relativa ai costi del repository. L'opzione "Pulizia" alla fine illustra come interrompere la fatturazione dopo il completamento di questo codelab.
4. recupera il codice dell'app di esempio
Scarica ZIP o clona un 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 eseguire questo tutorial in Cloud Shell, puoi clonare il repository con lo stesso comando
git clone
qui. - Puoi anche accedere al file ZIP dal pulsante Codice verde, come mostrato nello screenshot seguente:
Ora che hai tutto, crea una copia completa della cartella per seguire questo specifico tutorial, 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 scaricarlo di nuovo.
5. Conferma l'ambiente Node.js
Per configurare l'ambiente Node.js, segui questi passaggi:
- Assicurati di aver installato le versioni contemporanee di Node (>=10) e NPM (>=6)
- Vai alla posizione in cui hai clonato il repository (o hai decompresso il file ZIP), quindi vai alla cartella
cloud/nodejs
- Conferma che
package.json
sia presente, quindi eseguinpm install
Per il passaggio 1 riportato sopra, puoi verificare quali versioni sono presenti sulla riga di comando:
$ node -v v17.0.1 $ npm -v 8.1.0
6. Tour dell'app di esempio
L'app di esempio è una semplice derivata di Google Traduttore che chiede agli utenti di inserire il testo in inglese e di ricevere la traduzione equivalente di quel testo in spagnolo.
Il file di configurazione package.json
indica quali pacchetti di terze parti sono richiesti per l'applicazione (tieni presente che le versioni del pacchetto potrebbero essere aggiornate oltre a quanto elencato 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. Se ometti le righe commenti sulla licenza, l'aspetto avrà il seguente aspetto in alto e in basso:
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
};
- Le
require
integrano le funzionalità di framework e modelli e la libreria client dell'API Cloud Translation. - Le variabili globali rappresentano l'app web, l'ID progetto Cloud, il client API Translation, il "percorso posizione" padre per le chiamate API Translation e le lingue
SOURCE
eTARGET
. In questo caso, la lingua è inglese (en
) e spagnolo (es
), ma puoi modificare questi valori in altri codici lingua supportati dall'API Cloud Translation. - Il primo elemento di ogni coppia (
SOURCE
eTARGET
) è il codice della lingua, mentre il secondo è il nome della lingua (e utilizzato solo a scopo di visualizzazione in quanto non è pertinente per l'API). - Le poche righe nella parte inferiore consentono di inviare tutte le richieste HTTP a
translate()
, quindi esportare l'oggetto dell'applicazioneapp
.
Infine, al centro di index.js
c'è 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 acquisire l'input dell'utente e chiamare l'API Translation per svolgere il lavoro pesante. Analizziamola nel dettaglio:
- Reimposta le variabili di base per il modulo. Ciò è principalmente per le richieste GET, poiché le richieste POST avranno dati che le sostituiranno.
- Se si tratta di un POST, recupera 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.
- Non abbiamo passato
SOURCE[0]
all'API a una fonte inglese specifica. Se disattivi la lingua di origine, chiedi all'API di rilevare automaticamente la lingua di origine (vedisourceLanguageCode
nella documentazione). - Indipendentemente da ciò, formatta i risultati effettivi (POST) o nessun dato (GET) nel contesto del modello ed eseguine il rendering.
La parte visiva dell'applicazione si trova nel file index.html
modello. Mostra tutti i risultati tradotti in precedenza (altrimenti vuoti) seguiti dal modulo in cui viene chiesto qualcosa da tradurre:
<!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>
Nel resto del tutorial, puoi scegliere una o tutte le quattro opzioni per il deployment e l'esecuzione di questa app. Tutti i deployment sono facoltativi, il che significa che puoi eseguirne uno o tutti.
- Esegui il servizio in locale
- Eseguire il deployment in App Engine (ambiente standard)
- Esegui il deployment in Cloud Functions
- Esegui il deployment in Cloud Run
7. OPZIONE 1: esegui il servizio in locale
Questa sezione del codelab può essere eseguita solo in locale. Se esegui il deployment solo nel cloud, passa alla sezione successiva.
Per eseguire l'app di esempio in locale, devi seguire tre passaggi distinti:
- Crea un account di servizio
- Crea una coppia di chiavi pubbliche/private per un account di servizio
- Scarica il file delle credenziali e il bundle con il codice dell'applicazione
- Avvia il servizio
Scopri di più sugli account di servizio
Gli account di servizio sono il meccanismo di sicurezza per accedere alle API di Google per le applicazioni basate su cloud quando si accede a dati che non appartengono a utenti umani. Durante il deployment nel cloud, per ridurre i tempi di onboarding degli utenti nel cloud, tutte le piattaforme di computing Google Cloud (serverless e non) forniscono account di servizio predefiniti.
Gli account di servizio predefiniti dispongono di una vasta gamma di autorizzazioni per ma quando si preparano a lanciare un servizio di produzione, consigliamo vivamente agli utenti di seguire la best practice del "meno privilegi", ma creando account di servizio gestiti dall'utente con autorizzazioni solo sufficienti affinché l'app funzioni correttamente. Indipendentemente da ciò, non esistono account di servizio predefiniti per i deployment locali, quindi devi creare un account di servizio più una chiave dell'account di servizio (in realtà una coppia di chiavi pubblica/privata) e rendere queste credenziali disponibili per il codice dell'applicazione.
Creare una coppia di chiavi dell'account di servizio e scaricare il file delle credenziali
Segui le istruzioni in questa pagina per creare un account di servizio e una coppia di chiavi pubblica/privata per l'esecuzione locale. Quando crei la chiave dell'account di servizio, ti verrà chiesto di fornire le autorizzazioni desiderate. Assicurati di selezionare roles/cloudtranslate.user
per poter accedere all'API.
Una volta creata la coppia di chiavi, ti verrà chiesto di scaricare il file della chiave dell'account di servizio. Denominalo 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 quel file. Ulteriori informazioni su questo processo sono disponibili anche in questa pagina per informazioni sull'utilizzo degli account di servizio.
Avviare il servizio
Quando è tutto pronto per proseguire, avvia il server Express localmente con il seguente comando:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
Vai al tuo browser web e connettiti all'indirizzo localhost:8080. Dovresti vedere un risultato simile al seguente:
Traduci qualcosa per vederlo funzionare.
Quando sei soddisfatto, chiudi il server con ^C (control-C) ed esci. Congratulazioni per aver eseguito un deployment locale. Ma c'è una buona notizia: il deployment nel cloud è molto più semplice.
Risoluzione dei problemi
Ricevi un errore come 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 la creazione di un account di servizio e il download del file della coppia di chiavi pubblica/privata credentials.json
non sono stati completati. Torna a " OPZIONE 1: esegui il servizio in locale" e completa questo processo 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 riguarda solo il deployment in Node App Engine. Se non ti interessa, passa alla sezione successiva.
Questo deployment utilizza il file di configurazione app.yaml
, che indica ad App Engine quale runtime utilizzare con una singola 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
Dopo aver selezionato una regione, l'output gcloud app deploy
sarà molto meno dettagliato e dovrebbe avere il seguente aspetto:
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 in tutto il mondo, dovresti essere in grado di raggiungerla all'URL contenente il tuo ID progetto e dovresti vedere un output simile alla versione Express locale, ma con la certezza che è in esecuzione nel cloud e disponibile in tutto il mondo:
Se invii una richiesta, noterai che funziona come tutti gli altri deployment.
9. OPZIONE 3: esegui il deployment in Cloud Functions
Questa sezione del codelab riguarda solo il deployment in Node Cloud Functions. Se non ti interessa, passa alla sezione successiva.
Non esistono file di configurazione con Cloud Functions, quindi quando è tutto pronto per il deployment in 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 valore REGION
predefinito, ma puoi utilizzare il flag --region
per eseguire il deployment della funzione in una regione specifica. Cloud Functions non richiede richieste come gli altri prodotti Cloud. Indipendentemente dalla regione scelta, l'output gcloud functions deploy
dovrebbe avere il seguente aspetto:
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 in tutto il mondo, dovresti essere in grado di raggiungerla all'URL contenente il tuo ID progetto, come mostrato nell'output del deployment (sotto "httpsTrigger/url
"). L'URL dovrebbe essere simile a questo: https://
REGION
-
PROJECT_ID
.cloudfunctions.net/translate
, che varia in base alla regione selezionata e all'ID progetto Cloud.
10. OPZIONE 4: esegui il deployment in Cloud Run
Questa sezione del codelab è dedicata esclusivamente al deployment in Cloud Run. Se non ti interessa, passa alla sezione successiva.
Cloud Run non contiene file di configurazione, quindi quando è tutto pronto per il deployment in Cloud Run, segui le istruzioni riportate di seguito.
Ora è tutto pronto per il deployment del tuo servizio di traduzione in Cloud Run eseguendo questo comando:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
L'output dovrebbe avere il seguente aspetto e fornire alcuni prompt 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 Buildpacker le tue app in Cloud Run in modo molto simile a come faresti se eseguissi l'app in locale. Per gli utenti Node.js, vengono eseguiti npm install
e npm start
. Per Python, esegue pip install -r requirements.txt
e avvia l'app dalle istruzioni nel Procfile
. Lo stesso vale per tutte le altre lingue supportate da Cloud Buildpacks. La tua app sarà pronta al termine del processo di compilazione.
Quindi l'app è (distribuita a livello regionale, ma) disponibile a livello globale e può essere raggiunta all'URL contenente il tuo ID progetto, come mostrato nell'output del deployment (nella sezione "Service URL
:"
Traduci qualcosa per vederlo funzionare.
11. Conclusione
Complimenti! Hai imparato ad abilitare e utilizzare l'API Cloud Translation, ottenere le credenziali necessarie ed eseguire il deployment di una semplice app web su Express localmente su App Engine, Cloud Functions e/o Cloud Run. Controlla la cartella repository per scoprire di più o per accedere ad altre versioni dell'app e ad altri codelab.
Esegui la pulizia
L'API Cloud Translation consente di eseguire senza costi una quantità fissa di caratteri tradotti al mese. App Engine ha inoltre una quota senza costi, e lo stesso vale per Cloud Functions e Cloud Run. In caso di superamento di una delle due opzioni, ti vengono addebitati dei costi. Se prevedi di continuare con il codelab successivo, non dovrai chiudere la tua app.
Tuttavia, se non vuoi ancora andare al tutorial successivo o temi che internet rilevi l'app di cui hai appena eseguito il deployment, disattiva l'app di App Engine, elimina la funzione Cloud Functions o disabilita il servizio Cloud Run per evitare addebiti. Quando vuoi passare al codelab successivo, puoi riabilitarlo. Se invece non intendi continuare con questa applicazione o con altri codelab e vuoi eliminare completamente tutto, puoi chiudere il progetto.
Inoltre, il deployment su una piattaforma di serverless computing di Google Cloud comporta costi minori di creazione e archiviazione. Cloud Build e Cloud Storage hanno una quota senza costi specifica. Per una maggiore trasparenza, Cloud Build crea l'immagine della tua applicazione, che viene quindi archiviata in Cloud Container Registry o in Artifact Registry, il suo successore. L'archiviazione dell'immagine utilizza parte della quota, così come il traffico in uscita dalla rete durante il trasferimento dell'immagine al servizio. Tuttavia, potresti risiedere in una regione che non ha un livello senza costi, quindi tieni presente l'utilizzo dello spazio di archiviazione per ridurre al minimo i costi potenziali.
12. Risorse aggiuntive
Nelle sezioni che seguono troverai materiale di lettura aggiuntivo ed esercizi consigliati per migliorare le conoscenze acquisite con il completamento di questo tutorial.
Studio aggiuntivo
Ora che hai una certa esperienza con l'API Translation, eseguiamo alcuni esercizi aggiuntivi per sviluppare ulteriormente le tue competenze. Per continuare il tuo percorso di apprendimento, modifica la nostra app di esempio:
- Completa tutte le altre versioni di questo codelab per l'esecuzione locale o il deployment su piattaforme di serverless computing di Google Cloud (consulta README del repository).
- Completa questo tutorial utilizzando un altro linguaggio di programmazione.
- Cambia questa applicazione in modo che supporti lingue di origine o di destinazione diverse.
- Esegui l'upgrade di questa applicazione per poter tradurre il testo in più lingue. modifica il file del modello in modo da visualizzare un elenco a discesa delle lingue di destinazione supportate.
Scopri di più
Google App Engine
Google Cloud Functions
- Home page di Cloud Functions
- Documentazione di Cloud Functions
- Account di servizio predefiniti per Cloud Functions
Google Cloud Run
Buildpack di Google Cloud, Container Registry, Artifact Registry
- Annuncio di Cloud Buildpacks
- Repository Cloud Buildpacks
- Home page di Cloud Artifact Registry
- Documentazione di Cloud Artifact Registry
- Home page di Cloud Container Registry
- Documentazione di Cloud Container Registry
Google Cloud Translation e Google ML Kit
- Home page di Cloud Translation
- Documentazione di Cloud Translation
- Librerie client dell'API Cloud Translation (tutti i linguaggi di sviluppo)
- Lingue supportate (parlate/scritte) dall'API Cloud Translation
- Pagina dei prezzi dell'API Translation
- Tutti i "componenti di base" di IA/ML di Cloud API
- Google ML Kit (sottoinsieme di API Cloud AI/ML per dispositivi mobili)
- API Google ML Kit Translation
Altri prodotti/pagine Google Cloud
- Librerie client di Google Cloud
- "Sempre senza costi" di Google Cloud livello
- Tutta la documentazione di Google Cloud
Link Python
- Guida rapida di Python 3 App Engine
- Runtime Python 2 di App Engine (Standard)
- Runtime Python 3 di App Engine (Standard)
- Differenze tra Python 2 e 3 runtime App Engine (Standard)
- Guida alla migrazione di Python da 2 a 3 ad App Engine (Standard)
- Guida rapida di Cloud Functions Python
- Guida rapida di Python Cloud Run
- Supporto per Python in Google Cloud
- Fiocco
Collegamenti Node.js
- Guida rapida di App Engine per Node.js
- Runtime App Engine (Standard) Node.js
- Guida rapida di Cloud Functions Node.js
- Guida rapida di Cloud Run per Node.js
- Supporto di Node.js in Google Cloud
- Express
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 secondo Apache 2.