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 |
|
Ocorre quando é criado um novo objeto ou um objeto existente é substituído e é criada uma nova geração desse objeto. |
Objeto eliminado |
|
Ocorre quando um objeto é eliminado temporariamente. Para mais informações, consulte o artigo Eliminação temporária. |
Objeto arquivado |
|
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 |
|
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:
Se usar uma função CloudEvent, os dados de eventos do Cloud Storage são transmitidos à sua função no formato CloudEvents e a carga útil dos dados CloudEvent é do tipo
StorageObjectData
.Se usar uma função em segundo plano, a carga útil dos dados de eventos do Cloud Storage é transmitida diretamente para a sua função no formato
StorageObjectData
.
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:
- No campo Tipo de acionador, selecione Cloud Storage.
- No campo Tipo de evento, selecione um tipo de evento.
- 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.
- 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:
- Crie o seu próprio tópico Pub/Sub.
- 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. - 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
- Saiba como escrever funções orientadas por eventos.
- Saiba como implementar uma função do Cloud Run.
- Consulte o tutorial da função do Cloud Storage para ver um exemplo de como escrever, implementar e chamar uma função com um acionador do Cloud Storage.