Pubblicare eventi da un'origine Google
Puoi attivare la raccolta e la pubblicazione di eventi da origini Google. Per maggiori informazioni, vedi Pubblica eventi da origini 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 ti consente di centralizzare il flusso di messaggi nel sistema e funge da router. Riceve messaggi di eventi da un'origine messaggi o pubblicati da un provider e li valuta in base a una registrazione.
Una registrazione identifica un abbonamento a un particolare bus e definisce i criteri di corrispondenza per i messaggi, in modo che vengano instradati di conseguenza a una o più destinazioni.
In questa guida rapida:
Eseguire il deployment di un servizio di ricezione di eventi in Cloud Run.
Crea un bus Eventarc Advanced.
Attiva gli eventi dalle origini Google.
Crea una registrazione Eventarc Advanced.
Pubblica un messaggio di evento nel bus creando un flusso di lavoro.
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.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com -
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com - Aggiorna i componenti di
gcloud
:gcloud components update
- Accedi utilizzando il tuo account:
gcloud auth login
- Imposta la variabile di configurazione utilizzata in questa guida rapida:
REGION=REGION
Sostituisci
REGION
con una località supportata per il bus, ad esempious-central1
. -
Se hai creato il progetto, ti viene assegnato il ruolo di base Proprietario (
roles/owner
). Per impostazione predefinita, questo ruolo 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:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Cloud Run Admin (
roles/run.admin
) -
Sviluppatore Eventarc (
roles/eventarc.developer
) -
Eventarc Message Bus Admin (
roles/eventarc.messageBusAdmin
) -
Logs View Accessor (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Amministratore account di servizio (
roles/iam.serviceAccountAdmin
) -
Utente service account (
roles/iam.serviceAccountUser
) -
Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
-
Editor dei workflow (
roles/workflows.editor
)
Per ulteriori informazioni 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.
-
Editor Cloud Build (
- Concedi i seguenti ruoli sul progetto all'account di servizio predefinito di Compute Engine. Questi ruoli sono necessari per creare ed eseguire il deployment dell'immagine container:
- Scrittore Artifact Registry (
roles/artifactregistry.writer
): per caricare gli artefatti di Artifact Registry - Scrittore log
(
roles/logging.logWriter
): per scrivere log in Cloud Logging - Utente
oggetto Storage (
roles/storage.objectUser
): per accedere agli oggetti Cloud Storage
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/storage.objectUser
Sostituisci
PROJECT_NUMBER
con il numero del tuo progetto Google Cloud. Puoi trovare il numero di progetto nella pagina Benvenuto della console Google Cloud o eseguendo questo comando:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
- Scrittore Artifact Registry (
- Per impostazione predefinita, solo i proprietari del progetto, gli editor del progetto e gli amministratori e gli invoker di Cloud Run possono chiamare i servizi Cloud Run. Per
configurare l'autenticazione, concedi il
ruolo Invoker
di Cloud Run (
run.invoker
) nel tuo progetto Google Cloud a un account di servizio:- Crea un account di servizio. A scopo di test, collegherai questo service account a una pipeline Eventarc Advanced per rappresentare l'identità della pipeline.
Sostituiscigcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
con un nome per il tuo account di servizio. - Concedi il ruolo IAM
roles/run.invoker
all'account di servizioo: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.
- Crea un account di servizio. A scopo di test, collegherai questo service account a una pipeline Eventarc Advanced per rappresentare l'identità della pipeline.
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 esempiomy-repo
.Clona il repository GitHub:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Passa alla directory che contiene il codice campione di Cloud Run:
cd eventarc-samples/eventarc-advanced-quickstart/
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
Esegui il deployment dell'immagine container su 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 esempiomy-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'URLrun.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 viene visualizzato l'URL del servizio Cloud Run, il deployment è completato.
Copia e salva l'URL del servizio Cloud Run, che utilizzerai in un passaggio successivo.
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 esempiomy-pipeline
.CLOUD_RUN_SERVICE_URL
: l'URL completo del tuo servizio Cloud Run, ad esempiohttps://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 indirizzo email del account di servizio utilizzato per generare un token OIDC.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 esempiomy-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 flusso di lavoro Workflows, utilizza la seguente espressione:"message.type == 'google.cloud.workflows.workflow.v1.created'"
Nella tua directory home, crea un nuovo file denominato
myWorkflow.yaml
.Copia e incolla il seguente flusso di lavoro nel nuovo file, quindi 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.
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
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"'
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'
Elimina le risorse Eventarc Advanced:
Esegui il deployment di un servizio di ricezione di eventi in Cloud Run
Esegui il deployment di un servizio Cloud Run come destinazione evento 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.
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 di Google per un
particolare bus Eventarc Advanced in un progetto e
in 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:
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 flusso di lavoro per generare un tipo di evento supportato da un'origine Google.
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.
Hai creato correttamente un bus Eventarc Advanced e la registrazione, 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 poi 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:
In alternativa, puoi eliminare il tuo progetto Google Cloud per evitare addebiti. L'eliminazione del tuo progetto Google Cloud interrompe la fatturazione per tutte le risorse utilizzate al suo interno.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID