Publique eventos de fontes Google

Pode ativar a recolha e a publicação de eventos de origens Google para um bus avançado do Eventarc específico criando um recurso GoogleApiSource.

Os eventos de origens Google são acionados diretamente por um evento não mediado, como a criação de uma função do Cloud Run ou uma alteração de estado num trabalho do Dataflow. Para mais informações, consulte o artigo Tipos de eventos Google suportados pelo Eventarc.

Tenha em conta o seguinte:

  • Por predefinição, os eventos são recolhidos a partir do Google Cloud projeto onde o recurso GoogleApiSource existe. Também pode usar a CLI gcloud para recolher eventos de vários projetos que estão na mesma organização que o recurso GoogleApiSource. Para mais informações, consulte a secção Publique eventos a partir de vários projetos neste documento.
  • Pode publicar eventos num barramento que esteja num Google Cloud projeto diferente daquele em que o recurso GoogleApiSource existe. Pode configurar esta opção através da CLI gcloud ou enviando um pedido para a API Eventarc (mas não através da Google Cloud consola).
  • Existe um limite de um GoogleApiSourcerecurso por Google Cloud projeto por região.

Antes de começar

Antes de começar, certifique-se de que concluiu os seguintes passos:

  1. Se estiver a usar a CLI gcloud para executar os comandos nesta página, instale e, em seguida, inicialize a CLI gcloud. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

  2. Ative a API Eventarc e a API Eventarc Publishing:

    Consola

    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

    gcloud

    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.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

Ative eventos de origens Google

Para publicar eventos de origens Google, tem de criar um recurso GoogleApiSource. Este recurso representa uma subscrição de eventos da API Google num projeto Google Cloud específico para um barramento Eventarc Advanced específico.

Pode ativar a publicação de eventos de origens Google das seguintes formas:

  • Na consola Google Cloud
  • Usando a Google Cloud CLI no seu terminal ou no Cloud Shell
  • Enviando um pedido para a API Eventarc

Consola

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

    Aceda a Autocarro

  2. Pode criar um autocarro ou, se estiver a atualizar um autocarro, clique em Editar.

  3. Na página Editar autocarro, para adicionar uma origem de mensagens, clique em Adicionar origem.

    1. No painel Adicionar origem da mensagem, para o fornecedor de mensagens da API Google, aceite o valor predefinido de google-api-source ou introduza um nome de origem da mensagem diferente.
    2. Clique em Criar.
  4. Clique em Guardar.

gcloud

  1. Abra um terminal.

  2. Pode ativar eventos de origens Google através do 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=BUS_PROJECT_ID

    Substitua o seguinte:

    • GOOGLE_API_SOURCE_NAME: o ID ou o identificador totalmente qualificado do seu recurso GoogleApiSource que representa uma subscrição de eventos da API Google para um barramento específico
    • BUS_NAME: o ID ou o identificador totalmente qualificado do autocarro para o qual quer subscrever eventos da API Google
    • BUS_PROJECT_ID: o Google Cloud ID do projeto para o autocarro

    Opcional: também pode usar as seguintes flags:

    • --async para regressar imediatamente ao comando, sem esperar que a operação em curso seja concluída.
    • --crypto-key para especificar o nome totalmente qualificado de uma chave de encriptação gerida pelo cliente; se não for especificado,são usadas as Google-owned and managed keys .
    • --logging-config para configurar o nível de registo, que tem de ser um dos seguintes: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. Para mais informações, consulte LogSeverity.

API REST

Para ativar eventos de origens Google, use o método projects.locations.googleApiSources.create.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • GOOGLE_API_SOURCE_NAME: o nome a apresentar do recurso GoogleApiSource que representa uma subscrição de eventos da API Google para um barramento específico, por exemplo, my_google_source.
  • LABEL_KEY e LABEL_VALUE: opcional. Um mapa de pares de chave e valor de etiquetas que ajudam a organizar os seus Google Cloud recursos. Para mais informações, consulte o artigo O que são etiquetas?
  • ANNOTATION_KEY e ANNOTATION_VALUE: opcional. Um mapa de pares de chave e valor de anotação de texto de forma livre. Pode usá-los para anexar informações arbitrárias associadas ao recurso. Para mais informações, consulte o artigo Anotações.
  • DESTINATION: o identificador totalmente qualificado do bus avançado do Eventarc para o qual os eventos de origem da Google devem ser publicados no formato projects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAME. Para mais informações, consulte o artigo Crie um barramento para encaminhar mensagens.
  • ENCRYPT_KEY: opcional. Uma chave do Cloud KMS que o recurso GoogleApiSource deve usar para a encriptação de dados no formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Para mais informações, consulte o artigo Use chaves de encriptação geridas pelo cliente.
  • PROJECT_ID: o ID do projeto no qual criar o recurso GoogleApiSource. Google Cloud
  • LOCATION: a região suportada na qual criar o recurso GoogleApiSource, por exemplo, us-central1.
  • LOG_SEVERITY: opcional. A gravidade mínima do evento descrito numa entrada do registo. Um dos seguintes: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. A predefinição é NONE. Para mais informações, consulte LogSeverity.

Corpo JSON do pedido:

