Criar um gatilho para o Cloud Run

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

É possível criar um gatilho do Eventarc para que o serviço do Cloud Run receba notificações de um evento especificado ou conjunto de eventos. Ao especificar filtros para o gatilho, é possível configurar o roteamento do evento, incluindo a origem do evento e o serviço de destino do Cloud Run.

As solicitações para seu serviço são acionadas pelos seguintes tipos de eventos:

É possível criar acionadores usando a CLI do Google Cloud ou por meio do Console do Google Cloud.

Algumas das etapas deste documento podem não funcionar corretamente se sua organização aplicar restrições ao ambiente do Google Cloud. Nesse caso, talvez não seja possível concluir tarefas como criar endereços IP públicos ou chaves de contas de serviço. Se você fizer uma solicitação que retorne um erro sobre restrições, veja como Desenvolver aplicativos em um ambiente restrito do Google Cloud.

Preparar para criar um gatilho

Antes de criar um gatilho, atenda aos seguintes pré-requisitos:

  1. Ative as APIs:

    gcloud services enable cloudbuild.googleapis.com \
        eventarc.googleapis.com \
        logging.googleapis.com \
        pubsub.googleapis.com \
        run.googleapis.com \
        workflows.googleapis.com
    
  2. Crie uma conta de serviço gerenciada pelo usuário se você ainda não tiver uma ou usar a conta de serviço padrão.

    SERVICE_ACCOUNT=SA_NAME
    gcloud iam service-accounts create ${SERVICE_ACCOUNT}

    Substitua SA_NAME pelo nome da conta de serviço. Ele precisa ter entre 6 e 30 caracteres e pode conter letras minúsculas, caracteres alfanuméricos e traços. Depois da criação, não é possível alterar o nome da conta de serviço.

    A conta de serviço padrão do Compute Engine está sendo usada nos exemplos nesta página.

  3. Conceda os papéis, as permissões e as sinalizações necessárias do Identity and Access Management (IAM) para invocações autenticadas e não autenticadas. Para mais informações, consulte Papéis e permissões do Eventarc.

  4. Se você estiver criando um gatilho para um evento direto do Cloud Storage, conceda o papel pubsub.publisher à conta de serviço do Cloud Storage:

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role='roles/pubsub.publisher'
    

    Substitua o PROJECT_ID pelo ID do projeto do Google Cloud. Encontre o ID do projeto na página Painel do Console do Google Cloud.

Criar um gatilho usando o gcloud

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

Eventos de 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. Se preferir, defina a propriedade eventarc/location. Por exemplo, gcloud config set eventarc/location us-central1.

    Os gatilhos dos Registros de auditoria do Cloud para o Eventarc estão disponíveis em regiões específicas e na região global, mas não em locais birregionais e multirregionais. Para evitar problemas de desempenho e de residência de dados causados por um gatilho global, o Google recomenda que o local corresponda ao do serviço do Google Cloud que está gerando eventos.

    Se você especificar o local global, receberá eventos de todos os locais que produzem correspondências para os filtros de eventos. Por exemplo, ao criar um gatilho global do Eventarc, é possível receber eventos de recursos, como buckets do Cloud Storage nas multirregiões da UE e dos EUA.

  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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 uma sinalização --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 Determinar filtros de evento para Registros de auditoria do Cloud.
  • A sinalização --service-account especifica 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. Também é possível filtrar eventos para um conjunto de recursos usando a sinalização --event-filters-path-pattern="resourceName=VALUE" e especificando o padrão de caminho do recurso.
  • Como opção, especifique 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

Esse comando 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.

Eventos diretos

