Attivare le funzioni Cloud Run utilizzando Cloud Tasks

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 ogni componente.
  • 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

  1. Seleziona o crea un Google Cloud progetto.

    Vai alla pagina App Engine

  2. Inizializza un'applicazione App Engine nel tuo progetto:

    1. Nella pagina Benvenuto in App Engine , fai clic su Crea applicazione.

    2. Seleziona una regione per l'applicazione. Questa località fungerà da parametro LOCATION_ID per 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.

    3. Seleziona Node.js per la lingua e Standard per l'ambiente.

    4. Se viene visualizzato il popup Abilita 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.

    5. Nella pagina Inizia, fai clic su Avanti. Te ne occuperai in un secondo momento.

  3. Abilita le API Cloud Run Functions e Cloud Tasks.

    Abilita le API

  4. Installa e inizializza gcloud CLI.

Nozioni di base sul codice

Questa sezione ti guida attraverso il codice dell'app e ne spiega il funzionamento.

Creazione dell'attività

La pagina dell'indice viene pubblicata utilizzando i gestori in app.yaml. Le variabili necessarie per la creazione delle attività vengono passate come variabili di ambiente.

runtime: nodejs16

env_variables:
  QUEUE_NAME: "my-queue"
  QUEUE_LOCATION: "us-central1"
  FUNCTION_URL: "https://<region>-<project_id>.cloudfunctions.net/sendEmail"
  SERVICE_ACCOUNT_EMAIL: "<member>@<project_id>.iam.gserviceaccount.com"

# Handlers for serving the index page.
handlers:
  - url: /static
    static_dir: static
  - url: /
    static_files: index.html
    upload: index.html

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 delle attività.

app.post('/send-email', (req, res) => {
  // Set the task payload to the form submission.
  const {to_name, from_name, to_email, date} = req.body;
  const payload = {to_name, from_name, to_email};

  createHttpTaskWithToken(
    process.env.GOOGLE_CLOUD_PROJECT,
    QUEUE_NAME