{
  "displayName": "GOOGLE_API_SOURCE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "destination": "DESTINATION",
  "cryptoKeyName": "ENCRYPT_KEY",
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}

Para enviar o seu pedido, expanda uma destas opções:

Se for bem-sucedido, o corpo da resposta contém uma instância recém-criada de Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Os eventos de origens Google no mesmo Google Cloud projeto que o recursoGoogleApiSource são agora recolhidos e publicados no barramento.

Desative eventos de origens Google

Para desativar a publicação de eventos de origens Google num Google Cloud projeto específico para um barramento avançado do Eventarc, tem de eliminar o recurso GoogleApiSource.

Pode desativar a publicação de eventos de origens Google das seguintes formas:

  • Na consola Google Cloud
  • Usando a CLI gcloud no seu terminal ou no Cloud Shell
  • Enviando um pedido para a API Eventarc

Consola

  1. Na Google Cloud consola, aceda à página Eventarc > Detalhes do barramento.

    Aceder aos detalhes do autocarro

  2. Clique em Editar.

  3. Na página Editar autocarro, para eliminar o fornecedor de mensagens da API Google, clique em Eliminar recurso para a origem de mensagens google-api-source (ou o nome que lhe atribuiu).

  4. Na mensagem Eliminar recurso, clique em Confirmar.

  5. Clique em Guardar.

gcloud

  1. Abra um terminal.

  2. Pode desativar eventos de origens Google através do comando: gcloud eventarc google-api-sources delete

    gcloud eventarc google-api-sources delete GOOGLE_API_SOURCE_NAME \
        --location=REGION

    Substitua o seguinte:

    • GOOGLE_API_SOURCE_NAME: o ID ou o identificador totalmente qualificado do recurso GoogleApiSource
    • REGION: a localização do recurso GoogleApiSource

API REST

Para desativar eventos de origens Google, use o método projects.locations.googleApiSources.delete.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto no qual o recurso Google Cloud é criado.GoogleApiSource
  • LOCATION: a região na qual o recurso GoogleApiSource é criado, por exemplo, us-central1.
  • GOOGLE_API_SOURCE_NAME: o nome do recurso GoogleApiSource que quer eliminar.

Para enviar o seu pedido, expanda uma destas opções:

Se for bem-sucedido, o corpo da resposta contém uma instância recém-criada de Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Os eventos de origens Google no mesmo Google Cloud projeto que o recurso GoogleApiSource eliminado já não são recolhidos nem publicados.

Publique eventos a partir de vários projetos

Para recolher e publicar eventos de origem da Google a partir de vários Google Cloud projetos, tem de criar um recurso GoogleApiSource e os projetos têm de estar na mesma organização que o recurso GoogleApiSource. Para mais informações sobre organizações, consulte o artigo Hierarquia de recursos.

Tenha em conta o seguinte:

  • A publicação de eventos a partir de vários projetos tem de ser configurada através da CLI gcloud e não é apresentada na Google Cloud consola.
  • Se o projeto que contém o recurso GoogleApiSource for movido para uma organização diferente, a publicação de eventos de vários projetos deixa de funcionar como esperado. Tem de atualizar ou recriar o recurso GoogleApiSource.

1. Conceda ao agente do serviço Eventarc a função IAM adequada

Para recolher eventos ao nível da organização, use o comando gcloud organizations add-iam-policy-binding para conceder ao agente do serviço Eventarc a função de gestão de identidade e acesso (IAM) adequada:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="SERVICE_AGENT_EMAIL" \
    --role="roles/eventarc.multiProjectEventCollector"

Substitua o seguinte:

  • ORGANIZATION_ID: o ID do recurso da sua organização.
  • SERVICE_AGENT_EMAIL: o endereço de email do agente de serviço principal do Eventarc no projeto onde está a criar o recurso GoogleApiSource. O endereço de email tem o seguinte formato:

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.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 ou executando o seguinte comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    

2. Publique a partir de todos os projetos ou de uma lista de projetos

Para publicar eventos de origens Google em vários projetos, use o comando gcloud eventarc google-api-sources create de uma das seguintes formas:

  • Publicar a partir de todos Google Cloud os projetos na mesma organização que o recurso GoogleApiSource:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --organization-subscription
  • Publicar a partir de uma lista de Google Cloud projetos na mesma organização que o recurso GoogleApiSource:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --project-subscriptions=LIST_OF_PROJECTS

    Substitua o seguinte:

    • GOOGLE_API_SOURCE_NAME: o ID ou o identificador totalmente qualificado do recurso GoogleApiSource
    • REGION: a localização do recurso GoogleApiSource
    • BUS_NAME: o ID ou o identificador totalmente qualificado do autocarro para o qual quer subscrever eventos da API Google
    • BUS_PROJECT_ID: o Google Cloud ID do projeto para o autocarro
    • LIST_OF_PROJECTS: uma lista separada por vírgulas de Google Cloud IDs ou números de projetos. Pode combinar IDs e números na mesma lista. Para publicar eventos a partir do projeto que contém o recurso GoogleApiSource, tem de incluir explicitamente o ID ou o número do projeto na lista.Google Cloud

O que se segue?