Puoi pubblicare un evento CloudEvents direttamente in un bus Eventarc Advanced in un formato supportato utilizzando Google Cloud CLI o inviando una richiesta all'API REST di pubblicazione di Eventarc. Puoi anche utilizzare le librerie client Eventarc per accedere alle API Eventarc da un linguaggio supportato.
Prima di iniziare
Prima di iniziare, assicurati di aver completato i seguenti passaggi:
- 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 carichi di lavoro.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
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'autorizzazioneresourcemanager.projects.create. Scopri come concedere ruoli.
-
Crea un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon 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_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Eventarc e Eventarc Publishing, se non sono già abilitate:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com -
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
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'autorizzazioneresourcemanager.projects.create. Scopri come concedere ruoli.
-
Crea un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon 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_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Eventarc e Eventarc Publishing, se non sono già abilitate:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com
Pubblica direttamente
Il messaggio evento che pubblichi direttamente deve essere conforme alla specifica CloudEvents.
gcloud
Apri un terminale.
Puoi pubblicare eventi in un bus utilizzando il comando
gcloud eventarc message-buses publish. Ad esempio:Oppure:gcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
Oppure:gcloud eventarc message-buses publish BUS_NAME \ --json-message=JSON_MESSAGE
gcloud eventarc message-buses publish BUS_NAME \ --event-data=DATA_PAYLOAD \ --event-id=EVENT_ID \ --event-source=EVENT_SOURCE \ --event-type=EVENT_TYPE \ --event-attributes=EVENT_ATTRIBUTE
Sostituisci quanto segue:
BUS_NAME: l'ID o l'identificatore completo del bus a cui pubblicare l'evento.
Devi utilizzare solo uno dei seguenti documenti:
AVRO_MESSAGE: il messaggio dell'evento in formato Avro secondo questa specifica.JSON_MESSAGE: il messaggio dell'evento in formato JSON secondo questa specifica.DATA_PAYLOAD: i dati di un evento pubblicato.
Se utilizzi il flag
--event-data, devi utilizzare anche quanto segue:EVENT_ID: l'identificatore evento. I produttori di eventi devono assicurarsi chesource+idsia univoco per ogni evento distinto.EVENT_SOURCE: l'origine evento di un evento pubblicato.EVENT_TYPE: il tipo di evento correlato all'occorrenza di origine.
Se utilizzi il flag
--event-data, puoi utilizzare facoltativamente quanto segue:EVENT_ATTRIBUTE: gli attributi di un evento pubblicato. Puoi ripetere il flag--event-attributesper aggiungere altri attributi.Tieni presente che gli eventi possono includere un numero qualsiasi di attributi CloudEvents personalizzati aggiuntivi con nomi distinti (noti anche come attributi di estensione).
Esempi:
gcloud eventarc message-buses publish my-bus \ --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"
gcloud eventarc message-buses publish my-bus --json-message='{ "specversion" : "1.0", "type" :"com.example.someevent", "source" : "google.cloud.storage.object.v1.finalized", "id" : "A234-1234-1234", "time" : "2024-04-05T17:31:00Z", "bucket" : "bucketName", "datacontenttype" : "application/json", "data":{"key": "value"} }'
API REST
Per pubblicare un evento in un bus, utilizza il metodo
projects.locations.messageBuses.publish.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- Il nome completo della risorsa del bus nel formato
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAMESostituisci quanto segue:
PROJECT_ID: l'ID progetto Google Cloud per il progetto bus.LOCATION: la regione in cui viene eseguito il deployment del bus, ad esempious-central1.BUS_NAME: il nome del bus a cui pubblicare l'evento.
SPEC_VERSION: la versione della specifica CloudEvents utilizzata dall'evento, ad esempio1.0.EVENT_TYPE: il tipo di evento correlato all'occorrenza di origine.EVENT_SOURCE: l'origine evento di un evento pubblicato.EVENT_ID: l'identificatore evento. I produttori devono assicurarsi chesource+idsia univoco per ogni evento distinto.CONTENT_TYPE(facoltativo): il tipo di contenuti del valoredata. Se un evento in formato JSON non ha l'attributodatacontenttype, si presume che i dati siano un valore JSON conforme al tipo di mediaapplication/json.DATA_PAYLOAD(facoltativo): il payload dell'evento codificato nel formato multimediale specificato dadatacontenttypee conforme adataschemaquando questi attributi sono presenti.
Corpo JSON della richiesta:
{
"jsonMessage":
"{\"specversion\":\"SPEC_VERSION\",
\"type\":\"EVENT_TYPE\",
\"source\":\"EVENT_SOURCE\",
\"id\":\"EVENT_ID\",
\"datacontenttype\":\"CONTENT_TYPE\",
\"data\":\"DATA_PAYLOAD\"}"
}
Per inviare la richiesta, espandi una di queste opzioni:
In caso di esito positivo, il server restituisce un codice di stato HTTP 200 OK e il corpo della risposta vuoto
in formato JSON:
200 OK
{}