Cloud Storage

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --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. Se preferir, defina a propriedade eventarc/location. Por exemplo, gcloud config set eventarc/location us-central1.

    Os gatilhos do Cloud Storage para o Eventarc estão disponíveis em locais de região única, birregionais e multirregionais. O gatilho precisa estar no mesmo local que o bucket do Cloud Storage.

  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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
  • EVENT_FILTER_TYPE: o identificador do evento do Cloud Storage e pode ser um dos seguintes:
    • google.cloud.storage.object.v1.finalized: esse evento é enviado quando um novo objeto é criado (ou um objeto é substituído e uma nova geração desse objeto é criada) no bucket.
    • google.cloud.storage.object.v1.archived: esse evento é enviado quando uma versão ativa de um objeto é arquivada ou excluída. Este evento só é enviado para buckets com controle de versão.
    • google.cloud.storage.object.v1.deleted: esse evento é enviado quando um objeto é excluído permanentemente. Dependendo da configuração do controle de versão do objeto de um bucket isso significa:
      • Para buckets do controle de versões, ele só é enviado quando uma versão é excluída permanentemente (mas não quando um objeto é arquivado).
      • Para buckets sem controle de versões, ele é enviado quando um objeto é excluído ou substituído.
    • google.cloud.storage.object.v1.metadataUpdated: esse evento é enviado quando os metadados de um objeto existente mudam.
  • BUCKET: é o identificador exclusivo global do bucket do Cloud Storage
  • PROJECT_NUMBER: o número do projeto do Google Cloud

Observações:

  • Essas sinalizações são necessárias:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • Depois que um gatilho é criado, EVENT_FILTER_TYPE não pode ser modificado. Crie um novo gatilho e exclua o antigo.
  • Os eventos são entregues usando notificações do Pub/Sub do Cloud Storage. A configuração de muitas notificações registradas no mesmo bucket pode esgotar o limite de notificações do bucket, conforme indicado pelo erro Cloud Storage bucket ...: Pub/Sub notification limit reached. é possível ter até 10 configurações de notificação definidas no bucket para acionar um determinado evento; Veja mais cotas e limitações na página Cotas e limites do Cloud Storage.
  • Cada gatilho pode ter vários filtros de eventos separados por vírgula em uma sinalização --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 --service-account é usada para especificar o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho.
  • Como opção, especifique 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.
  • O bucket do Cloud Storage precisa residir no mesmo projeto do Google Cloud e na região ou multirregião que o gatilho do Eventarc.

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.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Esse comando cria um gatilho chamado helloworld-trigger para o bucket do Cloud Storage my-project-bucket e o evento identificado como google.cloud.storage.object.v1.finalized.

Alertas do Firebase

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado
  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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
  • ALERT_TYPE: o tipo de alerta do Firebase e pode ser um dos seguintes:
    • appDistribution.inAppFeedback: o evento é enviado quando um testador envia feedback no app para um determinado app.
    • appDistribution.newTesterIosDevice: o evento é enviado quando um novo dispositivo testador do iOS está registrado para um determinado app.
    • billing.planAutomatedUpdate: o evento é enviado quando o plano de faturamento de um projeto do Firebase é atualizado automaticamente. Por exemplo, quando é feito o downgrade de um plano devido a problemas de pagamento
    • billing.planUpdate: o evento é enviado quando o plano de faturamento de um projeto do Firebase é modificado por um usuário. por exemplo, quando uma conta de faturamento é anexada ou desanexada de um projeto
    • crashlytics.newAnrIssue: o evento é enviado quando um app tem um novo erro de "O app não está respondendo" (ANR, na sigla em inglês), e não a nenhum evento subsequente e idêntico.
    • crashlytics.newFatalIssue: o evento é enviado quando um app tem uma nova falha fatal (não para qualquer evento subsequente e idêntico).
    • crashlytics.newNonfatalIssue: o evento é enviado quando um app tem um novo erro não fatal (não para eventos idênticos e subsequentes).
    • crashlytics.regression: o evento é enviado quando ocorre uma falha no app devido a um problema marcado como fechado em uma versão anterior do app
    • crashlytics.stabilityDigest: o evento é enviado quando há uma notificação dos principais problemas em alta no Crashlytics.
    • crashlytics.velocity: o evento é enviado quando um único problema é responsável por causar uma falha em um número significativo de sessões do app.
  • PROJECT_NUMBER: o número do projeto do Google Cloud

