Publique eventos diretamente

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:

  1. 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.
  2. Install the Google Cloud CLI.

  3. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with 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_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
  8. Install the Google Cloud CLI.

  9. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with 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_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
  14. Publicar diretamente

    A mensagem de evento que publica diretamente tem de estar em conformidade com a especificação CloudEvents.

    gcloud

    1. Abra um terminal.

    2. Pode publicar eventos num barramento através do comando gcloud eventarc message-buses publish. Por exemplo:

      gcloud eventarc message-buses publish BUS_NAME \
          --avro-message=AVRO_MESSAGE
      Ou:
      gcloud eventarc message-buses publish BUS_NAME \
          --json-message=JSON_MESSAGE
      Ou:
      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 que source + 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-attributes para 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).

    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:

    • O nome completo do recurso do autocarro no formato projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME

      Substitua 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 que source + id é único para cada evento distinto.
    • CONTENT_TYPE (opcional): o tipo de conteúdo do valor data. Se um evento de formato JSON não tiver um atributo datacontenttype, considera-se que os dados são um valor JSON em conformidade com o tipo de suporte application/json.
    • DATA_PAYLOAD (opcional): a carga útil do evento codificada no formato de multimédia especificado por datacontenttype e em conformidade com dataschema quando esses atributos estão presentes.

    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
    
    {}
    

    O que se segue?