Publicar e receber eventos criando um barramento e uma inscrição (console)

Neste guia de início rápido, mostramos como publicar e receber mensagens de evento criando um barramento do Eventarc Advanced e a inscrição no projeto Google Cloud.

  • Uma linha permite centralizar o fluxo de mensagens no sistema e atua como um roteador. Ele recebe mensagens de eventos de uma origem de mensagem ou publicadas por um provedor e as avalia de acordo com um registro.

  • Um registro identifica uma assinatura de um barramento específico e define os critérios de correspondência para as mensagens, fazendo com que elas sejam roteadas de acordo com um ou mais destinos.

Neste guia de início rápido, você fará as seguintes tarefas:

  1. Crie uma sub-rede e ative o Acesso privado do Google.

  2. Criar um anexo de rede.

  3. Crie um repositório padrão do Artifact Registry.

  4. Implantar um serviço de receptor de eventos no Cloud Run

  5. Crie um barramento do Eventarc Advanced.

  6. Crie uma inscrição no Eventarc Advanced.

  7. Publique uma mensagem de evento no barramento.

  8. Confira os dados do evento nos registros do Cloud Run.

É possível concluir a maioria das etapas deste guia de início rápido usando o console do Google Cloud. Para concluir todas as etapas usando a CLI do Google Cloud, consulte Publicar e receber eventos criando um barramento e uma inscrição (CLI do gcloud).

Antes de começar

As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito de Google Cloud .

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.

    Enable the APIs

  8. Algumas etapas deste guia de início rápido exigem o uso da CLI gcloud:
    1. Configure a CLI gcloud em um dos seguintes ambientes de desenvolvimento:

      Cloud Shell

      Para usar um terminal on-line com a CLI gcloud já configurada, ative o Cloud Shell:

      Na parte de baixo desta página, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. A inicialização da sessão pode levar alguns segundos.

      Shell local

      Para usar um ambiente de desenvolvimento local, siga estas etapas:

      1. Instale a CLI gcloud.
      2. Inicialize a CLI gcloud.
    2. Selecione seu projeto do Google Cloud:
      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud.

    3. Atualize os componentes gcloud:
      gcloud components update
    4. Faça login usando sua conta:
      gcloud auth login
    5. Defina a variável de configuração usada neste guia de início rápido:
      REGION=us-central1
  9. Se você for o criador do projeto, receberá o papel de proprietário básico (roles/owner). Por padrão, esse papel do gerenciamento de identidade e acesso (IAM) inclui as permissões necessárias para acesso total à maioria dos Google Cloud recursos, e você pode pular esta etapa.

    Se você não é o criador do projeto, as permissões necessárias precisam ser concedidas ao principal apropriado. Por exemplo, um principal pode ser uma Conta do Google (para usuários finais) ou uma conta de serviço (para aplicativos e cargas de trabalho de computação).

    Observe que, por padrão, as permissões do Cloud Build incluem permissões para upload e download de artefatos do Artifact Registry.

    Permissões necessárias

    Para conseguir as permissões necessárias a fim de concluir este guia de início rápido, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

    Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

  10. Conceda papéis no projeto à conta de serviço padrão do Compute Engine. Esses papéis são necessários para criar e implantar a imagem do contêiner.
    1. No console do Google Cloud, abra a página IAM.

      Acessar IAM

    2. Para modificar os papéis da conta de serviço, se ela já tiver papéis no recurso, encontre uma linha que contenha o principal.

      ou

      Para conceder papéis à conta de serviço quando ela não tiver nenhum papel no recurso, clique em Conceder acesso e insira o identificador da conta de serviço padrão do Compute Engine com o seguinte formulário:

      PROJECT_NUMBER-compute@developer.gserviceaccount.com

      Substitua PROJECT_NUMBER pelo número do projeto Google Cloud. Encontre o número do projeto na página Welcome do console do Google Cloud.

    3. Clique em Editar principal na linha correspondente.
    4. Clique em Adicionar função ou Adicionar outra função.
    5. Na lista Selecionar um papel, filtre e selecione os seguintes papéis:
    6. Clique em Salvar.
  11. Por padrão, somente proprietários do projeto, editores do projeto, administradores do Cloud Run e invocadores do Cloud Run podem chamar os serviços do Cloud Run. Para configurar a autenticação, conceda o papel de Invocador do Cloud Run no projeto Google Cloud a uma conta de serviço. Para fins de teste, você vai anexar essa conta de serviço a um pipeline avançado do Eventarc para representar a identidade do pipeline.
    1. No Console do Google Cloud, acesse a página Contas de serviço.

      Acesse as Contas de serviço

    2. Clique em Criar conta de serviço.
    3. Insira um Nome de conta de serviço.
    4. Clique em Criar e continuar.
    5. Na lista Selecionar um papel, filtre e selecione o papel Invocador do Cloud Run.
    6. Clique em Concluído.

    É possível configurar quem pode acessar seu serviço do Cloud Run das seguintes maneiras:

    • Conceda permissão para selecionar contas de serviço ou grupos para permitir o acesso ao serviço. Todas as solicitações precisam ter um cabeçalho de autorização HTTP com um token do OpenID Connect assinado pelo Google para uma das contas de serviço autorizadas. É assim que o acesso é configurado neste guia de início rápido.
    • Conceda a permissão a allUsers para permitir o acesso não autenticado.

    Para mais informações, consulte Controle de acesso do Cloud Run.

