Publicar eventos de uma fonte do Google
É possível ativar a coleta e publicação de eventos de fontes do Google. Para mais informações, consulte Publicar eventos de fontes do Google.
Neste guia de início rápido, mostramos como publicar e receber mensagens de eventos criando um barramento do Eventarc Advanced e fazendo a inscrição no seu projeto Google Cloud.
Um barramento permite centralizar o fluxo de mensagens no sistema e atua como um roteador. Ele recebe mensagens de eventos de uma fonte de mensagens ou publicadas por um provedor e as avalia de acordo com uma inscrição.
Um registro identifica uma assinatura de um barramento específico e define os critérios de correspondência para 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:
Implantar um serviço de receptor de eventos no Cloud Run
Crie um barramento do Eventarc Advanced.
Ative os eventos de fontes do Google.
Crie uma inscrição no Eventarc Advanced.
Publique uma mensagem de evento no barramento criando um fluxo de trabalho.
Confira os dados do evento nos registros do Cloud Run.
Conclua este guia de início rápido usando a CLI 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.
-
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
-
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.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com -
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
-
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.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com - 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=REGION
Substitua
REGION
por um local compatível para o ônibus, por exemplo,us-central1
. -
Se você for o criador do projeto, vai receber o papel de proprietário básico (
roles/owner
). Por padrão, esse papel do Identity and Access Management (IAM) inclui as permissões necessárias para acesso total à maioria dos recursos do Google Cloud, 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 o 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
-
Editor do Workflows (
roles/workflows.editor
)
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 usando papéis personalizados ou outros papéis predefinidos.
-
Editor do Cloud Build (
- Conceda os seguintes papéis no projeto à conta de serviço padrão do Compute Engine. Essas funções são necessárias ao criar e implantar a imagem do contêiner:
- Gravador do Artifact Registry (
roles/artifactregistry.writer
): para fazer upload de artefatos do Artifact Registry. - Gravador de registros
(
roles/logging.logWriter
): para gravar registros no Cloud Logging - Usuário de objetos do Storage (
roles/storage.objectUser
): para acessar objetos do Cloud Storage
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/storage.objectUser
Substitua
PROJECT_NUMBER
pelo número do seu projeto Google Cloud. Encontre o número do projeto na página Boas-vindas do console do Google Cloud ou executando o seguinte comando:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
- Gravador do Artifact Registry (
- Por padrão, somente proprietários e editores de projetos, além de administradores e invocadores do Cloud Run, podem chamar serviços do Cloud Run. Para
configurar a autenticação, conceda o
papel de invocador do
Cloud Run (
run.invoker
) no seu projeto Google Cloud a uma conta de serviço:- Crie uma conta de serviço. Para fins de teste, você vai anexar essa conta de serviço a um pipeline do Eventarc Advanced para representar a identidade do pipeline.
Substituagcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
por um nome para a conta de serviço. - Conceda o papel do IAM
roles/run.invoker
à conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/run.invoker
É possível configurar quem pode acessar o serviço do Cloud Run de uma 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 permissão para
allUsers
permitir acesso não autenticado.
Para mais informações, consulte Controle de acesso do Cloud Run.
- Crie uma conta de serviço. Para fins de teste, você vai anexar essa conta de serviço a um pipeline do Eventarc Advanced para representar a identidade do pipeline.
Crie um repositório padrão do Artifact Registry para armazenar a imagem do contêiner.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Substitua
REPOSITORY
por um nome exclusivo para o repositório do Artifact Registry, por exemplo,my-repo
.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 por push para seu repositório:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1
Implante a imagem do contêiner no Cloud Run:
gcloud run deploy SERVICE_NAME \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --platform managed \ --ingress all \ --no-allow-unauthenticated \ --region=$REGION
Substitua
SERVICE_NAME
pelo nome do seu serviço, por exemplo,my-service
.Observe o seguinte:
A flag
--platform
define a plataforma de destino, neste caso, uma versão totalmente gerenciada do Cloud Run.A configuração de entrada
all
permite todas as solicitações, incluindo solicitações diretamente da Internet para o URLrun.app
. Para mais informações, consulte Restringir a entrada de rede para o Cloud Run.A flag
--no-allow-unauthenticated
configura o serviço para permitir apenas invocações autenticadas.Quando o URL do serviço do Cloud Run for exibido, a implantação estará concluída.
Copie e salve o URL do serviço do Cloud Run, porque você vai usá-lo em uma etapa posterior.
Crie um pipeline usando o comando
gcloud eventarc pipelines create
:gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Substitua:
PIPELINE_NAME
: o ID do pipeline ou um nome totalmente qualificado, por exemplo,my-pipeline
.CLOUD_RUN_SERVICE_URL
: o URL totalmente qualificado do serviço do Cloud Run, por exemplo,https://SERVICE_NAME-abcdef-uc.a.run.app
. Esse é o destino das mensagens de evento.
A chave
google_oidc_authentication_service_account
especifica um e-mail de conta de serviço usado para gerar um token do OIDC.Crie uma inscrição usando o comando
gcloud eventarc enrollments create
:gcloud eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=$REGION
Substitua:
ENROLLMENT_NAME
: o ID da inscrição ou um nome totalmente qualificado, por exemplo,my-enrollment
.MATCH_EXPRESSION
: a expressão de correspondência para esta inscrição usando CEL. Por exemplo, para publicar mensagens de eventos sempre que um fluxo de trabalho do Workflows for criado, use a seguinte expressão:"message.type == 'google.cloud.workflows.workflow.v1.created'"
No diretório inicial, crie um novo arquivo chamado
myWorkflow.yaml
.Copie e cole o seguinte fluxo de trabalho no novo arquivo e salve:
- getCurrentTime: call: http.get args: url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam result: currentTime - readWikipedia: call: http.get args: url: https://en.wikipedia.org/w/api.php query: action: opensearch search: ${currentTime.body.dayOfWeek} result: wikiResult - returnResult: return: ${wikiResult.body[1]}
Esse fluxo de trabalho transmite o dia atual da semana como um termo de pesquisa para a API Wikipedia. Uma lista de artigos relacionados da Wikipédia é retornada.
Implante o fluxo de trabalho e associe-o à conta de serviço especificada usando o comando
gcloud workflows deploy
:gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Filtre as entradas de registro e retorne a saída usando o comando
gcloud logging read
:gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
Procure uma entrada de registro semelhante a esta:
insertId: 689644c30004cde066603b3a labels: instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr receiveTimestamp: '2025-08-08T18:41:07.632226222Z' resource: labels: ... type: cloud_run_revision textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created' timestamp: '2025-08-08T18:41:07.314848Z'
Exclua os recursos do Eventarc Advanced:
Implantar um serviço de receptor de eventos no Cloud Run
Implante um serviço do Cloud Run como um destino de evento que registra o conteúdo de um evento. Outros destinos de eventos são aceitos, como um tópico do Pub/Sub, Workflows ou um endpoint HTTP. Para mais informações, consulte Provedores e destinos de eventos.
Criar um barramento do Eventarc Advanced
Um barramento recebe mensagens de eventos de uma fonte de mensagens ou publicadas por um provedor e age como um roteador de mensagens.
Para mais informações, consulte Criar um barramento para rotear mensagens.
Crie um barramento do Eventarc Advanced no seu projeto usando o comando
gcloud eventarc message-buses create
:
gcloud eventarc message-buses create BUS_NAME \ --location=$REGION
Substitua BUS_NAME
pelo ID do barramento ou um nome totalmente
qualificado, por exemplo, my-bus
.
Ativar eventos de fontes do Google
Para publicar eventos de fontes do Google, crie um recurso
GoogleApiSource
. Esse recurso representa uma assinatura de eventos da API do Google para um barramento específico do Eventarc Advanced em um projeto e uma região Google Cloud específicos.
Ative eventos de fontes do Google usando o comando
gcloud eventarc google-api-sources create
:
gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=PROJECT_ID \ --location=$REGION
Substitua GOOGLE_API_SOURCE_NAME
pelo ID do recurso
GoogleApiSource
ou um nome totalmente qualificado, por exemplo,
my-google-api-source
.
Todos os tipos de eventos do Google compatíveis enviados diretamente de uma origem do Google agora são coletados e publicados no seu barramento.
Criar uma inscrição no 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 a CLI gcloud, primeiro crie um pipeline e depois crie uma inscrição:
Publicar uma mensagem de evento no barramento criando um fluxo de trabalho
O Workflows é uma plataforma de orquestração totalmente gerenciada que executa serviços na ordem que você define: um fluxo de trabalho. Crie um fluxo de trabalho para gerar um tipo de evento compatível de uma fonte do Google.
Ver os dados de eventos nos registros do Cloud Run
Depois de publicar um evento no barramento do Eventarc Advanced, você pode verificar os registros do seu serviço do Cloud Run para verificar se o evento foi recebido conforme o esperado.
Você criou com sucesso um barramento e uma inscrição do Eventarc Advanced, ativou a publicação de eventos de fontes do Google, criou um fluxo de trabalho para gerar um tipo de evento compatível de um provedor do Google 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:
Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto Google Cloud interrompe o faturamento de todos os recursos usados nele.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID