Encaminhar eventos de alertas do Firebase para o Cloud Run

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.

O Eventarc entrega eventos ao receptor de eventos no formato CloudEvents por uma solicitação HTTP.

Nestas instruções, mostramos como configurar o roteamento de eventos para o serviço do Cloud Run que é acionado por um evento Firebase Alerts direto. Para saber mais, consulte a lista de eventos diretos com suporte.

Preparar para criar um gatilho

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

Console

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

    Acessar o seletor de projetos

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

    Ative as APIs

  3. Se aplicável, ative a API relacionada aos eventos diretos. Por exemplo, para eventos Firebase Alerts, ative a API Firebase Alerts.

  4. Se você ainda não tiver uma, crie uma conta de serviço gerenciada pelo usuário e conceda a ela os papéis e as permissões necessários para que o Eventarc gerencie os eventos do serviço de destino.

    1. No Console do Google Cloud, acesse a página Criar conta de serviço.

      Acesse "Criar conta de serviço"

    2. Selecione o projeto.

    3. No campo Nome da conta de serviço, insira um nome. O Console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

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

    4. Clique em Criar e continuar.

    5. Para fornecer o acesso apropriado, na lista Selecionar um papel, escolha os papéis necessários do Identity and Access Management (IAM) a serem concedidos à conta de serviço no caso de invocações autenticadas ou não autenticadas. Para mais informações, consulte Papéis e permissões para os destinos do Cloud Run.

      Para papéis adicionais, clique em Adicionar outro papel e adicione cada papel adicional.

    6. Clique em Continuar.

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

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  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 aos eventos diretos. Por exemplo, para eventos Firebase Alerts, ative firestore.googleapis.com.

  4. Se você ainda não tiver uma, crie uma conta de serviço gerenciada pelo usuário e conceda a ela os papéis e as permissões necessários para que o Eventarc gerencie os eventos do 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. 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.

    2. Conceda os papéis ou as permissões do Identity and Access Management (IAM) necessários para invocações autenticadas ou não autenticadas. Para mais informações, consulte Papéis e permissões para destinos do Cloud Run.

Criar um gatilho

É possível criar um gatilho do Eventarc usando a CLI do Google Cloud ou o console do Google Cloud.

Console

  1. No Console do Google Cloud, acesse a página Gatilhos do Eventarc.

    Acessar gatilhos

  2. Clique em Criar gatilho.
  3. 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 hífens.

  4. Em Tipo de gatilho, selecione Fontes do Google.
  5. Na lista Provedor de eventos, selecione Firebase Alerts.

    O nome do provedor de eventos usado na documentação do Google Cloud associada pode não ter o prefixo Cloud ou Google Cloud. Por exemplo, no console, o Memorystore para Redis é chamado de Google Cloud Memorystore para Redis.

  6. Na lista Tipo de evento, nos eventos Diretos, selecione um tipo de evento.
  7. Para especificar a codificação do payload do evento, na lista Tipo de conteúdo de dados do evento, selecione application/json ou application/protobuf.

    Um payload de evento formatado em JSON é maior que um formatado em Protobuf. Isso pode afetar a confiabilidade dependendo do destino do evento e dos limites do tamanho do evento. Saiba mais em Problemas conhecidos.

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

    Saiba mais em Locais do Eventarc.

  9. No campo Atributo 1, o ID do recurso alerttype atua como um filtro de evento. Selecione um operador para esse filtro:
  10. No campo Valor do atributo 1, digite 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.missingSymbolFile: o evento é enviado quando o Firebase Crashlytics determina que não tem os símbolos de depuração adequados para simbolizar um relatório de erros recebido.
    • 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.
    • performance.threshold: o evento é enviado quando o desempenho de uma métrica ultrapassa o limite definido.
  11. Se preferir, filtre eventos para um ID específico do app do Firebase. Clique em Adicionar filtro e especifique o appid.
  12. Selecione a conta de serviço que vai invocar seu serviço ou fluxo de trabalho.

    ou crie uma nova conta de serviço.

    Ele especifica o e-mail da conta de serviço do Identity and Access Management (IAM) associado ao gatilho e aos quais você já concedeu papéis específicos exigidos pelo Eventarc.

  13. Na lista Destino do evento, selecione Cloud Run.
  14. Selecione um serviço.

    Esse é o nome do serviço que recebe os eventos do gatilho. 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.

  15. Se preferir, 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. Por exemplo: /, /route, route, route/subroute.

  16. Clique em Criar.
  17. Depois que um gatilho é criado, os filtros da origem de eventos não podem ser modificados. Crie um novo gatilho e exclua o antigo. Para mais informações, consulte Gerenciar acionadores.

