Creare trigger dagli eventi Pub/Sub

Puoi richiamare servizi e funzioni Cloud Run configurando un trigger Pub/Sub.

Quando configuri il trigger, lo colleghi a un argomento Pub/Sub specifico. In questo modo, il servizio o la funzione vengono chiamati automaticamente ogni volta che un messaggio viene pubblicato in quell'argomento.

Puoi configurare questo trigger in due modi:

  • Trigger Pub/Sub diretto (consigliato): instrada i messaggi direttamente al servizio o alla funzione utilizzando Pub/Sub. Sei tu a gestire direttamente la sottoscrizione e il tuo servizio o la tua funzione riceve la richiesta push Pub/Sub standard. Utilizza questa opzione se hai bisogno di una configurazione più semplice e di una latenza inferiore.
  • Trigger basato su Eventarc: instrada i messaggi Pub/Sub al tuo servizio o alla tua funzione utilizzando Eventarc. Puoi gestire i trigger Pub/Sub nello stesso modo in cui gestisci le altre origini Eventarc e il tuo servizio o la tua funzione riceve gli eventi come CloudEvents. Utilizza questa opzione se hai bisogno delle funzionalità di filtro o routing avanzate di Eventarc.

Prima di iniziare

  1. Assicurati di aver configurato un nuovo progetto per Cloud Run come descritto nella pagina di configurazione.

  2. Abilita le API Artifact Registry, Cloud Build, API Cloud Run Admin, Cloud Logging e API Pub/Sub:

    Abilita le API

    Se stai configurando un trigger basato su Eventarc, devi abilitare anche l'API Eventarc:

    Abilita l'API Eventarc

Ruoli obbligatori

Concedi i ruoli e le autorizzazioni IAM richiesti. Se stai configurando un trigger basato su Eventarc, consulta i ruoli e le autorizzazioni IAM richiesti per Eventarc.

Ruoli obbligatori per l'account deployer

Per ottenere le autorizzazioni necessarie per l'attivazione da eventi Pub/Sub, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Tieni presente che, per impostazione predefinita, le autorizzazioni di Cloud Build includono le autorizzazioni per caricare e scaricare gli artefatti di Artifact Registry.

Crea un trigger Pub/Sub

