Encaminhe eventos do Cloud Pub/Sub para o Cloud Run

Um acionador do Eventarc declara o seu interesse num determinado evento ou conjunto de eventos. Pode configurar o encaminhamento de eventos especificando filtros para o acionador, incluindo a origem do evento e o serviço do Cloud Run de destino.

O Eventarc envia eventos para o recetor de eventos num formato CloudEvents através de um pedido HTTP.

Estas instruções mostram como configurar o encaminhamento de eventos para o seu serviço do Cloud Run acionado por um eventoCloud Pub/Sub direto; neste caso, uma mensagem publicada num tópico do Pub/Sub. Para mais detalhes, consulte a lista de eventos diretos suportados.

Prepare-se para criar um acionador

Antes de criar um acionador, conclua estes pré-requisitos:

Consola

  1. Na Google Cloud consola, na página do seletor de projetos, selecione ou crie um Google Cloud projeto.

    Aceder ao seletor de projetos

  2. Ative as APIs Cloud Logging, Eventarc e Eventarc Publishing.

    Ative as APIs

  3. Se aplicável, ative a API relacionada com os eventos diretos. Por exemplo, para eventos, ative a APICloud Pub/Sub . Cloud Pub/Sub

  4. Se ainda não tiver uma, crie uma conta de serviço gerida pelo utilizador e, em seguida, conceda-lhe as funções e as autorizações necessárias para que o Eventarc possa gerir eventos para o seu serviço de destino.

    1. Na Google Cloud consola, aceda à página Criar conta de serviço.

      Aceda a Criar conta de serviço

    2. Selecione o seu projeto.

    3. No campo Nome da conta de serviço, introduza um nome. A Google Cloud consola preenche o campo ID da conta de serviço com base neste nome.

      No campo Descrição da conta de serviço, introduza uma descrição. Por exemplo, Service account for event trigger.

    4. Clique em Criar e continuar.

    5. Para conceder o acesso adequado, na lista Selecionar uma função, selecione as funções de gestão de identidades e acessos (IAM) necessárias para conceder à sua conta de serviço para invocações autenticadas ou não autenticadas. Para mais informações, consulte o artigo Funções e autorizações para alvos do Cloud Run.

      Para funções adicionais, clique em Adicionar outra função e adicione cada função adicional.

    6. Clique em Continuar.

    7. Para concluir a criação da conta, clique em Concluído.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Ative as APIs Cloud Logging, Eventarc e Eventarc Publishing.

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

  3. Se aplicável, ative a API relacionada com os eventos diretos. Por exemplo, para Cloud Pub/Sub eventos, ative pubsub.googleapis.com.

  4. Se ainda não tiver uma, crie uma conta de serviço gerida pelo utilizador e, em seguida, conceda-lhe as funções e as autorizações necessárias para que o Eventarc possa gerir eventos para o seu serviço de destino.

    1. Crie a conta de serviço:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Substitua SERVICE_ACCOUNT_NAME pelo nome da conta de serviço. Tem de ter entre 6 e 30 carateres e pode conter carateres alfanuméricos em minúsculas e traços. Depois de criar uma conta de serviço, não pode alterar o respetivo nome.

    2. Conceda as funções ou as autorizações da gestão de identidade e de acesso (IAM) necessárias para invocações autenticadas ou não autenticadas. Para mais informações, consulte Funções e autorizações para destinos do Cloud Run.

Crie um acionador

Pode criar um acionador do Eventarc através da CLI Google Cloud ou da Google Cloud consola.