gcloud

Para criar um gatilho, execute um comando gcloud eventarc triggers create com as flags obrigatórias e opcionais.

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" \
    --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.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: (opcional) 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 valores a seguir:
    • 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.missingSymbolFile: o evento é enviado quando o Firebase Crashlytics determina que não tem os símbolos de depuração adequados para simbolizar um relatório de erros recebido.
    • 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.
    • performance.threshold: o evento é enviado quando o desempenho de uma métrica ultrapassa o limite definido.
    O operador de ALERT_TYPE precisa ser um destes:
    • Igual por exemplo, --event-filters="alerttype=appDistribution.inAppFeedback"
    • Padrão de caminho. Por exemplo, --event-filters-path-pattern="alerttype=appDistribution.*" ou --event-filters-path-pattern="alerttype=crashlytics.new*".

      Para mais informações, consulte Entender os padrões de caminho.

  • EVENT_DATA_CONTENT_TYPE: (opcional) a codificação do payload do evento. Os valores podem ser application/json ou application/protobuf. A codificação padrão é application/json.

    Um payload de evento formatado em JSON é maior do que um formatado em Protobuf. Isso pode afetar a confiabilidade dependendo do destino do evento e dos limites dele no tamanho. Saiba mais em Problemas conhecidos.

  • SERVICE_ACCOUNT_NAME: o nome da conta de serviço gerenciada pelo usuário.
  • PROJECT_ID: é seu ID do projeto no Google Cloud.

Observações:

  • Estas flags são obrigatórias:

    • --event-filters="type=google.firebase.firebasealerts.alerts.v1.published"
    • --event-filters="alerttype=ALERT_TYPE" ou --event-filters-path-pattern="alerttype=ALERT_TYPE"
  • Opcionalmente, é possível filtrar eventos de um ID de app específico do Firebase usando a flag --event-filters="appid=APP_ID" e especificando uma correspondência exata.

  • Após a criação de um gatilho, o tipo do filtro de evento não pode ser alterado. Para um tipo de evento diferente, crie um novo gatilho.
  • 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=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.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.

Terraform

É possível criar um gatilho para um destino do Cloud Run usando o Terraform. Para mais detalhes, acesse Criar um gatilho usando o Terraform.

Listar um gatilho

É possível confirmar a criação de um gatilho listando os gatilhos do Eventarc usando a CLI do Google Cloud ou o console do Google Cloud.

Console

  1. No Console do Google Cloud, acesse a página Gatilhos do Eventarc.

    Acessar gatilhos

    Confira nesta página os gatilhos em todos os locais e os detalhes como nomes, regiões, provedores de eventos, destinos e muito mais.

  2. Para filtrar os gatilhos, siga estas etapas:

    1. Clique em Filtrar ou no campo Filtrar gatilhos.
    2. Na lista Propriedades, selecione uma opção para filtrar os gatilhos.

    É possível selecionar uma única propriedade ou usar o operador lógico OR para adicionar mais propriedades.

  3. Para classificar gatilhos, ao lado de qualquer cabeçalho de coluna com suporte, clique em Ordenar.

gcloud

Execute o comando a seguir para listar os gatilhos:

gcloud eventarc triggers list --location=-

Esse comando lista os gatilhos em todos os locais e inclui detalhes como nomes, tipos, destinos e status.

A seguir