Pubblicare eventi da un'origine Google

Puoi attivare la raccolta e la pubblicazione di eventi da origini Google. Per maggiori informazioni, consulta Pubblica eventi da fonti Google.

Questa guida rapida mostra come pubblicare e ricevere messaggi di eventi creando un bus Eventarc Advanced e una registrazione nel tuo progetto Google Cloud.

  • Un bus funge da router centrale, ricevendo messaggi dalle origini eventi o pubblicati dai provider.

  • Una registrazione indirizza i messaggi ricevuti dal bus a una o più destinazioni tramite una pipeline di elaborazione.

In questa guida rapida:

  1. Eseguire il deployment di un servizio di ricezione di eventi in Cloud Run.

  2. Crea un bus Eventarc Advanced.

  3. Attiva gli eventi dalle origini Google.

  4. Crea una registrazione Eventarc Advanced.

  5. Pubblica un messaggio di evento nel bus creando un flusso di lavoro.

  6. Visualizza i dati sugli eventi nei log di Cloud Run.

Puoi completare questa guida rapida utilizzando gcloud CLI.

Prima di iniziare

I vincoli di sicurezza definiti dalla tua organizzazione potrebbero impedirti di completare i passaggi seguenti. Per informazioni sulla risoluzione dei problemi, vedi Sviluppare applicazioni in un ambiente Google Cloud vincolato.

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. Installa Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Creare un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  6. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  7. Abilita le API Artifact Registry, Cloud Build, Cloud Run, Eventarc e Workflows:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com
  8. Installa Google Cloud CLI.

  9. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  10. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  11. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Creare un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  12. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  13. Abilita le API Artifact Registry, Cloud Build, Cloud Run, Eventarc e Workflows:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com
  14. Aggiorna i componenti di gcloud:
    gcloud components update
  15. Accedi utilizzando il tuo account:
    gcloud auth login
  16. Imposta la variabile di configurazione utilizzata in questa guida rapida:
    REGION=REGION

    Sostituisci REGION con una località supportata per il bus, ad esempio us-central1.

  17. Se hai creato il progetto, ti viene assegnato il ruolo di base Proprietario (roles/owner). Per impostazione predefinita, questo ruolo Identity and Access Management (IAM) include le autorizzazioni necessarie per l'accesso completo alla maggior parte delle risorse Google Cloud e puoi saltare questo passaggio.

    Se non sei il creatore del progetto, le autorizzazioni richieste devono essere concesse al principal appropriato. Ad esempio, un'entità può essere un Account Google (per gli utenti finali) o un account di servizio (per applicazioni e carichi di lavoro di calcolo).

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

    Autorizzazioni obbligatorie

    Per ottenere le autorizzazioni necessarie per completare questa guida rapida, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo 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.

  18. A scopo di test, crea un account di servizio e concedigli i ruoli necessari per completare questa guida rapida.
    1. Crea un service account:
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      Sostituisci SERVICE_ACCOUNT_NAME con un nome per il tuo account di servizio.
    2. Concedi i ruoli necessari per creare ed eseguire il deployment di un'immagine container e per rappresentare l'identità di una pipeline Eventarc Advanced:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/artifactregistry.writer
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/logging.logWriter
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/storage.admin
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/run.invoker

    Tieni presente che puoi configurare chi può accedere al tuo servizio Cloud Run in uno dei seguenti modi:

    • Concedi l'autorizzazione per selezionare service account o gruppi per consentire l'accesso al servizio. Tutte le richieste devono avere un'intestazione di autorizzazione HTTP contenente un token OpenID Connect firmato da Google per uno degli account di servizio autorizzati. Questo è il modo in cui viene configurato l'accesso in questa guida rapida.
    • Concedi l'autorizzazione a allUsers per consentire l'accesso non autenticato.

    Per saperne di più, consulta Controllo dell'accesso per Cloud Run.

Esegui il deployment di un servizio di ricezione di eventi in Cloud Run