Consola

  1. Na Google Cloud consola, aceda à página Triggers do Eventarc.

    Aceda a Acionadores

  2. Clique em Criar acionador.
  3. Escreva um Nome do acionador.

    Este é o ID do acionador e tem de começar com uma letra. Pode conter até 63 letras minúsculas, números ou hífenes.

  4. Para o Tipo de acionador, selecione Fontes Google.
  5. Na lista Fornecedor de eventos, selecione Cloud Pub/Sub.

    Tenha em atenção que o nome do fornecedor de eventos usado na Google Cloud documentação associada pode não ter um prefixo de Cloud ou Google Cloud. Por exemplo, na consola, o Memorystore for Redis é denominado Google Cloud Memorystore for Redis.

  6. Na lista Tipo de evento, nos eventos Diretos, selecione google.cloud.pubsub.topic.v1.messagePublished.
  7. Na lista Selecionar um tópico do Cloud Pub/Sub, selecione um tópico ou aceite a predefinição Nenhum para que seja criado um novo tópico para si.
  8. Na lista Região, selecione a mesma região que o Google Cloud serviço que está a gerar eventos.

    Para mais informações, consulte o artigo Localizações do Eventarc.

  9. Selecione a conta de serviço que vai invocar o seu serviço ou fluxo de trabalho.

    Em alternativa, pode criar uma nova conta de serviço.

    Isto especifica o email da conta de serviço de gestão de identidade e de acesso (IAM) associado ao acionador e ao qual concedeu anteriormente funções específicas necessárias pelo Eventarc.

  10. Na lista Destino do evento, selecione Cloud Run.
  11. Selecione um serviço.

    Este é o nome do serviço que recebe os eventos para o acionador. O serviço tem de estar no mesmo projeto que o acionador e recebe eventos como pedidos HTTP POST enviados para o respetivo caminho do URL raiz (/) sempre que o evento é gerado.

  12. Opcionalmente, pode especificar o caminho do URL do serviço para enviar o pedido recebido.

    Este é o caminho relativo no serviço de destino para o qual os eventos do acionador devem ser enviados. Por exemplo: /, /route, route, route/subroute.

  13. Opcionalmente, para adicionar uma etiqueta, pode clicar em Adicionar etiqueta. As etiquetas são pares de chave-valor que ajudam a organizar os seus Google Cloud recursos. Para mais informações, consulte o artigo O que são etiquetas?
  14. Clique em Criar.
  15. Depois de criar um acionador, não é possível modificar os filtros da origem do evento. Em alternativa, crie um novo acionador e elimine o antigo. Para mais informações, consulte o artigo Faça a gestão dos acionadores.

gcloud

Pode criar um acionador executando um gcloud eventarc triggers createcomando juntamente com flags obrigatórias e opcionais.

Mensagens Pub/Sub (tópico existente)

gcloud eventarc triggers create TRIGGER \
  --location=LOCATION \
  --destination-run-service=DESTINATION_RUN_SERVICE \
  --destination-run-region=DESTINATION_RUN_REGION \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
  --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua o seguinte:

  • TRIGGER: o ID do acionador ou um identificador totalmente qualificado.
  • LOCATION: a localização do acionador do Eventarc. Em alternativa, pode definir a propriedade eventarc/location ; por exemplo, gcloud config set eventarc/location us-central1.

    Os acionadores do Pub/Sub para o Eventarc só estão disponíveis em localizações de região única e não pode criar um acionador do Eventarc global. Para mais informações, consulte o artigo Localizações do Eventarc.

  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos para o acionador. O serviço pode estar em qualquer uma das localizações suportadas pelo Cloud Run e não tem de estar na mesma localização que o acionador. No entanto, o serviço tem de estar no mesmo projeto que o acionador e recebe eventos como pedidos HTTP POST enviados para o respetivo caminho do URL raiz (/) sempre que o evento é gerado.
  • DESTINATION_RUN_REGION: (opcional) a região na qual o serviço de execução na nuvem de destino pode ser encontrado. Se não for especificado, assume-se que o serviço está na mesma região que o acionador.
  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • TOPIC_ID: o ID do tópico do Pub/Sub existente. O tópico tem de estar no mesmo projeto que o acionador.
  • SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço gerida pelo utilizador.

Notas:

  • A flag --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" é obrigatória e não pode ser alterada. Para um tipo de evento diferente, tem de criar um novo acionador.
  • Cada acionador pode ter vários filtros de eventos, separados por vírgulas numa --event-filters=[ATTRIBUTE=VALUE,...] sinalização, ou pode repetir a sinalização para adicionar mais filtros. Apenas os eventos que correspondem a todos os filtros são enviados para o destino. Os carateres universais e as expressões regulares não são suportados.
  • A flag --transport-topic é usada para especificar o ID do tópico do Pub/Sub existente ou o respetivo identificador totalmente qualificado.
  • Opcionalmente, especifique um caminho relativo no serviço do Cloud Run de destino para o qual os eventos do acionador devem ser enviados através da flag --destination-run-path.
  • Por predefinição, as subscrições do Pub/Sub criadas para o Eventarc persistem independentemente da atividade e não expiram. Para alterar a duração da inatividade, consulte o artigo Gerir subscrições.

