Acionadores do Cloud Storage (1.ª geração)

Nas funções do Cloud Run, um acionador do Cloud Storage permite que uma função seja chamada em resposta a alterações no Cloud Storage. Quando especifica um acionador do Cloud Storage para uma função, escolhe um tipo de evento e especifica um contentor do Cloud Storage. A sua função é chamada sempre que ocorre uma alteração num objeto (ficheiro) no contentor especificado.

.

Os seguintes tipos de eventos do Cloud Storage são suportados:

Evento Tipo de evento Descrição
Objeto finalizado
  • google.storage.object.finalize
Ocorre quando é criado um novo objeto ou um objeto existente é substituído e é criada uma nova geração desse objeto.
Objeto eliminado
  • google.storage.object.delete
Ocorre quando um objeto é eliminado temporariamente. Para mais informações, consulte o artigo Eliminação temporária.
Objeto arquivado
  • google.storage.object.archive
Ocorre quando uma versão publicada de um objeto se torna uma versão não atual. Para mais informações, consulte o artigo Controlo de versões de objetos.
Metadados do objeto atualizados
  • google.storage.object.metadataUpdate
Ocorre quando os metadados de um objeto existente mudam.

Para que uma função use um acionador do Cloud Storage, tem de ser implementada como uma função orientada por eventos:

O repositório de eventos Google contém recursos adicionais para trabalhar com dados de eventos.

Implementação

Pode especificar um acionador do Cloud Storage quando implementar uma função. Consulte o artigo Implemente uma função do Cloud Run para ver instruções gerais sobre como implementar uma função e consulte o seguinte para ver informações adicionais específicas da configuração de acionadores do Cloud Storage durante a implementação.

gcloud

Se estiver a implementar através da CLI gcloud, pode usar o tipo de evento Objeto finalizado do Cloud Storage com as seguintes flags:

gcloud functions deploy YOUR_FUNCTION_NAME \
--no-gen2 \
--trigger-bucket=YOUR_STORAGE_BUCKET \
[--retry] \
...
  • A flag --trigger-bucket especifica o contentor do Cloud Storage que o acionador vai monitorizar. Os eventos Object finalized neste contentor vão acionar chamadas para a sua função.
  • A flag --retry controla se as chamadas de funções com falhas são repetidas automaticamente. Consulte o artigo Voltar a tentar funções acionadas por eventos para mais informações.

Para usar tipos de eventos que não sejam Object finalized, use as seguintes flags:

  gcloud functions deploy YOUR_FUNCTION_NAME 
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...

Eventos do Cloud Storage antigo

As funções antigas nas funções do Cloud Run (1.ª geração) usam notificações de alteração de objetos antigas para acionadores do Cloud Storage:

gcloud functions deploy YOUR_FUNCTION_NAME \
--no-gen2 \
--trigger-event=providers/cloud.storage/eventTypes/object.change \
--trigger-resource=YOUR_STORAGE_BUCKET \
...

Este tipo de evento é suportado para funções antigas que já consomem estes eventos. No entanto, não recomendamos a utilização deste tipo de evento, uma vez que pode ser removido numa data futura.

Consola

Se estiver a fazer a implementação através da Google Cloud consola, pode configurar um acionador do Cloud Storage na secção Acionador:

  1. No campo Tipo de acionador, selecione Cloud Storage.
  2. No campo Tipo de evento, selecione um tipo de evento.
  3. No campo Contentor, clique em Procurar para selecionar um contentor do Cloud Storage para monitorizar o acionador. As alterações aos objetos neste contentor vão acionar chamadas para a sua função.
  4. Selecione ou desmarque a caixa de verificação Repetir em caso de falha para controlar se as chamadas de funções com falhas são repetidas automaticamente. Consulte o artigo Voltar a tentar funções acionadas por eventos para mais informações.

Entrega de eventos

Os acionadores do Cloud Storage são implementados com notificações do Pub/Sub para o Cloud Storage. Os eventos estão sujeitos às garantias de entrega de notificações do Pub/Sub.

Um contentor do Cloud Storage pode ter até 10 configurações de notificações definidas para serem acionadas para um evento específico. Exceder os limites de notificações do contentor faz com que as implementações de funções adicionais falhem com um erro semelhante ao seguinte:

Cloud Storage bucket ...: Pub/Sub notification limit reached

Pode contornar esta limitação gerindo o seu próprio tópico do Pub/Sub e registando-o para receber notificações do Cloud Storage do tipo ao qual quer que a sua função responda. Por exemplo, pode configurar uma única notificação para o evento escolhido (como a criação de objetos) num tópico do Pub/Sub. Em seguida, tenha tantos subscritores de funções quanto necessário para que o tópico processe o evento e o distribua para vários destinos. Por exemplo:

  1. Crie o seu próprio tópico Pub/Sub.
  2. Crie uma única configuração de notificação no seu contentor do Cloud Storage que é acionada num evento específico (como OBJECT_FINALIZE para a criação de objetos) e envia o evento para o seu único tópico do Pub/Sub.
  3. Crie uma função (ou funções) acionada pelo seu tópico Pub/Sub.

Consulte as cotas e os limites do Cloud Storage para saber mais acerca das limitações do Cloud Storage.

Passos seguintes