Esegui il deployment di un servizio Cloud Run come destinazione di eventi che registra i contenuti di un evento. Sono supportate altre destinazioni di eventi, come un argomento Pub/Sub, Workflows o un endpoint HTTP. Per saperne di più, vedi Fornitori e destinazioni di eventi.

  1. Crea un repository standard di Artifact Registry per archiviare l'immagine container.

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=docker \
        --location=$REGION

    Sostituisci REPOSITORY con un nome univoco per il repository Artifact Registry, ad esempio my-repo.

  2. Clona il repository GitHub:

    git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
  3. Passa alla directory che contiene il codice campione di Cloud Run:

    cd eventarc-samples/eventarc-advanced-quickstart/
  4. Crea un'immagine container Docker ed eseguine il push nel repository:

    gcloud builds submit \
        --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \
        --service-account=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --default-buckets-behavior=regional-user-owned-bucket
  5. Esegui il deployment dell'immagine container in Cloud Run:

    gcloud run deploy SERVICE_NAME \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \
        --platform managed \
        --ingress all \
        --no-allow-unauthenticated \
        --region=$REGION

    Sostituisci SERVICE_NAME con il nome del tuo servizio, ad esempio my-service.

    Tieni presente quanto segue:

    • Il flag --platform imposta la piattaforma di destinazione, in questo caso una versione completamente gestita di Cloud Run.

    • L'impostazione di ingresso di all consente tutte le richieste, incluse quelle direttamente da internet all'URL run.app. Per maggiori informazioni, consulta la pagina Limitare l'accesso alla rete per Cloud Run.

    • Il flag --no-allow-unauthenticated configura il servizio in modo che consenta solo chiamate autenticate.

    • Quando vedi l'URL del servizio Cloud Run, il deployment è completo.

  6. Copia e salva l'URL del servizio Cloud Run, che utilizzerai in un passaggio successivo.

Crea un bus Eventarc Advanced

Un bus riceve messaggi di eventi da un'origine di messaggi o pubblicati da un provider e funge da router di messaggi.

Per saperne di più, consulta Creare un bus per instradare i messaggi.

Crea un bus Eventarc Advanced nel tuo progetto utilizzando il comando gcloud eventarc message-buses create:

gcloud eventarc message-buses create BUS_NAME \
    --location=$REGION

Sostituisci BUS_NAME con l'ID del bus o un nome completo, ad esempio my-bus.

Attivare gli eventi dalle origini Google

Per pubblicare eventi provenienti da origini Google, devi creare una risorsa GoogleApiSource. Questa risorsa rappresenta un abbonamento agli eventi API Google per un particolare bus Eventarc Advanced in un progetto e una regione specifici. Google Cloud

Abilita gli eventi dalle origini Google utilizzando il comando gcloud eventarc google-api-sources create:

gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
    --destination-message-bus=BUS_NAME \
    --destination-message-bus-project=PROJECT_ID \
    --location=$REGION

Sostituisci GOOGLE_API_SOURCE_NAME con l'ID della risorsa GoogleApiSource o con un nome completo, ad esempio my-google-api-source.

Tutti i tipi di eventi Google supportati inviati direttamente da un'origine Google vengono ora raccolti e pubblicati nel bus.

Crea una registrazione Eventarc Advanced

Una registrazione determina quali messaggi vengono instradati a una destinazione e specifica anche la pipeline utilizzata per configurare una destinazione per i messaggi di evento.

Per saperne di più, vedi Creare una registrazione per ricevere eventi.