Criar uma sub-rede e ativar o Acesso privado do Google

A menos que você crie uma política organizacional que proíba isso, os novos projetos Google Cloud começam com uma rede de nuvem privada virtual (VPC) padrão (uma rede VPC de modo automático) que tenha uma sub-rede em cada região. As sub-redes têm intervalos de endereços IP associados a elas.

Como você está encaminhando mensagens para um destino do Cloud Run usando um endereço DNS, é necessário ativar o Acesso privado do Google na sub-rede usada no anexo de rede. Caso contrário, não será possível resolver o endereço DNS. Para mais informações sobre redes privadas e o Cloud Run, consulte Receber solicitações de redes VPC.

Crie uma sub-rede na rede padrão do projeto e ative o Acesso privado do Google:

  1. No Console do Google Cloud, acesse a página Redes VPC.

    Acessar redes VPC

  2. Na lista de redes VPC, clique no nome padrão.

  3. Na página Detalhes da rede VPC, clique na guia Sub-redes.

  4. Clique em Adicionar sub-rede.

  5. No painel Adicionar uma sub-rede, faça o seguinte:

    1. Digite um Nome, por exemplo, my-subnet.
    2. Na lista Região, selecione us-central1.
    3. Insira um intervalo IPv4 principal para a sub-rede, por exemplo, 10.8.0.0/24.
    4. Em Acesso privado do Google, selecione Ativado.
    5. Aceite todos os outros padrões.
    6. Clique em Adicionar.

Os intervalos de IP da sub-rede precisam ser exclusivos e não podem se sobrepor em uma rede VPC ou em uma rede VPC com peering. Para mais informações sobre tipos e intervalos de sub-rede válidos, consulte Sub-redes.

Criar um anexo de rede

Um anexo de rede é um recurso que permite que uma rede VPC do produtor inicie conexões com uma rede VPC do consumidor. Para publicar eventos, o Eventarc Advanced usa o anexo de rede para estabelecer uma conexão com o endpoint hospedado em uma rede VPC.

