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
- Comprendi il codice in ciascuno dei componenti.
- Crea un account SendGrid.
- Scarica il codice sorgente.
- Esegui il deployment di una funzione Cloud Run per ricevere richieste di Cloud Tasks e inviare un'email tramite l'API SendGrid.
- Crea una coda di Cloud Tasks.
- Crea 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, le funzioni Cloud Run e App Engine offrono un livello gratuito, quindi, se esegui il tutorial all'interno del livello gratuito dei prodotti specificati, non dovrebbero comportare costi aggiuntivi. Per ulteriori informazioni, vedi Prezzi.
Prima di iniziare
Seleziona o crea un progetto Google Cloud.
Inizializza un'applicazione App Engine nel tuo progetto:
Nella pagina Welcome to App Engine (Ti diamo il benvenuto in App Engine), fai clic su Create Application (Crea applicazione).
Seleziona una regione per la tua applicazione. Questa località fungerà da parametro
LOCATION_ID
per le richieste di Cloud Tasks, quindi prendine nota. Tieni presente che due località, denominate europe-west e us-central nei comandi App Engine, vengono chiamate, rispettivamente, europe-west1 e us-central1 nei comandi Cloud Tasks.Seleziona Node.js per il linguaggio e Standard per l'ambiente.
Se viene visualizzato il popup Abilita fatturazione, seleziona il tuo account di fatturazione. Se al momento non disponi di un account di fatturazione, fai clic su Crea account di fatturazione e segui la procedura guidata.
Nella pagina Inizia, fai clic su Avanti. Ce ne occuperai in seguito.
Abilita le API Cloud Run e Cloud Tasks.
Installa e inizializza gcloud CLI.
Nozioni di base sul codice
Questa sezione illustra il codice dell'app e spiega come funziona.
Creazione dell'attività
La pagina di indice viene pubblicata utilizzando gli handler 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 dell'indice e passa i dati al codice di creazione dell'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 method
da utilizzare e ilURL
del target.Impostazione dell'intestazione
Content-Type
suapplication/json
in modo che le applicazioni downstream possano analizzare il payload strutturato.Aggiungi un indirizzo email dell'account di servizio in modo che Cloud Tasks possa fornire le credenziali alla destinazione della richiesta, operazione che richiede l'autenticazione. L'account di servizio viene creato separatamente.
Verificare che la data inserita dall'utente rientri nel periodo massimo di 30 giorni e aggiungerla alla richiesta come campo
scheduleTime
.
Creazione dell'email in corso...
Questo codice crea la funzione Cloud Run che è la destinazione della richiesta 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.
- In alternativa, puoi utilizzare Google Cloud Launcher, che creerà un account per te e integra la fatturazione. Consulta la sezione Creazione di un account SendGrid mediante Cloud Launcher.
Crea una chiave API SendGrid:
Accedi al tuo account SendGrid.
Nel menu di navigazione a sinistra, apri Settings (Impostazioni) e fai clic su API Keys (Chiavi API).
Fai clic su Crea chiave API e seleziona l'accesso limitato. Sotto l'intestazione Invia posta, seleziona Accesso completo.
Copia la chiave API quando viene visualizzata (la vedrai una sola volta, assicurati di incollarla da qualche parte per 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.git
Passa alla directory che contiene il codice di esempio:
cd cloud-tasks/
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_KEY
con la tua chiave API.Questo comando utilizza flag:
--trigger-http
per specificare il tipo di trigger delle funzioni Cloud Run.--no-allow-unauthenticated
per specificare la chiamata alla funzione richiede l'autenticazione.--set-env-var
per impostare le tue credenziali SendGrid
Imposta il controllo dell'accesso per la funzione in modo da consentire solo agli utenti autenticati di accedere.
Seleziona la funzione
sendEmail
nell'interfaccia utente delle funzioni Cloud Run.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à in alto.
Imposta Nuove entità su
allAuthenticatedUsers
.Imposta il ruolo.
- Funzioni di prima generazione (1ª gen.): 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ª gen.): imposta il ruolo su
Fai clic su SALVA.
Creazione di una coda di Cloud Tasks
Crea una coda utilizzando il seguente comando
gcloud
:gcloud tasks queues create my-queue --location=LOCATION
Sostituisci
LOCATION
con il tuo preferito location per la coda, ad esempious-west2
. Se sì non specifica la posizione, gcloud CLI sceglie il valore predefinito.Verifica che sia stato creato correttamente:
gcloud tasks queues describe my-queue --location=LOCATION
Sostituisci
LOCATION
con la posizione della coda.
Creazione di un account di servizio
La richiesta Cloud Tasks deve fornire le credenziali nell'intestazione Authorization
per consentire alla funzione Cloud Run di autenticare la richiesta. Questo account di servizio consente a Cloud Tasks di creare e aggiungere un token OIDC a questo scopo.
Nell'interfaccia utente degli account di servizio, fai clic su +CREA ACCOUNT DI SERVIZIO.
Aggiungi un nome account di servizio (nome visualizzato facile da ricordare) e seleziona Crea.
Imposta il Ruolo e fai clic su Continua.
- Funzioni di prima generazione (1ª gen.): 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ª gen.): imposta il ruolo su
Seleziona Fine.
Deployment dell'endpoint e dell'autore dell'attività in App Engine
Vai alla directory
app/
:cd ../app/
Aggiorna le variabili in
app.yaml
con i tuoi valori:Per trovare la posizione della coda, utilizza il seguente comando:
gcloud tasks queues describe my-queue --location=LOCATION
Sostituisci
LOCATION
con la posizione della coda.Per trovare l'URL della funzione, utilizza il seguente comando:
gcloud functions describe sendEmail
Esegui il deployment dell'applicazione nell'ambiente standard App Engine utilizzando il seguente comando:
gcloud app deploy
Apri l'applicazione per inviare una cartolina come email:
gcloud app browse
Esegui la pulizia
Al termine del tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che smettono di usare la quota e comportano addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Eliminazione delle risorse
Puoi eliminare le risorse che hai creato su Google Cloud in modo che non occupino 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 Funzioni di Cloud Run nella console Google Cloud.
Fai clic sulle caselle di controllo accanto alle funzioni.
Fai clic sul pulsante Elimina nella parte superiore della pagina e conferma l'eliminazione.
Elimina la coda di Cloud Tasks
Apri la pagina 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 creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Passaggi successivi
- Scopri di più sulla creazione di attività di destinazione HTTP.
- Scopri di più sulla configurazione della coda di Cloud Tasks.