Como criar um gatilho

Um gatilho do Eventarc declara seu interesse em um determinado evento ou conjunto de eventos. Para configurar o roteamento de eventos, especifique filtros para o gatilho, incluindo a origem do evento e o serviço de destino do Cloud Run.

As solicitações para seu serviço são acionadas por mensagens publicadas em um tópico do Pub/Sub ou quando se cria um registro de auditoria que corresponde aos critérios de filtro do gatilho.

É possível criar gatilhos usando a ferramenta de linha de comando gcloud ou por meio do Console do Google Cloud.

Como criar um gatilho usando gcloud

É possível criar um gatilho executando um comando gcloud com as sinalizações obrigatórias e opcionais.

Novo tópico pub/sub

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"

Substitua:

  • TRIGGER é o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION é o local do gatilho do Eventarc. Para evitar problemas de desempenho e residência de dados causados por um gatilho global, ele deve corresponder à localização do serviço do Google Cloud que está gerando eventos. Como alternativa, você pode definir a propriedade eventarc/location; Por exemplo: gcloud config set eventarc/location us-central1. Para mais informações, consulte Locais do Eventarc.
  • DESTINATION_RUN_SERVICE é o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço precisa estar na mesma região que o gatilho, a menos que o local do gatilho seja global. O serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for acionado.
  • DESTINATION_RUN_REGION é a região na qual o serviço de destino do Cloud Run pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho

Observações:

  • A sinalização --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" é obrigatória.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em um --event-filters=[ATTRIBUTE=VALUE,...] ou repetir a sinalização para adicionar mais filtros. Somente eventos que correspondam a todos os filtros são enviados para o destino. Caracteres curinga e expressões regulares não são aceitos.
  • Como opção, é possível especificar um caminho relativo no serviço de destino do Cloud Run para o qual os eventos do gatilho precisam ser enviados usando a sinalização --destination-run-path.
  • Por padrão, as assinaturas do Pub/Sub criadas para o Eventarc persistem, independentemente da atividade e não expiram. Para alterar a duração da inatividade, consulte Como gerenciar assinaturas.

Exemplo:

  gcloud eventarc triggers create pubsub-trigger-new \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

Isso cria um novo tópico Pub/Sub e um gatilho para ele chamado pubsub-trigger-new.

Tópico do Pub/Sub atual

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_NAME

Substitua:

  • TRIGGER é o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION é o local do gatilho do Eventarc. Para evitar problemas de desempenho e residência de dados causados por um gatilho global, ele deve corresponder à localização do serviço do Google Cloud que está gerando eventos. Como alternativa, você pode definir a propriedade eventarc/location; Por exemplo: gcloud config set eventarc/location us-central1. Para mais informações, consulte Locais do Eventarc.
  • DESTINATION_RUN_SERVICE é o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço precisa estar na mesma região que o gatilho, a menos que o local do gatilho seja global. O serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for acionado.
  • DESTINATION_RUN_REGION é a região na qual o serviço de destino do Cloud Run pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho
  • PROJECT_ID é o ID do projeto no Google Cloud.
  • TOPIC_NAME é o nome do tópico existente do Pub/Sub; O tópico precisa estar no mesmo projeto que o gatilho.

Observações:

  • A sinalização --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" é obrigatória.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em um --event-filters=[ATTRIBUTE=VALUE,...] ou repetir a sinalização para adicionar mais filtros. Somente eventos que correspondam a todos os filtros são enviados para o destino. Caracteres curinga e expressões regulares não são aceitos.
  • A sinalização --transport-topic é usada para especificar o código do tópico do Pub/Sub existente ou seu identificador totalmente qualificado.
  • Como opção, é possível especificar um caminho relativo no serviço de destino do Cloud Run para o qual os eventos do gatilho precisam ser enviados usando a sinalização --destination-run-path.
  • Por padrão, as assinaturas do Pub/Sub criadas para o Eventarc persistem, independentemente da atividade e não expiram. Para alterar a duração da inatividade, consulte Como gerenciar assinaturas.

Exemplo:

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

Isso cria um gatilho chamado pubsub-trigger-existing para o tópico do Pub/Sub identificado por projects/${PROJECT_ID}/topics/${TOPIC_NAME}.

