É possível publicar um evento do CloudEvents diretamente em um barramento Eventarc Advanced em um formato compatível usando a CLI do Google Cloud ou enviando uma solicitação para a API REST de publicação do Eventarc. Você também pode usar as bibliotecas de cliente do Eventarc para acessar as APIs do Eventarc em uma linguagem compatível.
Antes de começar
Antes de começar, verifique se você concluiu as etapas a seguir:
- 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Eventarc and Eventarc Publishing APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com -
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Eventarc and Eventarc Publishing APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com Abra um terminal.
É possível publicar eventos em um barramento usando o comando
gcloud eventarc message-buses publish. Exemplo:Ou:gcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
Ou: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
Substitua:
BUS_NAME: o ID ou identificador totalmente qualificado do barramento em que o evento será publicado.
Use apenas uma das seguintes opções:
AVRO_MESSAGE: a mensagem de evento em um formato Avro de acordo com esta especificação.JSON_MESSAGE: a mensagem de evento em formato JSON de acordo com esta especificação.DATA_PAYLOAD: os dados de um evento publicado.
Se você usar a flag
--event-data, também precisará usar o seguinte:EVENT_ID: o identificador do evento. Os produtores de eventos precisam garantir quesource+idseja exclusivo para cada evento distinto.EVENT_SOURCE: a origem do evento de um evento publicado.EVENT_TYPE: o tipo de evento relacionado à ocorrência de origem.
Se você estiver usando a flag
--event-data, poderá usar as seguintes opções:EVENT_ATTRIBUTE: os atributos de um evento publicado. Você pode repetir a flag--event-attributespara adicionar mais atributos.Os eventos podem incluir qualquer número de atributos personalizados adicionais do CloudEvents com nomes distintos, também conhecidos como atributos de extensão.
- O nome completo do recurso do ônibus no formato
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAMESubstitua:
PROJECT_ID: o ID do projeto Google Cloud para o projeto de ônibus.LOCATION: a região em que o barramento é implantado, por exemplo,us-central1.BUS_NAME: o nome do barramento em que o evento será publicado.
SPEC_VERSION: a versão da especificação CloudEvents que o evento usa. Por exemplo,1.0.EVENT_TYPE: o tipo de evento relacionado à ocorrência de origem.EVENT_SOURCE: a origem do evento de um evento publicado.EVENT_ID: o identificador do evento. Os produtores precisam garantir quesource+idseja exclusivo para cada evento distinto.CONTENT_TYPE(opcional): o tipo de conteúdo do valordata. Se um evento no formato JSON não tiver um atributodatacontenttype, será considerado que os dados são um valor JSON em conformidade com o tipo de mídiaapplication/json.DATA_PAYLOAD(opcional): o payload do evento codificado no formato de mídia especificado pordatacontenttypee seguindodataschemaquando esses atributos estão presentes.
Publicar diretamente
A mensagem de evento que você publica diretamente precisa estar em conformidade com a especificação do CloudEvents.
gcloud
Exemplos:
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
Para publicar um evento em um barramento, use o método
projects.locations.messageBuses.publish.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
Corpo JSON da solicitação:
{
"jsonMessage":
"{\"specversion\":\"SPEC_VERSION\",
\"type\":\"EVENT_TYPE\",
\"source\":\"EVENT_SOURCE\",
\"id\":\"EVENT_ID\",
\"datacontenttype\":\"CONTENT_TYPE\",
\"data\":\"DATA_PAYLOAD\"}"
}
Para enviar a solicitação, expanda uma destas opções:
Se a solicitação for bem-sucedida, o servidor vai retornar um código de status HTTP 200 OK e o corpo da resposta vazio no formato JSON:
200 OK
{}