Console

  1. Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio o sulla funzione per cui vuoi creare un trigger Pub/Sub.

  3. Seleziona la scheda Trigger.

    Seleziona la scheda relativa alla configurazione dell'attivatore selezionata:

    1. Fai clic su Aggiungi trigger e seleziona Trigger Pub/Sub > Diretto.
    2. Nel riquadro Sottoscrizione Pub/Sub diretta:
      • Nel campo Argomento Cloud Pub/Sub, seleziona l'argomento se ne hai già creato uno o fai clic su Crea nuovo argomento per crearne uno nuovo.
      • Nel campo Service account, seleziona il account di servizio utilizzato dalla sottoscrizione per richiamare il servizio. Se la console elenca i ruoli mancanti, fai clic su Concedi tutto.
      • In Percorso URL del servizio, inserisci il percorso dell'URL sul tuo servizio che deve ricevere i messaggi, ad esempio / (predefinito) o /pubsub. La console aggiunge questo percorso all'URL del servizio.
    3. Fai clic su Salva.

    Eventarc

    Nel riquadro Trigger Eventarc, modifica i dettagli del trigger come segue:

    1. Inserisci un nome per il trigger nel campo Nome trigger o utilizza il nome predefinito.

    2. Seleziona un Tipo di trigger dall'elenco:

      • Origini Google per specificare i trigger per Pub/Sub, Cloud Storage, Firestore e altri provider di eventi Google.

      • Di terze parti per l'integrazione con provider non Google che offrono un'origine Eventarc. Per saperne di più, consulta Eventi di terze parti in Eventarc.

    3. Seleziona Pub/Sub dall'elenco Provider di eventi per selezionare un prodotto che fornisce il tipo di evento per l'attivazione della funzione. Per l'elenco dei provider di eventi, consulta Provider e destinazioni di eventi.

    4. Seleziona google.cloud.pubsub.topic.v1.messagePublished dall'elenco Tipo di evento. La configurazione del trigger varia a seconda del tipo di evento supportato. Per saperne di più, consulta Tipi di eventi.

    5. Dall'elenco Seleziona un argomento Cloud Pub/Sub, scegli un argomento che il trigger deve monitorare. I messaggi pubblicati in questo argomento attivano chiamate alla tua funzione.

    6. Se il campo Regione è abilitato, seleziona una località per il trigger Eventarc. In generale, la località di un trigger Eventarc deve corrispondere alla località della risorsaGoogle Cloud che vuoi monitorare per gli eventi. Nella maggior parte degli scenari, devi eseguire il deployment della funzione nella stessa regione. Per ulteriori dettagli sulle località dei trigger Eventarc, consulta Informazioni sulle località Eventarc.

    7. Nel campo Service account, seleziona un account di servizio. I trigger Eventarc sono collegati ai service account da utilizzare come identità quando richiami la funzione. Il account di servizio del trigger Eventarc deve disporre dell'autorizzazione per richiamare la funzione. Per impostazione predefinita, Cloud Run utilizza il service account predefinito di Compute Engine.

    8. Facoltativamente, specifica il percorso dell'URL del servizio a cui inviare la richiesta in entrata. Questo è il percorso relativo nel servizio di destinazione a cui devono essere inviati gli eventi per il trigger. Ad esempio: /, /route, route e route/subroute.

    9. Facoltativamente, per abilitare i nuovi tentativi se il tentativo di invio non va a buon fine, seleziona la casella di controllo Abilita nuovo tentativo in caso di errore; in caso contrario, il comportamento predefinito è un singolo tentativo di invio senza nuovi tentativi. Per saperne di più, consulta Riprova eventi.

    10. Dopo aver compilato i campi obbligatori, fai clic su Salva attivatore.

gcloud

