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 compatíveis.
Preparar para criar um gatilho
Antes de criar um gatilho, atenda aos seguintes pré-requisitos:
Console
No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
Ative as APIs Cloud Logging, Eventarc e Eventarc Publishing.
Se aplicável, ative a API relacionada aos eventos diretos. Por exemplo, para eventos Firebase Alerts , ative a APIFirebase Alerts .
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.
No Console do Google Cloud, acesse a página Criar conta de serviço.
Selecione o projeto.
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
.Clique em Criar e continuar.
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.Clique em Continuar.
Para concluir a criação da conta de serviço, clique em Concluído.
gcloud
In the Google Cloud console, 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.
Ative as APIs Cloud Logging, Eventarc e Eventarc Publishing.
gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com
Se aplicável, ative a API relacionada aos eventos diretos. Por exemplo, para eventos Firebase Alerts , ative
firestore.googleapis.com
.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.
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.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
- No Console do Google Cloud, acesse a página Gatilhos do Eventarc.
- Clique em Criar gatilho.
- 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.
- Em Tipo de gatilho, selecione Fontes do Google.
- 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.
- Na lista Tipo de evento, nos eventos Diretos, selecione um tipo de evento.
- 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.
- Na lista Região, selecione global (global).
Saiba mais em Locais do Eventarc.
- No campo Atributo 1, o ID do recurso
alerttype atua como um
filtro de evento. Selecione um operador para esse filtro:
- Igual
- Padrão de caminho
Para mais informações, consulte Entender os padrões de caminho.
- 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 pagamentobilling.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 projetocrashlytics.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 appcrashlytics.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.
- Se preferir, filtre eventos para um ID específico do app do Firebase. Clique em add Adicionar filtro e especifique o appid.
- 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.
- Na lista Destino do evento, selecione Cloud Run.
- 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. - 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
. - Clique em Criar.
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 pagamentobilling.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 projetocrashlytics.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 appcrashlytics.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.
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 serapplication/json
ouapplication/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:
- A sinalização
--location
precisa serglobal
. Saiba mais em Locais do Eventarc.
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
No Console do Google Cloud, acesse a página Gatilhos do Eventarc.
Confira nesta página os gatilhos em todos os locais e os detalhes como nomes, regiões, provedores de eventos, destinos e muito mais.
Para filtrar os gatilhos, siga estas etapas:
- Clique em Filtrar ou no campo Filtrar gatilhos.
- 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.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.