Observações:

  • A sinalização --location precisa ser global. Saiba mais em Locais do Eventarc.
  • As sinalizações --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" e --event-filters="alerttype=ALERT_TYPE" são obrigatórias.
  • Opcionalmente, é possível filtrar eventos de um ID de app específico do Firebase usando a sinalização --event-filters="appid=APP_ID" e especificando uma correspondência exata.
  • Depois que um gatilho é criado, não é possível modificar o tipo de filtro do evento. Crie um novo gatilho e exclua o antigo.
  • 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.
  • Como opção, especifique 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=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Esse comando cria um gatilho chamado helloworld-trigger para o evento identificado como google.firebase.firebasealerts.alerts.v1.published e para um tipo de alerta crashlytics.velocity.

Firebase Realtime Database

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="instance=INSTANCE" \
    --event-filters-path-pattern="ref=REF" \
    --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. Se preferir, defina a propriedade eventarc/location. Por exemplo, gcloud config set eventarc/location us-central1. Os gatilhos do Firebase Realtime Database para Eventarc estão disponíveis apenas nos seguintes locais:

    • us-central1
    • europe-west1
    • asia-southeast1

    O gatilho precisa estar no mesmo local da instância do Firebase Realtime Database. Para mais informações, consulte Locais do Realtime Database.

  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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
  • EVENT_FILTER_TYPE: o identificador do evento do Firebase Realtime Database que pode ser um dos seguintes:

    • google.firebase.database.ref.v1.created: o evento é enviado quando os dados são criados no banco de dados
    • google.firebase.database.ref.v1.updated: o evento é enviado quando os dados são atualizados no banco de dados
    • google.firebase.database.ref.v1.deleted: o evento é enviado quando os dados são excluídos do banco de dados
    • google.firebase.database.ref.v1.written: o evento é enviado quando os dados são criados, atualizados ou excluídos no banco de dados
  • INSTANCE: uma única instância de banco de dados e o operador podem ser um dos seguintes:

    • Igual por exemplo, --event-filters="instance=INSTANCE"
    • Padrão do caminho por exemplo, --event-filters-path-pattern="instance=INSTANCE". Para mais informações, consulte Entender os padrões de caminho.
  • REF: o caminho dentro da instância do banco de dados de que você quer receber eventos quando os dados são criados, atualizados ou excluídos nesse caminho ou em qualquer um dos filhos.

  • PROJECT_NUMBER: o número do projeto do Google Cloud