Quando utilizzi gcloud CLI, prima crei una pipeline e poi crei una registrazione:

  1. Crea una pipeline utilizzando il comando gcloud eventarc pipelines create:

    gcloud eventarc pipelines create PIPELINE_NAME \
        --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --location=$REGION

    Sostituisci quanto segue:

    • PIPELINE_NAME: l'ID della pipeline o un nome completo, ad esempio my-pipeline.
    • CLOUD_RUN_SERVICE_URL: l'URL completo del tuo servizio Cloud Run, ad esempio https://SERVICE_NAME-abcdef-uc.a.run.app. Questa è la destinazione dei messaggi dell'evento.

    Tieni presente che la chiave google_oidc_authentication_service_account specifica un'email di account di servizio utilizzata per generare un token OIDC.

  2. Crea una registrazione utilizzando il comando gcloud eventarc enrollments create:

    gcloud eventarc enrollments create ENROLLMENT_NAME \
        --cel-match=MATCH_EXPRESSION \
        --destination-pipeline=PIPELINE_NAME \
        --message-bus=BUS_NAME \
        --message-bus-project=PROJECT_ID \
        --location=$REGION

    Sostituisci quanto segue:

    • ENROLLMENT_NAME: l'ID della registrazione o un nome completo, ad esempio my-enrollment.
    • MATCH_EXPRESSION: l'espressione di corrispondenza per questa registrazione utilizzando CEL. Ad esempio, per pubblicare messaggi di eventi ogni volta che viene creato un workflow Workflows, utilizza la seguente espressione:

      "message.type == 'google.cloud.workflows.workflow.v1.created'"
      

Pubblica un messaggio di evento nel bus creando un flusso di lavoro

Workflows è una piattaforma di orchestrazione completamente gestita che esegue i servizi in un ordine definito da te: un workflow. Crea un workflow per generare un tipo di evento supportato da un'origine Google.

  1. Nella tua directory home, crea un nuovo file denominato myWorkflow.yaml.

  2. Copia e incolla il seguente flusso di lavoro nel nuovo file, poi salvalo:

    - getCurrentTime:
        call: http.get
        args:
          url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam
        result: currentTime
    - readWikipedia:
        call: http.get
        args:
          url: https://en.wikipedia.org/w/api.php
          query:
            action: opensearch
            search: ${currentTime.body.dayOfWeek}
        result: wikiResult
    - returnResult:
        return: ${wikiResult.body[1]}
    

    Questo flusso di lavoro trasmette il giorno corrente della settimana come termine di ricerca all'API Wikipedia. Viene restituito un elenco di articoli correlati di Wikipedia.

  3. Esegui il deployment del flusso di lavoro e associalo al account di servizio specificato utilizzando il comando gcloud workflows deploy:

    gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --location=$REGION

Visualizzare i dati sugli eventi nei log di Cloud Run

Dopo aver pubblicato un evento nel bus Eventarc Advanced, puoi controllare i log del servizio Cloud Run per verificare che l'evento sia stato ricevuto come previsto.

  1. Filtra le voci di log e restituisci l'output utilizzando il comando gcloud logging read:

    gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
    
  2. Cerca una voce di log simile alla seguente:

    insertId: 689644c30004cde066603b3a
    labels:
      instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab
    logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr
    receiveTimestamp: '2025-08-08T18:41:07.632226222Z'
    resource:
      labels:
      ...
      type: cloud_run_revision
    textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created'
    timestamp: '2025-08-08T18:41:07.314848Z'
    

Hai creato correttamente un bus e una registrazione Eventarc Advanced, hai attivato la pubblicazione di eventi da origini Google, hai creato un flusso di lavoro per generare un tipo di evento supportato da un provider Google e hai verificato il risultato previsto nei log del servizio destinatario di eventi.

Esegui la pulizia

Al termine delle attività descritte in questa guida rapida, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato:

  1. Elimina un repository Artifact Registry.

  2. Elimina un servizio Cloud Run.

  3. Elimina un workflow Workflows.

  4. Elimina le risorse Eventarc Advanced:

    1. Eliminare una registrazione.

    2. Elimina una pipeline.

    3. Eliminare un bus.

In alternativa, puoi eliminare il tuo progetto Google Cloud per evitare addebiti. L'eliminazione del progetto Google Cloud interrompe la fatturazione per tutte le risorse utilizzate al suo interno.

Elimina un progetto Google Cloud :

gcloud projects delete PROJECT_ID

Passaggi successivi