Crie um anexo de rede na mesma rede e região que contém o endpoint de destino do evento e que aceita automaticamente conexões de qualquer interface do Private Service Connect que se refira ao anexo de rede:

  1. No Console do Google Cloud, acesse Private Service Connect.

    Acessar a página "Private Service Connect"

  2. Clique na guia Anexos de rede.

  3. Clique em Criar anexo de rede.

  4. Digite um Nome, por exemplo, my-network-attachment.

  5. Na lista Rede, selecione padrão.

  6. Na lista Região, selecione us-central1 (Iowa).

  7. Na lista Sub-rede, selecione a sub-rede que você criou anteriormente.

  8. Clique em Aceitar conexões automaticamente para todos os projetos

  9. Clique em Criar anexo de rede.

Criar um repositório padrão do Artifact Registry

Crie um repositório padrão do Artifact Registry para armazenar a imagem do contêiner.

  1. No console do Google Cloud, acesse a página Repositórios.

    Acessar repositórios

  2. Clique em Criar repositório.

  3. Digite um Nome, por exemplo, my-repo.

    Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.

  4. Em Formato do repositório, selecione Docker.

  5. Na lista Região, selecione us-central1 (Iowa).

  6. Aceite todos os outros padrões.

  7. Clique em Criar.

Implantar um serviço de receptor de eventos no Cloud Run

Implante um serviço do Cloud Run que registre o conteúdo de um evento. Esse serviço só é acessível em redes VPC do mesmo projeto, e o URL do serviço não é acessível diretamente porque ele só permite invocações autenticadas.

  1. No terminal, clone o repositório do GitHub:

    git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
  2. Mude para o diretório que contém o código de amostra do Cloud Run:

    cd eventarc-samples/eventarc-advanced-quickstart/
  3. Crie uma imagem de contêiner do Docker e envie a imagem para o repositório:

    gcloud builds submit \
        --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1

    Substitua REPOSITORY pelo nome do repositório do Artifact Registry.

  4. Implante a imagem do contêiner no Cloud Run:

    1. No console do Google Cloud, acesse a página do Cloud Run.

      Acesse o Cloud Run

    2. Clique em Implantar contêiner > Serviço.

    3. Selecione Implantar uma revisão de uma imagem de contêiner atual.

    4. No URL da imagem do contêiner, clique em Selecionar para especificar a imagem do contêiner do Artifact Registry que você criou anteriormente.

    5. Também é possível mudar o nome do serviço, por exemplo, para my-service.

    6. Na lista Região, selecione us-central1 (Iowa).

    7. Em Autenticação, selecione Exigir autenticação.

    8. Em Entrada, selecione Interno.

    9. Aceite todos os outros padrões.

    10. Clique em Criar e aguarde a conclusão da implantação.

Criar um barramento do Eventarc Advanced

Um barramento recebe mensagens de eventos de uma origem de mensagens ou publicadas por um provedor e atua como um roteador de mensagens.

Para mais informações, consulte Criar um bus para encaminhar mensagens.

  1. No console do Google Cloud, acesse a página Eventarc > Bus.

    Acessar "Bus"

  2. Clique em Criar barramento.

  3. Na página Criar um barramento, faça o seguinte:

    1. Digite um nome de barramento, por exemplo, my-bus.
    2. Na lista Região, selecione us-central1 (Iowa).
  4. Aceite todos os outros padrões.

  5. Clique em Criar.

Criar uma inscrição do Eventarc Advanced

Um registro determina quais mensagens são roteadas para um destino e também especifica o pipeline usado para configurar um destino para as mensagens de evento.

Para mais informações, consulte Criar uma inscrição para receber eventos.

