Pode publicar um evento CloudEvents diretamente num barramento Eventarc Advanced num formato suportado através da CLI Google Cloud ou enviando um pedido para a API REST Eventarc Publishing. Também pode usar as bibliotecas cliente do Eventarc para aceder às APIs Eventarc a partir de um idioma suportado.
Antes de começar
Antes de começar, certifique-se de que concluiu os seguintes passos:
- 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.
Pode publicar eventos num barramento através do comando
gcloud eventarc message-buses publish. Por 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 o seguinte:
BUS_NAME: o ID ou o identificador totalmente qualificado do barramento para o qual publicar o evento.
Tem de usar apenas um dos seguintes elementos:
AVRO_MESSAGE: a mensagem de evento num formato Avro de acordo com esta especificação.JSON_MESSAGE: a mensagem de evento num formato JSON de acordo com esta especificação.DATA_PAYLOAD: os dados de um evento publicado.
Se usar a flag
--event-data, também tem de usar o seguinte:EVENT_ID: o identificador do evento. Os produtores de eventos têm de garantir quesource+idé exclusivo para cada evento distinto.EVENT_SOURCE: a origem do evento de um evento publicado.EVENT_TYPE: o tipo de evento relacionado com a ocorrência de origem.
Se usar a sinalização
--event-data, pode usar opcionalmente o seguinte:EVENT_ATTRIBUTE: os atributos de um evento publicado. Pode repetir a flag--event-attributespara adicionar mais atributos.Tenha em atenção que os eventos podem incluir qualquer número de atributos CloudEvents personalizados adicionais com nomes distintos (também conhecidos como atributos de extensão).
- O nome completo do recurso do autocarro no formato
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAMESubstitua o seguinte:
PROJECT_ID: o Google Cloud ID do projeto do projeto de autocarro.LOCATION: a região em que o autocarro está implementado, por exemplo,us-central1.BUS_NAME: o nome do autocarro para o qual publicar o evento.
SPEC_VERSION: a versão da especificação CloudEvents que o evento usa, por exemplo,1.0.EVENT_TYPE: o tipo de evento relacionado com a ocorrência de origem.EVENT_SOURCE: a origem do evento de um evento publicado.EVENT_ID: o identificador do evento. Os produtores têm de garantir quesource+idé único para cada evento distinto.CONTENT_TYPE(opcional): o tipo de conteúdo do valordata. Se um evento de formato JSON não tiver um atributodatacontenttype, considera-se que os dados são um valor JSON em conformidade com o tipo de suporteapplication/json.DATA_PAYLOAD(opcional): a carga útil do evento codificada no formato de multimédia especificado pordatacontenttypee em conformidade comdataschemaquando esses atributos estão presentes.
Publicar diretamente
A mensagem de evento que publica diretamente tem de estar em conformidade com a especificação 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 num barramento, use o método
projects.locations.messageBuses.publish.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Corpo JSON do pedido:
{
"jsonMessage":
"{\"specversion\":\"SPEC_VERSION\",
\"type\":\"EVENT_TYPE\",
\"source\":\"EVENT_SOURCE\",
\"id\":\"EVENT_ID\",
\"datacontenttype\":\"CONTENT_TYPE\",
\"data\":\"DATA_PAYLOAD\"}"
}
Para enviar o seu pedido, expanda uma destas opções:
Se for bem-sucedido, o servidor devolve um código de estado HTTP 200 OK e o corpo da resposta vazio no formato JSON:
200 OK
{}