Pubblicare e ricevere eventi creando un bus e una registrazione (console)
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:
Crea un repository Artifact Registry standard.
Eseguire il deployment di un servizio di ricezione di eventi in Cloud Run.
Crea un bus Eventarc Advanced.
Crea una registrazione Eventarc Advanced.
Pubblica un messaggio di evento nel bus.
Visualizza i dati sugli eventi nei log di Cloud Run.
Puoi completare la maggior parte dei passaggi di questa guida rapida utilizzando la Google Cloud console. Per completare tutti i passaggi utilizzando Google Cloud CLI, consulta Pubblica e ricevi eventi creando un bus e una registrazione (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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
- Alcuni passaggi di questa guida rapida richiedono l'utilizzo di
gcloud CLI:
- Configura gcloud CLI in uno dei seguenti
ambienti di sviluppo:
Cloud Shell
Per utilizzare un terminale online con gcloud CLI già configurato, attiva Cloud Shell:
Nella parte inferiore di questa pagina viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. L'inizializzazione della sessione può richiedere alcuni secondi.
Shell locale
Per utilizzare un ambiente di sviluppo locale:
- Seleziona il tuo progetto Google Cloud :
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_ID
con il nome del tuo progetto Google Cloud . - 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=us-central1
- Configura gcloud CLI in uno dei seguenti
ambienti di sviluppo:
-
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
)
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 ruoli sul progetto all'account di servizio predefinito di Compute Engine. Questi ruoli sono necessari per creare e implementare l'immagine container.
- Nella console Google Cloud , vai alla pagina IAM.
Per modificare i ruoli del account di servizio se ha già ruoli nella risorsa, trova una riga contenente l'entità.
o
Per concedere ruoli al account di servizio quando non ne ha nessuno nella risorsa, fai clic su
Concedi accesso, quindi inserisci l'identificatore del service account predefinito di Compute Engine con il seguente formato:PROJECT_NUMBER-compute@developer.gserviceaccount.com
Sostituisci
PROJECT_NUMBER
con il numero del tuo progetto Google Cloud. Puoi trovare il numero di progetto nella pagina Benvenuto della console Google Cloud .- Fai clic su Modifica entità nella riga corrispondente.
- Fai clic su Aggiungi ruolo o Aggiungi un altro ruolo.
- Nell'elenco Seleziona un ruolo, filtra e seleziona i seguenti ruoli:
- Artifact Registry Writer: per caricare gli artefatti di Artifact Registry
- Scrittore log: per scrivere log in Cloud Logging
- Oggetto di archiviazione Utente: per accedere agli oggetti Cloud Storage
- Fai clic su Salva.
- Nella console Google Cloud , vai alla pagina IAM.
- 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
a un account di servizio nel tuo progetto Google Cloud . A scopo di test, collegherai questo account di servizio a una pipeline Eventarc Advanced per rappresentare l'identità della pipeline.
- Nella Google Cloud console, vai alla pagina Service account.
- Fai clic su Crea service account.
- Inserisci un Nome service account.
- Fai clic su Crea e continua.
- Nell'elenco Seleziona un ruolo, filtra e seleziona il ruolo Cloud Run Invoker.
- Fai clic su Fine.
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 ulteriori informazioni, consulta Controllo dell'accesso per Cloud Run.
- Nella Google Cloud console, vai alla pagina Service account.
Nella console Google Cloud , vai alla pagina Repository.
Fai clic su
Crea repository.Inserisci un Nome, ad esempio
my-repo
.Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.
Per il Formato del repository, seleziona Docker.
Nell'elenco Regione, seleziona us-central1 (Iowa).
Accetta tutti gli altri valori predefiniti.
Fai clic su Crea.
Nel terminale, 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
Sostituisci
REPOSITORY
con il nome del tuo repository Artifact Registry.Esegui il deployment dell'immagine container su Cloud Run:
Nella console Google Cloud , vai alla pagina Cloud Run.
Fai clic su > Servizio.
Esegui il deployment del containerSeleziona Esegui il deployment di una revisione da un'immagine container esistente.
Per l'URL immagine container, fai clic su Seleziona per specificare l'immagine container di Artifact Registry creata in precedenza.
Se vuoi, puoi modificare il Nome servizio, ad esempio in
my-service
.Nell'elenco Regione, seleziona us-central1 (Iowa).
Per Autenticazione, seleziona Richiedi autenticazione.
In questo modo il servizio viene configurato per consentire solo chiamate autenticate.
Per In entrata, seleziona Tutto.
In questo modo, tutte le richieste, incluse quelle provenienti direttamente da internet, vengono inviate all'URL
run.app
. Per maggiori informazioni, consulta la pagina Limitare l'accesso alla rete per Cloud Run.Accetta tutti gli altri valori predefiniti.
Fai clic su Crea e attendi il completamento del deployment.
Nella console Google Cloud , vai alla pagina Eventarc > Bus.
Fai clic su
Crea bus.Nella pagina Crea un bus:
- Inserisci un Nome bus, ad esempio
my-bus
. - Nell'elenco Regione, seleziona us-central1 (Iowa).
- Inserisci un Nome bus, ad esempio
Accetta tutti gli altri valori predefiniti.
Fai clic su Crea.
Per creare una registrazione, nella console Google Cloud , vai alla pagina Eventarc > Pipeline.
Fai clic su
Crea pipeline.Nel riquadro Dettagli pipeline, segui questi passaggi:
- Inserisci un Nome pipeline, ad esempio
my-pipeline
. - Nell'elenco Regione, seleziona us-central1 (Iowa). La pipeline deve essere creata nella stessa regione del bus.
- Accetta tutti gli altri valori predefiniti.
- Fai clic su Continua.
- Inserisci un Nome pipeline, ad esempio
Nel riquadro Registrazioni, segui questi passaggi:
- Fai clic su Aggiungi una registrazione.
- Inserisci un nome registrazione, ad esempio
my-enrollment
. - Nell'elenco Bus Eventarc Advanced, seleziona il bus creato in precedenza.
Nel campo Espressione CEL, scrivi un'espressione di valutazione utilizzando CEL. Ad esempio:
message.type == "hello-world-type"
Fai clic su Fine.
Fai clic su Continua.
Nel riquadro Mediazione degli eventi, fai di nuovo clic su Continua.
Nel riquadro Destinazione:
Nell'elenco Tipo di destinazione, seleziona Servizio Cloud Run (tramite HTTP) e poi seleziona il servizio Cloud Run che hai creato in precedenza.
Seleziona la casella di controllo Abilita autenticazione.
Nell'elenco Intestazione di autenticazione, seleziona Token OIDC.
Nell'elenco Service account, seleziona il account di servizio che hai creato in precedenza e che richiamerà il servizio di destinazione. Questo indirizzo email dell'account di servizio viene utilizzato per generare il token OIDC.
Fai clic su Crea.
Nella console Google Cloud , vai alla pagina Cloud Run.
Nella pagina Servizi, fai clic sul nome del servizio.
Fai clic sulla scheda Log.
Puoi filtrare le voci di log e restituire l'output. Ad esempio, puoi cercare
hello-world-data
.Cerca una voce di log simile alla seguente:
2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'
Elimina le risorse Eventarc Advanced:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Crea un repository standard Artifact Registry
Crea un repository standard di Artifact Registry per archiviare l'immagine container.
Esegui il deployment di un servizio di ricezione di eventi in Cloud Run
Esegui il deployment di un servizio Cloud Run che registra i contenuti di un evento. Sono supportate altre destinazioni di eventi, ad esempio un argomento Pub/Sub, Workflows o un endpoint HTTP. Per ulteriori informazioni, 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 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 la console Google Cloud , puoi creare contemporaneamente una registrazione e una pipeline.
Pubblica un messaggio di evento nel bus
Per pubblicare direttamente un messaggio nel bus, puoi utilizzare il comando
gcloud eventarc message-buses publish
o inviare una richiesta all'API REST di pubblicazione di Eventarc. Per ulteriori
informazioni, vedi
Pubblicare eventi direttamente.
Il messaggio deve essere in formato CloudEvents, una specifica per
descrivere i dati degli eventi in modo comune. L'elemento data
è il payload del tuo
evento. In questo campo può essere inserito qualsiasi JSON ben formato. Per saperne di più sugli attributi di contesto di CloudEvents, consulta Formato dell'evento.
Pubblica un evento nel bus Eventarc Advanced utilizzando gcloud CLI e un --event-data
e altri flag di attributi dell'evento:
gcloud eventarc message-buses publish BUS_NAME \
--event-data='{"key": "hello-world-data"}' \
--event-id=hello-world-id-1234 \
--event-source=hello-world-source \
--event-type=hello-world-type \
--event-attributes="datacontenttype=application/json" \
--location=$REGION
In alternativa, pubblica un evento nel bus Eventarc Advanced come messaggio JSON utilizzando gcloud CLI e un flag --json-message
:
gcloud eventarc message-buses publish BUS_NAME \
--location=$REGION \
--json-message='{"id": "hello-world-id-1234", "type":
"hello-world-type", "source":
"hello-world-source", "specversion": "1.0", "data":
{"key": "hello-world-data"}}'
Dopo aver pubblicato un evento, dovresti ricevere un messaggio "Evento pubblicato correttamente".
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 e una registrazione Eventarc Advanced, pubblicato un messaggio di evento nel bus e verificato il risultato previsto nei log del servizio di ricezione 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 progetto Google Cloud interrompe la fatturazione di tutte le risorse utilizzate al suo interno.