Pubblicare gli eventi direttamente

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:

  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 carichi di lavoro.
  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 ruoli.
    • Crea 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 attivata per il tuo progetto Google Cloud .

  7. 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
  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 ruoli.
    • Crea 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 attivata per il tuo progetto Google Cloud .

  13. 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

  1. Apri un terminale.

  2. Puoi pubblicare eventi in un bus utilizzando il comando gcloud eventarc message-buses publish. Ad esempio:

    gcloud eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    Oppure:
    gcloud eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    Oppure:
    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 che source + id sia 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-attributes per 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_NAME

    Sostituisci 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 esempio us-central1.
    • BUS_NAME: il nome del bus a cui pubblicare l'evento.
  • SPEC_VERSION: la versione della specifica CloudEvents utilizzata dall'evento, ad esempio 1.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 che source + id sia univoco per ogni evento distinto.
  • CONTENT_TYPE (facoltativo): il tipo di contenuti del valore data. Se un evento in formato JSON non ha l'attributo datacontenttype, si presume che i dati siano un valore JSON conforme al tipo di media application/json.
  • DATA_PAYLOAD (facoltativo): il payload dell'evento codificato nel formato multimediale specificato da datacontenttype e conforme a dataschema quando 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

{}

Passaggi successivi