Questo tutorial mostra come utilizzare Cloud Tasks all'interno di un'applicazione App Engine per attivare una funzione Cloud Run e inviare un'email pianificata.
Nozioni di base sul codice
Questa sezione illustra il codice dell'app e spiega come funziona.
Creazione dell'attività
La pagina 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 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
.Specificando 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.Aggiunta di un indirizzo email del service account in modo che Cloud Tasks possa fornire le credenziali alla destinazione della richiesta, che richiede l'autenticazione. Il account di servizio viene creato separatamente.
Verifica che l'input utente dell'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 è la destinazione della richiesta Cloud Tasks. Utilizza il corpo della richiesta per creare un'email e inviarla tramite l'API SendGrid.
Preparazione della richiesta
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 integrerà la fatturazione. Consulta Creare un account SendGrid utilizzando Cloud Launcher.
Crea una chiave API SendGrid:
Accedi al tuo account SendGrid.
Nel menu di navigazione a sinistra, apri Impostazioni e fai clic su Chiavi API.
Fai clic su Crea chiave API e seleziona l'accesso limitato. Nella sezione Invio posta, seleziona Accesso completo.
Copia la chiave API quando viene visualizzata (la vedrai una sola volta, quindi 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 i seguenti flag:
--trigger-http
per specificare il tipo di trigger di Cloud Run Functions.--no-allow-unauthenticated
per specificare la chiamata di funzione richiede l'autenticazione.--set-env-var
per impostare le credenziali SendGrid
Imposta controllo dell'accesso per la funzione in modo da consentire solo agli utenti autenticati.
Seleziona la funzione
sendEmail
nell'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.
Creazione di una coda di attività Cloud Tasks
Crea una coda utilizzando il seguente comando
gcloud
:gcloud tasks queues create my-queue --location=LOCATION
Sostituisci
LOCATION
con la tua posizione preferita per la coda, ad esempious-west2
. Se non specifichi la località, gcloud CLI sceglie quella predefinita.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
affinché la funzione Cloud Run autentichi 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 SERVICE ACCOUNT.
Aggiungi un nome 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.
Deployment dell'endpoint e del creatore di 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 di App Engine utilizzando il seguente comando:
gcloud app deploy
Apri l'applicazione per inviare una cartolina come email:
gcloud app browse