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 Cloud Storage 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 Cloud Storage , ative a APICloud Storage .
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 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 Google Cloud console 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.
Conceda o papel de publisher do Pub/Sub ao agente de serviço do Cloud Storage. Normalmente, é o agente
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com. É possível recuperar o endereço de e-mail do agente de serviço do Cloud Storage.No console do Google Cloud , acesse a página IAM.
Na linha do agente de serviço do Cloud Storage, clique em Editar principal. Se o agente de serviço não estiver listado, prossiga para a próxima etapa. O painel Editar acesso será aberto.
- Clique em addAdicionar outro papel e pesquise o papel publisher do Pub/Sub.
- Selecione o papel.
- Clique em Salvar.
Se o agente de serviço não estiver listado, clique em Conceder acesso. O painel Conceder acesso será aberto.
- No campo Novos principais, insira o endereço de e-mail do agente de serviço.
- Na lista Selecionar um papel, procure o papel publisher do Pub/Sub.
- Selecione o papel.
- Clique em Salvar.
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 Cloud Storage , ative
storage.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_NAMEpelo 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.
Atribua o papel
pubsub.publisherà conta de serviço do Cloud Storage:SERVICE_ACCOUNT="$(gcloud storage service-agent --project=PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/pubsub.publisher"
Criar um gatilho
É possível criar um gatilho do Eventarc usando a Google Cloud CLI ou o console Google Cloud .
Console
- No console 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
Cloud Storage.
O nome do provedor de eventos usado na documentação doGoogle 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:
- google.cloud.storage.object.v1.archived: o evento é enviado quando uma versão ativa de um objeto se torna uma versão não atual. Para mais informações, consulte Controle de versão de objetos.
- google.cloud.storage.object.v1.delete: o evento é enviado quando um objeto é excluído de forma temporária. Para mais informações, consulte Exclusão reversível.
- 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 o [metadata](/storage/docs/metadata) de um objeto existente é alterado.
- Na lista Tipo de conteúdo de dados do evento, selecione a codificação
do payload do evento.
Para eventos diretos de Cloud Storage, ele precisa ser application/json.
- Especifique ou procure o identificador exclusivo global do
bucket do Cloud Storage.
O bucket do Cloud Storage precisa residir no mesmo projeto doGoogle Cloud e na região ou multirregião que o gatilho do Eventarc.
- 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. O bucket do Cloud Storage precisa estar no mesmo projeto Google Cloud e região ou multirregião que o gatilho do Eventarc.
Os eventos são entregues usando notificações do Pub/Sub no 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. Confira mais cotas e limitações na página Cotas e limites do Cloud Storage. - 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, na sigla em inglês) 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. - Se quiser adicionar um rótulo, clique em Adicionar rótulo. Os rótulos são pares de chave-valor que ajudam você a organizar seus recursos doGoogle Cloud . Para mais informações, consulte O que são rótulos?
- 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=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=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Substitua:
TRIGGER: o ID do gatilho ou um identificador totalmente qualificado.LOCATION: o local do gatilho do Eventarc. Como alternativa, é possível definir a propriedadeeventarc/location; por exemplo:gcloud config set eventarc/location us-central1.O bucket do Cloud Storage precisa residir no mesmo Google Cloud projeto e região ou multirregião que o gatilho do Eventarc. Saiba mais em Locais 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: (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 EVENT_FILTER_TYPE: o identificador do evento do Cloud Storage e pode ser um dos seguintes:google.cloud.storage.object.v1.finalized: o 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 se torna uma versão não atual. Para mais informações, consulte Controle de versão de objetos.google.cloud.storage.object.v1.deleted: esse evento é enviado quando um objeto é excluído de forma temporária. Para mais informações, consulte Exclusão reversível.google.cloud.storage.object.v1.metadataUpdated: o evento é enviado quando os metadados de um objeto existente mudam.
BUCKETé o identificador exclusivo global do bucket do Cloud Storage.SERVICE_ACCOUNT_NAME: o nome da conta de serviço gerenciada pelo usuário.PROJECT_ID: o ID do projeto do Google Cloud .
Observações:
- Para eventos diretos de Cloud Storage, a codificação
do payload do evento é
application/json. - Estas flags são necessárias:
--event-filters="type=EVENT_FILTER_TYPE"--event-filters="bucket=BUCKET"
- Cada gatilho pode ter vários filtros de eventos separados por vírgula em uma sinalização
--event-filters=[ATTRIBUTE=VALUE,...] ou repita 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. - 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.
- 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. - 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.cloud.storage.object.v1.finalized" \
--event-filters="bucket=my-bucket" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Esse comando cria um gatilho chamado helloworld-trigger para o
bucket do Cloud Storage my-bucket e o evento
identificado como google.cloud.storage.object.v1.finalized.
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 Google Cloud CLI ou o console Google Cloud .
Console
No console 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
ORpara 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.