Per creare un trigger per il tuo servizio o la tua funzione utilizzando gcloud CLI:

  1. Se non l'hai ancora fatto, esegui il deployment del servizio o della funzione.

  2. Se hai già un argomento Pub/Sub, salta questo passaggio. In caso contrario, crea un argomento Pub/Sub:

    gcloud pubsub topics create TOPIC_NAME
  3. Seleziona la scheda relativa alla configurazione dell'attivatore selezionata:

    Diretto

    1. Configura i ruoli richiesti per l'agente di servizio Pub/Sub:

      Ruoli richiesti per l'agente di servizio Pub/Sub

      I passaggi seguenti descrivono come creare e utilizzare un account di servizio che può essere utilizzato dalla sottoscrizione Pub/Sub per richiamare il tuo servizio o la tua funzione. Questi passaggi sono obbligatori quando utilizzi Google Cloud CLI per creare un comando trigger Pub/Sub. Se utilizzi la console Google Cloud per creare il trigger, puoi saltare questi passaggi.

      1. Crea o seleziona un account di servizio per rappresentare l'identità della sottoscrizione Pub/Sub.

             gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
                --display-name "Cloud Run Pub/Sub Invoker"

        Sostituisci SERVICE_ACCOUNT_NAME con un nome univoco per il tuo account di servizio.

      2. Concedi al account di servizio invoker l'autorizzazione per richiamare il tuo servizio:

          gcloud run services add-iam-policy-binding SERVICE_NAME \
             --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \
             --role=roles/run.invoker

        La propagazione delle modifiche IAM può richiedere diversi minuti. Nel frattempo, potresti visualizzare errori HTTP 403 nei log del servizio.

      3. Consenti a Pub/Sub di creare token di autenticazione nel tuo progetto:

          gcloud projects add-iam-policy-binding PROJECT_ID \
             --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub. \
             --role=roles/iam.serviceAccountTokenCreator

        Sostituisci quanto segue:

        • PROJECT_ID: il tuo ID progetto Google Cloud .
        • PROJECT_NUMBER: il tuo numero di progetto Google Cloud .

        L'ID e il numero di progetto sono elencati nel riquadro Informazioni sul progetto nella consoleGoogle Cloud per il tuo progetto.

    2. Crea una sottoscrizione Pub/Sub con il account di servizio:

      gcloud pubsub subscriptions create SUBSCRIPTION_NAME \
        --topic TOPIC_NAME \
        --ack-deadline=600 \
        --push-endpoint=SERVICE_URL/ \
        --push-auth-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.

      Sostituisci quanto segue:

      • SUBSCRIPTION_NAME: il nome della sottoscrizione che vuoi creare.
      • TOPIC_NAME: il nome dell'argomento che hai creato in precedenza.
      • SERVICE_URL: l'URL HTTPS fornito durante il deployment del servizio. Questo URL funziona anche se hai aggiunto una mappatura del dominio.
      • SERVICE_ACCOUNT_NAME: il nome del account di servizio che hai creato in precedenza.
      • PROJECT_ID: il tuo ID progetto Google Cloud .

      Note:

      • Il flag --push-auth-service-account attiva la funzionalità di push Pub/Sub per autenticazione e autorizzazione.

      • Il dominio del servizio Cloud Run viene registrato automaticamente per l'utilizzo con le sottoscrizioni Pub/Sub.

      • Solo per Cloud Run, esiste un controllo di autenticazione integrato per verificare che il token sia valido e un controllo di autorizzazione per verificare che il account di servizio disponga dell'autorizzazione per richiamare il servizio Cloud Run.

    Eventarc

    Esegui questo comando per creare un trigger che filtra ed esegue il routing degli eventi:

    gcloud eventarc triggers create TRIGGER_NAME  \
       --location=LOCATION \
       --destination-run-service=DESTINATION_RUN_SERVICE  \
       --destination-run-region=DESTINATION_RUN_REGION \
       --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
       --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \
       --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.

    Sostituisci quanto segue:

    • TRIGGER_NAME: l'ID del trigger o un identificatore completo.
    • LOCATION: la località del trigger Eventarc. In alternativa, puoi impostare la proprietà eventarc/location, ad esempio gcloud config set eventarc/location us-central1.

      Per evitare problemi di prestazioni e residenza dei dati, la località deve corrispondere a quella del servizio Google Cloud che genera gli eventi. Per saperne di più, consulta Località Eventarc.

    • DESTINATION_RUN_SERVICE: il nome del servizio o della funzione Cloud Run di cui è stato eseguito il deployment che riceve gli eventi per il trigger.
    • DESTINATION_RUN_REGION: (facoltativo) la Cloud Run location in cui si trova la funzione Cloud Run di destinazione. Se non specificata, si presume che la funzione si trovi nella stessa regione del trigger.
    • Il flag --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" è obbligatorio e non può essere modificato. Per un tipo di evento diverso, devi creare un nuovo trigger.
    • TOPIC_NAME: l'ID dell'argomento Pub/Sub esistente. L'argomento deve trovarsi nello stesso progetto del trigger.
    • SERVICE_ACCOUNT_NAME: il nome del tuo account di servizio gestito dall'utente.
    • PROJECT_ID: il tuo ID progetto Google Cloud .

    Note:

    • Facoltativamente, per specificare un singolo tentativo di distribuzione degli eventi senza nuovi tentativi, utilizza il flag --max-retry-attempts. L'unico valore valido è 1. Se ometti il flag, viene applicato il comportamento di ripetizione standard. Per saperne di più, consulta Eventi di ripetizione.
    • Sono disponibili altri flag. Per saperne di più, vedi gcloud eventarc triggers create.

Terraform

Per creare un trigger Eventarc per una funzione Cloud Run, consulta Crea un trigger utilizzando Terraform.

Passaggi successivi