Registros de auditoria do Cloud

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Substitua:

  • TRIGGER é o ID do gatilho ou um identificador totalmente qualificado.
  • LOCATION é o local do gatilho do Eventarc. Para evitar problemas de desempenho e residência de dados causados por um gatilho global, ele deve corresponder à localização do serviço do Google Cloud que está gerando eventos. Como alternativa, você pode definir a propriedade eventarc/location; Por exemplo: gcloud config set eventarc/location us-central1. Para mais informações, consulte Locais do Eventarc.
  • DESTINATION_RUN_SERVICE é o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço precisa estar na mesma região que o gatilho, a menos que o local do gatilho seja global. O serviço precisa estar no mesmo projeto que o gatilho e receberá eventos como solicitações POST HTTP enviadas para o caminho de URL raiz (/) sempre que o evento for acionado.
  • DESTINATION_RUN_REGION é a região na qual o serviço de destino do Cloud Run pode ser encontrado. Se não especificado, presume-se que o serviço está na mesma região que o gatilho
  • SERVICE_NAME é o identificador do serviço do Google Cloud;
  • METHOD_NAME é o identificador da operação.
  • PROJECT_NUMBER é o número do projeto do Google Cloud.

Observações:

  • Essas sinalizações são necessárias:
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • Para ver uma lista dos eventos de registros de auditoria aceitos pelo Eventarc, incluindo valores serviceName e methodName, consulte Eventos compatíveis com o Eventarc.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em um --event-filters=[ATTRIBUTE=VALUE,...] ou repetir a sinalização para adicionar mais filtros. Somente eventos que correspondam a todos os filtros são enviados para o destino. Caracteres curinga e expressões regulares não são aceitos. Consulte Como determinar filtros de evento para registros de auditoria do Cloud.
  • A sinalização --service-account é usada para especificar o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho.
  • Opcionalmente, é possível filtrar eventos para um recurso específico usando a sinalização --event-filters="resourceName=VALUE" e especificando o caminho completo para o recurso. Omita a sinalização para recursos criados dinamicamente com identificadores gerados no momento da criação.
  • Como opção, é possível especificar um caminho relativo no serviço de destino do Cloud Run para o qual os eventos do gatilho precisam ser enviados usando a sinalização --destination-run-path.

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.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.buckets.update" \
      --event-filters="resourceName=projects/_/buckets/eventarc-bucket/objects/random.txt" \
      --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Isso cria um gatilho chamado helloworld-trigger para registros de auditoria que são gravados por storage.googleapis.com e para a operação identificada como storage.buckets.update.

Como criar um gatilho por meio do console

É possível usar o Console do Cloud para criar gatilhos com filtros.

  1. No console do Cloud, acesse o Cloud Run.

    Acesse o Cloud Run

  2. Na lista de serviços, clique em um serviço.

  3. Clique na guia Gatilhos e clique em Adicionar gatilho.

  4. Na lista suspensa Escolher um evento, você encontra todos os serviços e eventos compatíveis:

    Como adicionar um gatilho por meio do console

  5. Depois de selecionar um serviço, você poderá escolher um evento.

    Por exemplo, selecione Cloud Storage > storage.objects.create.

    Você precisa identificar qual evento filtrar. Consulte Como determinar filtros de evento para registros de auditoria do Cloud.

  6. Se você selecionar o evento Tópico do Cloud Pub/Sub, poderá selecionar um tópico existente ou criar um novo para o gatilho.

    Por padrão, as assinaturas do Pub/Sub criadas para o Eventarc persistem, independentemente da atividade e não expiram. Para alterar a duração da inatividade, consulte Como gerenciar assinaturas.
  7. Para todos os outros eventos, no campo Nome completo do recurso, existe a opção de especificar o caminho completo para o recurso.

    Por exemplo, digite projects/_/buckets/eventarc-bucket/objects/random.txt.

    Deixe o campo em branco para recursos criados dinamicamente com identificadores gerados no momento da criação.

  8. Escolha um local para receber os eventos.

  9. Configure qual conta de serviço que invoca o serviço do Cloud Run e especifique o Caminho do URL do serviço para enviar a solicitação de entrada.

    Para destinos do Cloud Run, essa conta de serviço é usada para gerar tokens de identidade ao invocar o serviço.

  10. Depois de criar o gatilho, verifique a integridade garantindo que haja uma marca de seleção na guia Gatilhos.

A seguir