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:
Crie uma sub-rede e ative o Acesso privado do Google.
Criar um anexo de rede.
Crie um repositório padrão do Artifact Registry.
Implantar um serviço de receptor de eventos no Cloud Run
Crie um barramento do Eventarc Advanced.
Crie uma inscrição no Eventarc Advanced.
Publique uma mensagem de evento no barramento.
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 .
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
- Algumas etapas deste guia de início rápido exigem o uso da
CLI gcloud:
- 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:
- Selecione seu projeto do Google Cloud:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo nome do projeto do Google Cloud. - Atualize os componentes
gcloud
:gcloud components update
- Faça login usando sua conta:
gcloud auth login
- Defina a variável de configuração usada neste guia de início rápido:
REGION=us-central1
- Configure a CLI gcloud em um dos seguintes
ambientes de desenvolvimento:
-
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:
-
Editor do Cloud Build (
roles/cloudbuild.builds.editor
) -
Administrador do Cloud Run (
roles/run.admin
) -
Desenvolvedor do Eventarc (
roles/eventarc.developer
) -
Administrador de barramento de mensagem do Eventarc (
roles/eventarc.messageBusAdmin
) -
Acessador de exibição de registros (
roles/logging.viewAccessor
) -
Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin
) -
Administrador da conta de serviço (
roles/iam.serviceAccountAdmin
) -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) -
Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin
)
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.
-
Editor do Cloud Build (
- 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.
- No console do Google Cloud, abra a página IAM.
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.- Clique em Editar principal na linha correspondente.
- Clique em Adicionar função ou Adicionar outra função.
- Na lista Selecionar um papel, filtre e selecione os
seguintes papéis:
- Artifact Registry Writer: para fazer upload de artefatos do Artifact Registry.
- Registrador de registros: para gravar registros no Cloud Logging
- Usuário de objetos do Storage: para acessar objetos do Cloud Storage
- Clique em Salvar.
- No console do Google Cloud, abra a página IAM.
- 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.
- No Console do Google Cloud, acesse a página Contas de serviço.
- Clique em Criar conta de serviço.
- Insira um Nome de conta de serviço.
- Clique em Criar e continuar.
- Na lista Selecionar um papel, filtre e selecione o papel Invocador do Cloud Run.
- 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.
- No Console do Google Cloud, acesse a página Contas de serviço.
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:
No Console do Google Cloud, acesse a página Redes VPC.
Na lista de redes VPC, clique no nome padrão.
Na página Detalhes da rede VPC, clique na guia Sub-redes.
Clique em
Adicionar sub-rede.No painel Adicionar uma sub-rede, faça o seguinte:
- Digite um Nome, por exemplo,
my-subnet
. - Na lista Região, selecione us-central1.
- Insira um intervalo IPv4 principal para a sub-rede, por exemplo,
10.8.0.0/24
. - Em Acesso privado do Google, selecione Ativado.
- Aceite todos os outros padrões.
- Clique em Adicionar.
- Digite um Nome, por exemplo,
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:
No Console do Google Cloud, acesse Private Service Connect.
Clique na guia Anexos de rede.
Clique em
Criar anexo de rede.Digite um Nome, por exemplo,
my-network-attachment
.Na lista Rede, selecione padrão.
Na lista Região, selecione us-central1 (Iowa).
Na lista Sub-rede, selecione a sub-rede que você criou anteriormente.
Clique em Aceitar conexões automaticamente para todos os projetos
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.
No console do Google Cloud, acesse a página Repositórios.
Clique em
Criar repositório.Digite um Nome, por exemplo,
my-repo
.Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
Em Formato do repositório, selecione Docker.
Na lista Região, selecione us-central1 (Iowa).
Aceite todos os outros padrões.
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.
No terminal, clone o repositório do GitHub:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Mude para o diretório que contém o código de amostra do Cloud Run:
cd eventarc-samples/eventarc-advanced-quickstart/
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.Implante a imagem do contêiner no Cloud Run:
No console do Google Cloud, acesse a página do Cloud Run.
Clique em > Serviço.
Implantar contêinerSelecione Implantar uma revisão de uma imagem de contêiner atual.
No URL da imagem do contêiner, clique em Selecionar para especificar a imagem do contêiner do Artifact Registry que você criou anteriormente.
Também é possível mudar o nome do serviço, por exemplo, para
my-service
.Na lista Região, selecione us-central1 (Iowa).
Em Autenticação, selecione Exigir autenticação.
Em Entrada, selecione Interno.
Aceite todos os outros padrões.
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.
No console do Google Cloud, acesse a página Eventarc > Bus.
Clique em
Criar barramento.Na página Criar um barramento, faça o seguinte:
- Digite um nome de barramento, por exemplo,
my-bus
. - Na lista Região, selecione us-central1 (Iowa).
- Digite um nome de barramento, por exemplo,
Aceite todos os outros padrões.
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.
Para criar uma inscrição, no console do Google Cloud, acesse a página Eventarc > Pipelines.
Clique em
Criar pipeline.No painel Detalhes do pipeline, faça o seguinte:
- Insira um nome de pipeline, por exemplo,
my-pipeline
. - Na lista Região, selecione us-central1 (Iowa). O pipeline precisa ser criado na mesma região do barramento.
- Aceite todos os outros padrões.
- Clique em Continuar.
- Insira um nome de pipeline, por exemplo,
No painel Matrículas, faça o seguinte:
- Clique em Adicionar uma inscrição.
- Insira um nome de inscrição, por exemplo,
my-enrollment
. - Na lista Barramento do Eventarc Advanced, selecione o barramento que você criou anteriormente.
No campo Expressão CEL, escreva uma expressão de avaliação usando CEL. Exemplo:
message.type == "hello-world-type"
Clique em Concluído.
Clique em Continuar.
No painel Mediação de eventos, clique em Continuar novamente.
No painel Destino, faça o seguinte:
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.
Na lista Anexo de rede, selecione o anexo de rede que você criou anteriormente.
Marque a caixa de seleção Ativar autenticação.
Na lista Auth header, selecione OIDC token.
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.
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.
No console do Google Cloud, acesse a página do Cloud Run.
Na página Serviços, clique no nome do serviço.
Clique na guia Registros.
É possível filtrar as entradas de registro e retornar a saída. Por exemplo, você pode pesquisar
hello-world-data
.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:
Exclua os recursos do Eventarc Advanced:
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.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.