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 do Google Cloud.

  • Um barramento atua como um roteador central, recebendo mensagens de fontes de eventos ou publicadas por provedores.

  • Um registro encaminha as mensagens recebidas pelo barramento para um ou mais destinos por um pipeline de processamento.

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

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

  2. Crie um barramento do Eventarc Advanced.

  3. Ative os eventos de fontes do Google.

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

  5. Publique uma mensagem de evento no barramento criando um fluxo de trabalho.

  6. Confira os dados de eventos 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 .

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. Instale a CLI do Google Cloud.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  6. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  7. Ative as APIs Artifact Registry, Cloud Build, Cloud Run, Eventarc e Workflows:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com
  8. Instale a CLI do Google Cloud.

  9. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  10. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  11. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  12. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  13. Ative as APIs Artifact Registry, Cloud Build, Cloud Run, Eventarc e Workflows:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com
  14. Atualize os componentes gcloud:
    gcloud components update
  15. Faça login usando sua conta:
    gcloud auth login
  16. 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.

  17. 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:

    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.

  18. Para fins de teste, crie uma conta de serviço e conceda a ela os papéis necessários para concluir este guia de início rápido.
    1. Crie uma conta de serviço:
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      Substitua SERVICE_ACCOUNT_NAME por um nome para a conta de serviço.
    2. Conceda os papéis necessários para criar e implantar uma imagem de contêiner e para representar a identidade de um pipeline do Eventarc Advanced:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/artifactregistry.writer
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/logging.logWriter
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/storage.admin
      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 a allUsers para permitir o acesso não autenticado.

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

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.

  1. 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.

  2. Clone o repositório do GitHub:

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

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

    gcloud builds submit \
        --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \
        --service-account=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --default-buckets-behavior=regional-user-owned-bucket
  5. 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 aquelas diretamente da Internet para o URL run.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.

  6. Copie e salve o URL do serviço do Cloud Run, porque você vai usá-lo em uma etapa posterior.

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 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:

  1. 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.

    Observe que a chave google_oidc_authentication_service_account especifica um e-mail da conta de serviço usado para gerar um token do OIDC.

  2. 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'"
      

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 definida por você: um fluxo de trabalho. Crie um fluxo de trabalho para gerar um tipo de evento compatível de uma fonte do Google.

  1. No diretório inicial, crie um novo arquivo chamado myWorkflow.yaml.

  2. 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.

  3. 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

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 serviço do Cloud Run para verificar se o evento foi recebido conforme o esperado.

  1. 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"'
    
  2. 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'
    

Você criou um barramento e um registro 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:

  1. Exclua um repositório do Artifact Registry.

  2. Exclua um serviço do Cloud Run.

  3. Exclua um fluxo de trabalho do Workflows.

  4. Exclua os recursos do Eventarc Advanced:

    1. Excluir um registro.

    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 Google Cloud interrompe o faturamento de todos os recursos usados nele.

Excluir um projeto do Google Cloud :

gcloud projects delete PROJECT_ID

A seguir