Publique e receba eventos criando um barramento e uma inscrição (consola)

Este início rápido mostra como publicar e receber mensagens de eventos criando um bus avançado do Eventarc e uma inscrição no seu projeto Google Cloud.

  • Um autocarro permite-lhe centralizar o fluxo de mensagens através do seu sistema e funciona como um router. Recebe mensagens de eventos de uma origem de mensagens ou publicadas por um fornecedor e avalia-as de acordo com uma inscrição.

  • Uma inscrição identifica uma subscrição de um barramento específico e define os critérios de correspondência para mensagens, fazendo com que sejam encaminhadas em conformidade para um ou mais destinos.

Neste início rápido, vai:

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

  2. Implemente um serviço de receção de eventos no Cloud Run.

  3. Crie um barramento avançado do Eventarc.

  4. Crie uma inscrição avançada do Eventarc.

  5. Publicar uma mensagem de evento no barramento.

  6. Veja os dados de eventos nos registos do Cloud Run.

Pode concluir a maioria dos passos neste início rápido através da consola Google Cloud . Para concluir todos os passos através da CLI Google Cloud, consulte o artigo Publique e receba eventos criando um barramento e uma inscrição (CLI gcloud).

Antes de começar

As restrições de segurança definidas pela sua organização podem impedir a conclusão dos seguintes passos. Para informações de resolução de problemas, consulte o artigo Desenvolva aplicações num ambiente Google Cloud restrito.

  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.

    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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  4. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc 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.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  7. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc 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.

    Enable the APIs

  8. Alguns passos neste guia de início rápido requerem que use a CLI gcloud:
    1. Configure a CLI gcloud num dos seguintes ambientes de desenvolvimento:

      Cloud Shell

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

      Na parte inferior desta página, é iniciada uma sessão do Cloud Shell e é apresentado um pedido de linha de comandos. A sessão pode demorar alguns segundos a ser inicializada.

      Shell local

      Para usar um ambiente de desenvolvimento local, siga estes passos:

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

      Substitua PROJECT_ID pelo nome do seu Google Cloud projeto.

    3. Atualize os componentes de gcloud:
      gcloud components update
    4. Inicie sessão com a sua conta:
      gcloud auth login
    5. Defina a variável de configuração usada neste início rápido:
      REGION=us-central1
  9. Se for o criador do projeto, é-lhe atribuída a função básica de proprietário (roles/owner). Por predefinição, esta função do Identity and Access Management (IAM) inclui as autorizações necessárias para acesso total à maioria dos Google Cloud recursos e pode ignorar este passo.

    Se não for o criador do projeto, as autorizações necessárias têm de ser concedidas no projeto ao principal adequado. Por exemplo, um principal pode ser uma Conta Google (para utilizadores finais) ou uma conta de serviço (para aplicações e cargas de trabalho de computação).

    Tenha em atenção que, por predefinição, as autorizações do Cloud Build incluem autorizações para carregar e transferir artefactos do Artifact Registry.

    Autorizações necessárias

    Para receber as autorizações de que precisa para concluir este início rápido, peça ao seu administrador que lhe conceda as seguintes funções da IAM no seu projeto:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

  10. Conceda funções no projeto à conta de serviço predefinida do Compute Engine. Estas funções são necessárias para criar e implementar a imagem do contentor.
    1. Na Google Cloud consola, aceda à página IAM.

      Aceda ao IAM

    2. Para modificar as funções da conta de serviço se já tiver funções no recurso, procure uma linha que contenha o principal.

      ou

      Para conceder funções à conta de serviço quando não tem funções no recurso, clique em Conceder acesso e, de seguida, introduza o identificador da conta de serviço predefinida do Compute Engine com o seguinte formulário:

      PROJECT_NUMBER-compute@developer.gserviceaccount.com

      Substitua PROJECT_NUMBER pelo seu Google Cloud número do projeto. Pode encontrar o número do projeto na página Boas-vindas da Google Cloud consola.

    3. Clique em Editar principal na linha correspondente.
    4. Clique em Adicionar função ou Adicionar outra função.
    5. Na lista Selecionar uma função, filtre e selecione as seguintes funções:
    6. Clique em Guardar.
  11. Por predefinição, apenas os proprietários do projeto, os editores do projeto e os administradores e invocadores do Cloud Run podem chamar serviços do Cloud Run. Para configurar a autenticação, conceda a função de invocador do Cloud Run no seu projeto a uma conta de serviço. Google Cloud Para fins de teste, vai anexar esta conta de serviço a um pipeline avançado do Eventarc para representar a identidade do pipeline.
    1. Na Google Cloud consola, aceda à página Contas de serviço.

      Aceda a Contas de serviço

    2. Clique em Criar conta de serviço.
    3. Introduza um Nome da conta de serviço.
    4. Clique em Criar e continuar.
    5. Na lista Selecionar uma função, filtre e selecione a função Cloud Run Invoker.
    6. Clique em Concluído.

    Tenha em atenção que pode configurar quem pode aceder ao seu serviço do Cloud Run de qualquer uma das seguintes formas:

    • Conceda autorização a contas de serviço ou grupos selecionados para permitir o acesso ao serviço. Todos os pedidos têm de ter um cabeçalho de autorização HTTP que contenha um token OpenID Connect assinado pela Google para uma das contas de serviço autorizadas. Esta é a forma como o acesso é configurado neste início rápido.
    • Conceda autorização a allUsers para permitir o acesso não autenticado.

    Para mais informações, consulte o artigo Controlo de acesso para o Cloud Run.

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

    Crie um repositório padrão do Artifact Registry para armazenar a imagem de contentor.

    1. Na Google Cloud consola, aceda à página Repositórios.

      Aceda a Repositórios

    2. Clique em Criar repositório.

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

      Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.

    4. Para o formato do repositório, selecione Docker.

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

    6. Aceite todas as outras predefinições.

    7. Clique em Criar.

    Implemente um serviço de receção de eventos no Cloud Run

    Implemente um serviço do Cloud Run que regista o conteúdo de um evento. São suportados outros destinos de eventos, como um tópico do Pub/Sub, fluxos de trabalho ou um ponto final de HTTP. Para mais informações, consulte Fornecedores e destinos de eventos.

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

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

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

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

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

    4. Implemente a imagem do contentor no Cloud Run:

      1. Na Google Cloud consola, aceda à página Cloud Run.

        Aceda ao Cloud Run

      2. Clique em Implementar contentor > Serviço.

      3. Selecione Implementar uma revisão a partir de uma imagem de contentor existente.

      4. Para o URL da imagem do contentor, clique em Selecionar para especificar a imagem do contentor do Artifact Registry que criou anteriormente.

      5. Opcionalmente, pode alterar 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.

        Isto configura o serviço para permitir apenas invocações autenticadas.

      8. Para o Ingress, selecione Tudo.

        Isto permite todos os pedidos, incluindo pedidos diretamente da Internet, para o URL run.app. Para mais informações, consulte o artigo Restrinja a entrada de rede para o Cloud Run.

      9. Aceite todas as outras predefinições.

      10. Clique em Criar e aguarde até que a implementação esteja concluída.

    Crie um bus avançado do Eventarc

    Um barramento recebe mensagens de eventos de uma origem de mensagens ou publicadas por um fornecedor e funciona como um router de mensagens.

    Para mais informações, consulte o artigo Crie um autocarro para encaminhar mensagens.

    1. Na Google Cloud consola, aceda à página Eventarc > Bus.

      Aceda a Autocarro

    2. Clique em Criar autocarro.

    3. Na página Crie um autocarro, faça o seguinte:

      1. Introduza um Nome do autocarro, por exemplo, my-bus.
      2. Na lista Região, selecione us-central1 (Iowa).
    4. Aceite todas as outras predefinições.

    5. Clique em Criar.

    Crie uma inscrição avançada do Eventarc

    Uma inscrição determina as mensagens que são encaminhadas para um destino e também especifica o pipeline usado para configurar um destino para as mensagens de eventos.

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

    Quando usa a Google Cloud consola, pode criar uma inscrição e um pipeline ao mesmo tempo.

    1. Para criar uma inscrição, na Google Cloud consola, aceda à página Eventarc > Pipelines.

      Aceda a Pipelines

    2. Clique em Criar pipeline.

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

      1. Introduza um Nome da pipeline, por exemplo, my-pipeline.
      2. Na lista Região, selecione us-central1 (Iowa). O pipeline tem de ser criado na mesma região que o autocarro.
      3. Aceite todas as outras predefinições.
      4. Clique em Continuar.
    4. No painel Inscrições, faça o seguinte:

      1. Clique em Adicionar inscrição.
      2. Introduza um Nome de inscrição, por exemplo, my-enrollment.
      3. Na lista Eventarc Advanced Bus, selecione o barramento que criou anteriormente.
      4. No campo Expressão IEC, escreva uma expressão de avaliação usando o IEC. Por exemplo:

        message.type == "hello-world-type"
        
      5. Clique em Concluído.

      6. Clique em Continuar.

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

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

      1. Na lista Tipo de destino, selecione Serviço do Cloud Run (através de HTTP) e, de seguida, selecione o serviço do Cloud Run que criou anteriormente.

      2. Selecione a caixa de verificação Ativar autenticação.

        1. Na lista Cabeçalho de autorização, selecione Token OIDC.

        2. Na lista Conta de serviço, selecione a conta de serviço que criou anteriormente e que vai invocar o seu serviço de destino. Este email da conta de serviço é usado para gerar o token OIDC.

    6. Clique em Criar.

    Publicar uma mensagem de evento no barramento

    Para publicar diretamente uma mensagem no seu barramento, pode usar o comando gcloud eventarc message-buses publish ou enviar um pedido para a API REST de publicação do Eventarc. Para mais informações, consulte o artigo Publique eventos diretamente.

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

    Publique um evento no seu bus avançado do Eventarc através da CLI gcloud e de uma --event-data e outras flags de atributos de eventos:

    gcloud 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
    

    Em alternativa, publique um evento no seu bus avançado do Eventarc como uma mensagem JSON usando a CLI gcloud e uma flag --json-message:

    gcloud 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, deve receber a mensagem "Evento publicado com êxito".

    Veja os dados de eventos nos registos do Cloud Run

    Depois de publicar um evento no barramento avançado do Eventarc, pode verificar os registos do seu serviço do Cloud Run para confirmar que o evento foi recebido conforme esperado.

    1. Na Google Cloud consola, aceda à página Cloud Run.

      Aceda ao Cloud Run

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

    3. Clique no separador Registos.

    4. Pode filtrar as entradas do registo e devolver o resultado. Por exemplo, pode pesquisar hello-world-data.

    5. Procure uma entrada de registo semelhante à seguinte:

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

    Criou com êxito um barramento avançado do Eventarc e uma inscrição, publicou uma mensagem de evento no barramento e validou o resultado esperado nos registos do serviço de receção de eventos.

    Limpar

    Quando concluir as tarefas descritas neste início rápido, pode evitar a faturação contínua eliminando os recursos que criou:

    1. Elimine um repositório do Artifact Registry.

    2. Elimine um serviço do Cloud Run.

    3. Elimine recursos avançados do Eventarc:

      1. Elimine uma inscrição.

      2. Elimine um pipeline.

      3. Elimine um autocarro.

    Em alternativa, pode eliminar o seu Google Cloud projeto para evitar incorrer em custos. A eliminação do seu Google Cloud projeto interrompe a faturação de todos os recursos usados nesse 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.

    O que se segue?