Questo tutorial mostra come utilizzare Cloud Tasks all'interno di un'applicazione App Engine per attivare una funzione Cloud Run e inviare un'email programmata.
Obiettivi
- Comprendere il codice di ciascuno dei componenti.
- Creare un account SendGrid.
- Scaricare il codice sorgente.
- Eseguire il deployment di una funzione Cloud Run per ricevere le richieste di Cloud Tasks e inviare un'email tramite l'API SendGrid.
- Creare una coda di attività Cloud Tasks.
- Creare un account di servizio per autenticare le richieste di Cloud Tasks.
- Eseguire il deployment del codice client che consente a un utente di inviare un'email.
Costi
Cloud Tasks, Cloud Run Functions e App Engine hanno un livello senza costi, quindi, se esegui il tutorial all'interno del livello senza costi dei prodotti indicati, non dovresti incorrere in costi aggiuntivi. Per ulteriori informazioni, vedi Prezzi.
Prima di iniziare
Seleziona o crea un Google Cloud progetto.
Inizializza un'applicazione App Engine nel tuo progetto:
Nella pagina Benvenuto in App Engine , fai clic su Crea applicazione.
Seleziona una regione per l'applicazione. Questa località fungerà da parametro
LOCATION_IDper le richieste di Cloud Tasks, quindi prendine nota. Tieni presente che due località, chiamate europe-west e us-central nei comandi di App Engine, sono chiamate rispettivamente europe-west1 e us-central1 nei comandi di Cloud Tasks.Seleziona Node.js per la lingua e Standard per l'ambiente.
Se viene visualizzato il popup Abilita la fatturazione, seleziona il tuo account di fatturazione. Se al momento non hai un account di fatturazione, fai clic su Crea account di fatturazione e segui la procedura guidata.
Nella pagina Inizia, fai clic su Avanti. Te ne occuperai in un secondo momento.
Abilita le API Cloud Run Functions e Cloud Tasks.
Installa e inizializza gcloud CLI.
Nozioni di base sul codice
Questa sezione illustra il codice dell'app e ne spiega il funzionamento.
Creazione dell'attività
La pagina di indice viene pubblicata utilizzando i gestori in app.yaml. Le variabili necessarie per la creazione delle attività vengono passate come variabili di ambiente.
Questo codice crea l'endpoint /send-email. Questo endpoint gestisce gli invii di moduli dalla pagina di indice e passa i dati al codice di creazione delle attività.
Questo codice crea effettivamente l'attività e la invia alla coda di Cloud Tasks. Il codice crea l'attività:
Specifica il tipo di target come
HTTP Request.Specifica il
HTTP methodda utilizzare e ilURLdel target.Imposta l'intestazione
Content-Typesuapplication/jsonin modo che le applicazioni downstream possano analizzare il payload strutturato.Aggiunge un'email dell'account di servizio in modo che Cloud Tasks possa fornire le credenziali al target della richiesta, che richiede l'autenticazione. Il account di servizio viene creato separatamente.
Verifica che l'input utente per la data rientri nel limite massimo di 30 giorni e lo aggiunge alla richiesta come campo
scheduleTime.
Creazione dell'email
Questo codice crea la funzione Cloud Run che è il target della richiesta di Cloud Tasks. Utilizza il corpo della richiesta per creare un'email e inviarla tramite l'API SendGrid.
Preparazione dell'applicazione
Configurazione di SendGrid
Crea un account SendGrid.
- Puoi farlo manualmente tramite il sito web di SendGrid
- oppure puoi utilizzare il Google Cloud Launcher, che creerà un account per te e integrerà la fatturazione. Consulta Creare un account SendGrid utilizzando Cloud Launcher.
Crea una chiave API SendGrid:
Accedi al tuo account SendGrid.
Nel riquadro di navigazione a sinistra, apri Impostazioni e fai clic su Chiavi API.
Fai clic su Crea chiave API e seleziona l'accesso limitato. Nell'intestazione Invio email, seleziona Accesso completo.
Copia la chiave API quando viene visualizzata (la vedrai solo una volta, assicurati di incollarla da qualche parte in modo da poterla utilizzare in un secondo momento).
Download del codice sorgente
Clona il repository dell'app di esempio sulla tua macchina locale:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitPassa alla directory che contiene il codice campione:
cd cloud-tasks/
Eseguire il deployment della funzione Cloud Run
Vai alla directory
function/:cd function/Esegui il deployment della funzione:
gcloud functions deploy sendEmail --runtime nodejs14 --trigger-http \ --no-allow-unauthenticated \ --set-env-vars SENDGRID_API_KEY=SENDGRID_API_KEY \
Sostituisci
SENDGRID_API_KEYcon la tua chiave API.Questo comando utilizza i seguenti flag:
--trigger-httpper specificare il tipo di trigger di Cloud Run Functions.--no-allow-unauthenticatedper specificare che la chiamata della funzione richiede l'autenticazione.--set-env-varper impostare le credenziali di SendGrid
Imposta il controllo dell'accesso per la funzione in modo da consentire solo agli utenti autenticati.
Seleziona la funzione
sendEmailnell'UI di Cloud Run Functions.Se non vedi le informazioni sulle autorizzazioni per
sendEmail, fai clic su MOSTRA RIQUADRO INFORMAZIONI nell'angolo in alto a destra.Fai clic sul pulsante Aggiungi entità sopra.
Imposta Nuove entità su
allAuthenticatedUsers.Imposta il Ruolo.
- Funzioni di prima generazione (1ª generazione.): imposta il ruolo su
Cloud Function Invoker - Funzioni di seconda generazione (2ª generazione.): imposta il ruolo su
Cloud Run Invoker
- Funzioni di prima generazione (1ª generazione.): imposta il ruolo su
Fai clic su SALVA.
Creare una coda di attività Cloud Tasks
Crea una coda utilizzando il seguente
gcloudcomando:gcloud tasks queues create my-queue --location=LOCATION
Sostituisci
LOCATIONcon la località che preferisci per la coda, ad esempious-west2. Se non specifichi la località, gcloud CLI sceglie quella predefinita.Verifica che la creazione sia andata a buon fine:
gcloud tasks queues describe my-queue --location=LOCATION
Sostituisci
LOCATIONcon la località della coda.
Creare un account di servizio
La richiesta di Cloud Tasks deve fornire le credenziali nell'intestazione Authorization affinché la funzione Cloud Run possa autenticare la richiesta. Questo account di servizio consente a Cloud Tasks di creare e aggiungere un token OIDC a questo scopo.
Nell'UI Account di servizio, fai clic su +CREA ACCOUNT DI SERVIZIO.
Aggiungi un nome dell'account di servizio(nome visualizzato descrittivo) e seleziona Crea.
Imposta il Ruolo e fai clic su Continua.
- Funzioni di prima generazione (1ª generazione.): imposta il ruolo su
Cloud Function Invoker - Funzioni di seconda generazione (2ª generazione.): imposta il ruolo su
Cloud Run Invoker
- Funzioni di prima generazione (1ª generazione.): imposta il ruolo su
Seleziona Fine.
Eseguire il deployment dell'endpoint e del creatore di attività in App Engine
Vai alla directory
app/:cd ../app/Aggiorna le variabili in
app.yamlcon i tuoi valori:Per trovare la località della coda, utilizza il seguente comando:
gcloud tasks queues describe my-queue --location=LOCATION
Sostituisci
LOCATIONcon la località della coda.Per trovare l'URL della funzione, utilizza il seguente comando:
gcloud functions describe sendEmail
Esegui il deployment dell'applicazione nell'ambiente standard di App Engine utilizzando il seguente comando:
gcloud app deploy
Apri l'applicazione per inviare una cartolina come email:
gcloud app browse
Libera spazio
Al termine del tutorial, puoi eliminare le risorse che hai creato in modo che non utilizzino più la quota generando addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Eliminazione delle risorse
Puoi liberare spazio dalle risorse che hai creato in Google Cloud in modo che non occupino la quota e non ti vengano addebitate in futuro. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Elimina la funzione Cloud Run
Vai alla pagina Cloud Run Functions nella Google Cloud console.
Fai clic sulle caselle di controllo accanto alle funzioni.
Fai clic sul pulsante Elimina in alto nella pagina e conferma l'eliminazione.
Elimina la coda di Cloud Tasks
Apri la pagina delle code di Cloud Tasks nella console.
Seleziona il nome della coda che vuoi eliminare e fai clic su Elimina coda.
Conferma l'azione.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto creato per il tutorial.
Per eliminare il progetto:
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Scopri di più sulla creazione di attività di destinazione HTTP.
- Scopri di più sulla configurazione della coda di Cloud Tasks.