Ao usar o console do Google Cloud, é possível criar uma inscrição e um pipeline ao mesmo tempo.

  1. Para criar uma inscrição, no console do Google Cloud, acesse a página Eventarc > Pipelines.

    Acessar "Pipelines"

  2. Clique em Criar pipeline.

  3. No painel Detalhes do pipeline, faça o seguinte:

    1. Insira um nome de pipeline, por exemplo, my-pipeline.
    2. Na lista Região, selecione us-central1 (Iowa). O pipeline precisa ser criado na mesma região do barramento.
    3. Aceite todos os outros padrões.
    4. Clique em Continuar.
  4. No painel Matrículas, faça o seguinte:

    1. Clique em Adicionar uma inscrição.
    2. Insira um nome de inscrição, por exemplo, my-enrollment.
    3. Na lista Barramento do Eventarc Advanced, selecione o barramento que você criou anteriormente.
    4. No campo Expressão CEL, escreva uma expressão de avaliação usando CEL. Exemplo:

      message.type == "hello-world-type"

    5. Clique em Concluído.

    6. Clique em Continuar.

    7. No painel Mediação de eventos, clique em Continuar novamente.

  5. No painel Destino, faça o seguinte:

    1. Na lista Tipo de destino, selecione Serviço do Cloud Run (via HTTP) e selecione o serviço do Cloud Run que você criou anteriormente.

    2. Na lista Anexo de rede, selecione o anexo de rede que você criou anteriormente.

    3. Marque a caixa de seleção Ativar autenticação.

      1. Na lista Auth header, selecione OIDC token.

      2. Na lista Conta de serviço, selecione a conta de serviço que você criou anteriormente e que vai invocar o serviço de destino. Esse e-mail da conta de serviço é usado para gerar o token do OIDC.

  6. Clique em Criar.

Publicar uma mensagem de evento no barramento

Para publicar uma mensagem diretamente no seu bus, use o comando gcloud beta eventarc message-buses publish ou envie uma solicitação para a API REST de publicação do Eventarc. Para mais informações, consulte Publicar eventos diretamente.

A mensagem precisa estar em um formato CloudEvents, que é uma especificação para descrever dados de eventos de uma maneira comum. O elemento data é o payload do seu evento. Qualquer JSON bem formado pode ser colocado neste campo. Para mais informações sobre atributos de contexto do CloudEvents, consulte Formato de evento.

Publique um evento no barramento do Eventarc Advanced usando a gcloud CLI e uma flag --event-data e outras flags de atributo de evento:

gcloud beta eventarc message-buses publish BUS_NAME \
    --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" \
    --location=$REGION

Ou publique um evento no barramento do Eventarc Advanced como uma mensagem JSON usando a CLI gcloud e uma flag --json-message:

gcloud beta eventarc message-buses publish BUS_NAME \
    --location=$REGION \
    --json-message='{"id": "hello-world-id-1234", "type":
 "hello-world-type", "source":
 "hello-world-source", "specversion": "1.0", "data":
 {"key": "hello-world-data"}}'

Depois de publicar um evento, você vai receber uma mensagem "Evento publicado com sucesso".

Conferir os dados do evento nos registros do Cloud Run

Depois de publicar um evento no barramento do Eventarc Advanced, é possível verificar os registros do serviço do Cloud Run para conferir se o evento foi recebido conforme o esperado.

  1. No console do Google Cloud, acesse a página do Cloud Run.

    Acesse o Cloud Run

  2. Na página Serviços, clique no nome do serviço.

  3. Clique na guia Registros.

  4. É possível filtrar as entradas de registro e retornar a saída. Por exemplo, você pode pesquisar hello-world-data.

  5. Procure uma entrada de registro semelhante a esta:

    2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'
    

Você criou um barramento e uma inscrição do Eventarc Advanced, publicou uma mensagem de evento no barramento e verificou o resultado esperado nos registros do serviço de receptor de eventos.

Limpar

Ao concluir as tarefas descritas neste guia de início rápido, é possível evitar o faturamento contínuo excluindo os recursos criados:

  1. Exclua uma sub-rede VPC.

  2. Exclua um anexo de rede VPC.

  3. Excluir um repositório do Artifact Registry.

  4. Exclua um serviço do Cloud Run.

  5. Exclua os recursos do Eventarc Advanced:

    1. Excluir uma inscrição.

    2. Excluir um pipeline.

    3. Excluir um ônibus.

Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Google Cloud interrompe o faturamento de todos os recursos usados no projeto.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

A seguir