Observações:

  • Essas sinalizações são necessárias:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="instance=INSTANCE" ou --event-filters-path-pattern="instance=INSTANCE"
    • --event-filters-path-pattern="ref=REF"
  • Depois que um gatilho é criado, não é possível modificar o tipo de filtro do evento. Crie um novo gatilho e exclua o antigo.
  • 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.
  • Como opção, especifique 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.firebase.database.ref.v1.created" \
    --event-filters="instance=test-instance" \
    --event-filters-path-pattern="ref=users/*" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Esse comando cria um gatilho chamado helloworld-trigger para o evento identificado como google.firebase.database.ref.v1.created.

Configuração remota do Firebase

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado
  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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_NUMBER: o número do projeto do Google Cloud

Observações:

  • A sinalização --location precisa ser global. Saiba mais em Locais do Eventarc.
  • A sinalização --event-filters é obrigatória e o tipo precisa ser google.firebase.remoteconfig.remoteConfig.v1.updated. Um evento é enviado quando um modelo do Configuração remota é atualizado.
  • Depois que um gatilho é criado, não é possível modificar o tipo de filtro do evento. Crie um novo gatilho e exclua o antigo.
  • 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.
  • Como opção, especifique 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=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Esse comando cria um gatilho chamado helloworld-trigger para o evento identificado como google.firebase.remoteconfig.remoteConfig.v1.updated.

Firebase Test Lab

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado
  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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_NUMBER: o número do projeto do Google Cloud

Observações:

  • A sinalização --location precisa ser global. Saiba mais em Locais do Eventarc.
  • A sinalização --event-filters é obrigatória e o tipo precisa ser google.firebase.testlab.testMatrix.v1.completed. Um evento é enviado quando uma TestMatrix é concluída.
  • Depois que um gatilho é criado, o tipo de filtro de evento não pode ser modificado. Crie um novo gatilho e exclua o antigo.
  • 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.
  • Como opção, especifique 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=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Esse comando cria um gatilho chamado helloworld-trigger para o evento identificado como google.firebase.testlab.testMatrix.v1.completed.

Mensagens do 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_NAME

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado
  • LOCATION: a localização do gatilho do Eventarc. Se preferir, defina a propriedade eventarc/location. Por exemplo, gcloud config set eventarc/location us-central1.

    Os gatilhos do Pub/Sub para o Eventarc estão disponíveis apenas em locais de região única. Não é possível criar um gatilho global do Eventarc.

  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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 do Google Cloud.
  • TOPIC_NAME: o nome do tópico do Pub/Sub atual. 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 uma sinalização --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, especifique 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}

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

Mensagens do 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"

Substitua:

  • TRIGGER: o ID do gatilho ou um identificador totalmente qualificado
  • LOCATION: a localização do gatilho do Eventarc. Se preferir, defina a propriedade eventarc/location. Por exemplo, gcloud config set eventarc/location us-central1.

    Os gatilhos do Pub/Sub para o Eventarc estão disponíveis apenas em locais de região única. Não é possível criar um gatilho global do Eventarc.

  • DESTINATION_RUN_SERVICE: o nome do serviço do Cloud Run que recebe os eventos do gatilho. O serviço pode estar em qualquer um dos locais compatíveis com o Cloud Run e não precisa estar no mesmo local que o gatilho. No entanto, 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 gerado.
  • DESTINATION_RUN_REGION: a região em que 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 uma sinalização --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, especifique 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.

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

Criar um gatilho pelo console

É possível usar a página do console do Cloud Run para criar gatilhos nos registros de auditoria do Cloud e nos tipos de evento do Pub/Sub. No entanto, para criar gatilhos para eventos diretos (por exemplo, do Cloud Storage ou dos alertas do Firebase), use a CLI gcloud ou a página do console do Eventarc

  1. Se necessário, ative a API Eventarc.

    Ativar a API

  2. No console, acesse o Cloud Run.

    Acesse o Cloud Run

  3. Na lista de serviços, clique em um serviço atual ou crie um novo.

  4. Na página "Detalhes do serviço", clique na guia Acionadores.

  5. Clique em Adicionar gatilho do Eventarc.

    O painel Gatilho do Eventarc é aberto. Para determinar a melhor maneira de rotear eventos, consulte Opções de roteamento de eventos.

  6. Digite um Nome de gatilho.

    Esse é o ID do gatilho e precisa começar com uma letra. Ele pode conter até 63 letras minúsculas, números ou hifens.

  7. Selecione um Provedor de eventos.

    Este é o serviço do Google ou de parceiro que é a origem dos eventos. Por exemplo, selecione BigQuery.

  8. Selecione um evento.

    • Eventos personalizados: aplicam-se a um provedor de eventos do Cloud Pub/Sub
    • Eventos diretos: aplicável apenas a alguns provedores de eventos
    • Por meio dos eventos de registros de auditoria do Cloud: aplica-se a todos os provedores de eventos

    Personalizado

    As solicitações para seu serviço são acionadas quando uma mensagem é publicada em um tópico do Pub/Sub. Isso se aplica a um provedor de eventos do Cloud Pub/Sub.

    1. Nos eventos listados em Personalizado, selecione Tópico do Cloud Pub/Sub.

    2. Selecione um tópico existente ou aceite o padrão Nenhum para que um novo tópico seja criado para o gatilho.

      O tópico atual do Pub/Sub precisa estar no mesmo projeto que 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.

      Como prática recomendada, não reutilize o tópico do Pub/Sub criado por um gatilho porque a exclusão de um gatilho do Eventarc também exclui todos os tópicos do Pub/Sub criados. pelo gatilho.

    3. Selecione uma Região.

      Os gatilhos do Pub/Sub para o Eventarc estão disponíveis apenas em locais de região única. Não é possível criar um gatilho global do Eventarc.

    Direta

    Cloud Storage

    As solicitações para seu serviço são acionadas em resposta a um evento dentro de um bucket do Cloud Storage: criação de objetos, exclusão, arquivamento e atualizações de metadados. Isso se aplica a um provedor de eventos do Cloud Storage.

    1. Nos eventos listados em Nativo, selecione uma das seguintes opções:

      • google.cloud.storage.object.v1.archived: o evento é enviado quando uma versão ativa de um objeto é arquivada ou excluída. Este só é enviado para buckets com controle de versão.
      • google.cloud.storage.object.v1.delete: o evento é enviado quando um objeto é excluído permanentemente. Dependendo da configuração do controle de versão do objeto de um bucket isso significa:
        • Para buckets do controle de versões, ele só é enviado quando uma versão é excluída permanentemente (mas não quando um objeto é arquivado).
        • Para buckets sem controle de versões, ele é enviado quando um objeto é excluído ou substituído.
      • google.cloud.storage.object.v1.finalized: o evento é enviado quando um novo objeto é criado (ou um objeto existente é substituído e uma nova geração desse objeto é criado) no bucket
      • google.cloud.storage.object.v1.metadataUpdated: o evento é enviado quando os metadados de um objeto existente mudam.
    2. Especifique ou procure o identificador exclusivo global do bucket do Cloud Storage.

      O bucket do Cloud Storage precisa residir no mesmo projeto do Google Cloud e na região ou multirregião que o gatilho do Eventarc.

    3. Selecione uma Região.

      Os gatilhos do Cloud Storage para o Eventarc estão disponíveis em locais de região única, birregionais e multirregionais. Observação: o bucket do Cloud Storage precisa residir no mesmo projeto e região ou multirregião do Google Cloud que o gatilho do Eventarc.

    Os eventos são entregues usando notificações do Pub/Sub do Cloud Storage. A configuração de muitas notificações registradas no mesmo bucket pode esgotar o limite de notificações do bucket, conforme indicado pelo erro Cloud Storage bucket ...: Pub/Sub notification limit reached. é possível ter até 10 configurações de notificação definidas no bucket para acionar um determinado evento; Veja mais cotas e limitações na página Cotas e limites do Cloud Storage.

    Alertas do Firebase

    As solicitações para seu serviço são acionadas em resposta a um evento quando um alerta do Firebase é publicado por um serviço desse tipo.

    1. Nos eventos listados em Direto, selecione google.firebase.firebasealerts.alerts.v1.published.

    2. Na lista Região, selecione global (global).

      Saiba mais em Locais do Eventarc.

    3. Na seção Filtros, na lista alerttype, selecione uma das seguintes opções:

      • appDistribution.inAppFeedback: o evento é enviado quando um testador envia feedback no app para um determinado app.
      • appDistribution.newTesterIosDevice: o evento é enviado quando um novo dispositivo testador do iOS está registrado para um determinado app.
      • billing.planAutomatedUpdate: o evento é enviado quando o plano de faturamento de um projeto do Firebase é atualizado automaticamente. Por exemplo, quando é feito o downgrade de um plano devido a problemas de pagamento
      • billing.planUpdate: o evento é enviado quando o plano de faturamento de um projeto do Firebase é modificado por um usuário. por exemplo, quando uma conta de faturamento é anexada ou desanexada de um projeto
      • crashlytics.newAnrIssue: o evento é enviado quando um app tem um novo erro de "O app não está respondendo" (ANR, na sigla em inglês), e não a nenhum evento subsequente e idêntico.
      • crashlytics.newFatalIssue: o evento é enviado quando um app tem uma nova falha fatal (não para qualquer evento subsequente e idêntico).
      • crashlytics.newNonfatalIssue: o evento é enviado quando um app tem um novo erro não fatal (não para eventos idênticos e subsequentes).
      • crashlytics.regression: o evento é enviado quando ocorre uma falha no app devido a um problema marcado como fechado em uma versão anterior do app
      • crashlytics.stabilityDigest: o evento é enviado quando há uma notificação dos principais problemas em alta no Crashlytics.
      • crashlytics.velocity: o evento é enviado quando um único problema é responsável por causar uma falha em um número significativo de sessões do app.

    4. Se preferir, filtre eventos para um ID específico do app do Firebase. Clique em Adicionar filtro e especifique o appid.

      Precisa ser uma correspondência exata.

    Firebase Realtime Database

    As solicitações para seu serviço são acionadas em resposta a um evento quando os dados são criados, atualizados ou excluídos no Firebase Realtime Database.

    1. Nos eventos listados em Nativo, selecione uma das seguintes opções:

      • google.firebase.database.ref.v1.created: o evento é enviado quando os dados são criados no banco de dados
      • google.firebase.database.ref.v1.updated: o evento é enviado quando os dados são atualizados no banco de dados
      • google.firebase.database.ref.v1.deleted: o evento é enviado quando os dados são excluídos do banco de dados.
      • google.firebase.database.ref.v1.grava: o evento é enviado quando os dados são criados, atualizados ou excluídos do banco de dados.
    2. Na lista Região, selecione uma região.

      Observe que essa região precisa corresponder à região da instância do Firebase Realtime Database. Saiba mais em Locais do Eventarc.

    3. Na seção Filtros, selecione o seguinte:

      1. Para o atributo instance do banco de dados, selecione uma das seguintes opções como o operador:
      2. No campo Valor de atributo 1, digite o nome da instância do banco de dados que receberá os eventos. Dependendo do operador escolhido na etapa anterior, o valor do atributo precisa ser o nome da instância do banco de dados exatamente como está ou em um formato de padrão de caminho.
      3. Para o atributo ref, selecione o operador como Padrão de caminho.
      4. No campo Valor de atributo 2, digite o caminho na instância do banco de dados para receber eventos de criação, atualização ou exclusão de dados nesse caminho ou em qualquer um dos filhos.

    Configuração remota do Firebase

    As solicitações para seu serviço são acionadas em resposta a um evento quando um modelo do Configuração remota é atualizado.

    1. Nos eventos listados em Direto, selecione google.firebase.remoteconfig.remoteConfig.v1.updated.

    2. Na lista Região, selecione global (global).

      Saiba mais em Locais do Eventarc.

    Firebase Test Lab

    As solicitações para seu serviço são acionadas em resposta a um evento quando uma TestMatrix é concluída.

    1. Nos eventos listados em Direto, selecione google.firebase.testlab.testMatrix.v1.completed.

    2. Na lista Região, selecione global (global).

      Saiba mais em Locais do Eventarc.

    Via Registros de auditoria do Cloud

    As solicitações para seu serviço são acionadas quando um registro de auditoria é criado e corresponde aos critérios de filtro do acionador. Esse tipo de evento se aplica a todos os provedores de eventos.

    1. Nos eventos listados em Por meio dos registros de auditoria do Cloud, selecione um.

    2. Selecione uma destas opções:

      • Qualquer recurso: este é o padrão e inclui recursos criados dinamicamente que têm identificadores gerados no momento da criação.

      • Recurso específico: é necessário fornecer o nome completo do recurso.

      • Padrão de caminho: é possível filtrar recursos usando um padrão de caminho. Por exemplo, digite projects/_/buckets/eventarc-bucket/objects/random.txt ou projects/_/buckets/**/r*.txt.

    3. Selecione uma Região.

      Os gatilhos dos Registros de auditoria do Cloud para o Eventarc estão disponíveis em regiões específicas e na região global, mas não em locais birregionais e multirregionais. Para evitar problemas de desempenho e de residência de dados causados por um gatilho global, recomendamos que o local corresponda ao do serviço do Google Cloud que está gerando eventos.

      Se você especificar o local global, receberá eventos de todos os locais aos quais os filtros de evento correspondem. Por exemplo, ao criar um gatilho global do Eventarc, é possível receber eventos de recursos nas multirregiões da UE e do EUA.

    Para mais informações sobre como capturar eventos acionados quando um registro de auditoria é criado e corresponde aos critérios do filtro, consulte Determinar filtros de evento para os registros de auditoria do Cloud.

  9. Selecione a conta de serviço que invoca o serviço do Cloud Run.

    Ou crie uma nova conta de serviço.

    Ele especifica o e-mail da conta de serviço do IAM associado ao gatilho. Para destinos do Cloud Run, essa conta de serviço é usada para gerar tokens de identidade ao invocar o serviço.

  10. Se quiser, especifique o caminho do URL do serviço para enviar a solicitação recebida.

    Esse é o caminho relativo no serviço de destino para o qual os eventos do gatilho precisam ser enviados. Exemplo: /, /route, route, route/subroute.

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

A seguir