Exemplo:

gcloud eventarc triggers create helloworld-trigger \
  --location=us-central1 \
  --destination-run-service=helloworld-events \
  --destination-run-region=us-central1 \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_NAME}
  --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Este comando cria um acionador denominado helloworld-trigger para o tópico do Pub/Sub identificado por projects/${PROJECT_ID}/topics/${TOPIC_ID}.

Mensagens Pub/Sub (novo tópico)

gcloud eventarc triggers create TRIGGER \
  --location=LOCATION \
  --destination-run-service=DESTINATION_RUN_SERVICE \
  --destination-run-region=DESTINATION_RUN_REGION \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua o seguinte:

  • TRIGGER: o ID do acionador ou um identificador totalmente qualificado.
  • LOCATION: a localização do acionador do Eventarc. Em alternativa, pode definir a propriedade eventarc/location ; por exemplo, gcloud config set eventarc/location us-central1.

    Os acionadores do Pub/Sub para o Eventarc só estão disponíveis em localizações de região única e não pode criar um acionador do Eventarc global. Para mais informações, consulte o artigo Localizações do Eventarc.

  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos para o acionador. O serviço pode estar em qualquer uma das localizações suportadas pelo Cloud Run e não tem de estar na mesma localização que o acionador. No entanto, o serviço tem de estar no mesmo projeto que o acionador e recebe eventos como pedidos HTTP POST enviados para o respetivo caminho do URL raiz (/) sempre que o evento é gerado.
  • DESTINATION_RUN_REGION: (opcional) a região na qual o serviço de execução na nuvem de destino pode ser encontrado. Se não for especificado, assume-se que o serviço está na mesma região que o acionador.
  • SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço gerida pelo utilizador.
  • PROJECT_ID: o ID do seu Google Cloud projeto.

Notas:

  • A flag --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" é obrigatória e não pode ser alterada. Para um tipo de evento diferente, tem de criar um novo acionador.
  • Cada acionador pode ter vários filtros de eventos, separados por vírgulas numa --event-filters=[ATTRIBUTE=VALUE,...] sinalização, ou pode repetir a sinalização para adicionar mais filtros. Apenas os eventos que correspondem a todos os filtros são enviados para o destino. Os carateres universais e as expressões regulares não são suportados.
  • Opcionalmente, especifique um caminho relativo no serviço do Cloud Run de destino para o qual os eventos do acionador devem ser enviados através da flag --destination-run-path.
  • Por predefinição, as subscrições do Pub/Sub criadas para o Eventarc persistem independentemente da atividade e não expiram. Para alterar a duração da inatividade, consulte o artigo Gerir subscrições.

Exemplo:

gcloud eventarc triggers create helloworld-trigger \
  --location=us-central1 \
  --destination-run-service=helloworld-events \
  --destination-run-region=us-central1 \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Este comando cria um novo tópico Pub/Sub e um acionador para o mesmo denominado helloworld-trigger.

Como prática recomendada, a Google recomenda não reutilizar o tópico do Pub/Sub criado por um acionador, porque a eliminação de um acionador do Eventarc também elimina todos os tópicos do Pub/Sub que foram criados pelo acionador.

Terraform

Pode criar um acionador para um destino do Cloud Run através do Terraform. Para ver detalhes, consulte o artigo Crie um acionador com o Terraform.

Crie uma lista de um acionador

Pode confirmar a criação de um acionador listando os acionadores do Eventarc através da CLI do Google Cloud ou da Google Cloud consola.

Consola

  1. Na Google Cloud consola, aceda à página Triggers do Eventarc.

    Aceda a Acionadores

    Esta página lista os seus acionadores em todas as localizações e inclui detalhes como nomes, regiões, fornecedores de eventos, destinos e muito mais.

  2. Para filtrar os acionadores:

    1. Clique em Filtro ou no campo Acionadores de filtro.
    2. Na lista Propriedades, selecione uma opção para filtrar os acionadores.

    Pode selecionar uma única propriedade ou usar o operador lógico OR para adicionar mais propriedades.

  3. Para ordenar os acionadores, junto ao título de qualquer coluna suportada, clique em Ordenar.

gcloud

Execute o seguinte comando para listar os seus acionadores:

gcloud eventarc triggers list --location=-

Este comando lista os seus acionadores em todas as localizações e inclui detalhes como nomes, tipos, destinos e estados.

O que se segue?