Ao integrar o OSS ao Function Compute, você pode usar eventos do OSS para acionar funções que executam processamento de dados personalizado. Este tópico descreve as limitações, os tipos de evento e as regras de acionamento dos triggers do OSS no Function Compute.
Informações de contexto
O OSS e o Function Compute se integram perfeitamente por meio de um trigger do OSS. Você pode escrever funções para lidar com eventos do OSS. Quando um evento de um tipo especificado ocorre no OSS, a função correspondente é acionada automaticamente. Por exemplo, configure uma função para lidar com eventos PutObject. Ao chamar a operação de API PutObject do OSS para fazer upload de uma imagem para um bucket do OSS, a função é acionada automaticamente para processar a imagem.
Após integrar o OSS ao Function Compute, invoque diversas funções para processar dados de imagem ou áudio e grave os resultados de volta em vários storage services. Essa arquitetura permite que você se concentre na lógica da sua função enquanto o sistema processa grandes volumes de dados em tempo real, com alta confiabilidade e paralelismo em larga escala.
Limitações
Apenas um EventBridge-based OSS trigger oferece suporte à configuração de vários prefixos e sufixos de objeto.
Não há suporte para expressões regulares no prefixo e no sufixo do objeto de um native OSS trigger ou de um EventBridge-based OSS trigger.
-
Somente um EventBridge-based OSS trigger permite associar mais de 10 triggers do OSS a um único bucket.
Como prática recomendada, evite associar mais de 10 triggers a um único bucket. Se precisar de mais triggers, crie um novo bucket e configure os triggers para ele.
Um native OSS trigger exige que a função e o bucket do OSS estejam na mesma região. Não há suporte para configuração entre regiões. Para acionar uma função entre regiões, use um EventBridge-based OSS trigger ou roteie eventos usando o EventBridge.
Definições de eventos
Quando o OSS captura um evento relevante, ele codifica as informações do evento em uma string JSON e as passa para a função manipuladora de eventos. Para obter mais informações sobre o formato de notificação de eventos do OSS, consulte Notification message.
A tabela a seguir lista as definições de eventos do OSS suportadas. Cada tipo de evento corresponde a uma operação de API ObjectCreated, ObjectRemoved ou ObjectModified. Uma chamada bem-sucedida para uma dessas operações de API aciona a função uma vez.
|
Tipo de evento |
Nome do evento |
Descrição |
|
ObjectCreated |
oss:ObjectCreated:PutObject |
Acionado ao chamar a API PutObject para fazer upload de um objeto. Para mais informações, consulte PutObject. |
|
oss:ObjectCreated:PutSymlink |
Acionado ao chamar a API PutSymlink para criar um link simbólico para um objeto de destino no OSS. Use este link simbólico para acessar o objeto de destino. Para mais informações, consulte PutSymlink. |
|
|
oss:ObjectCreated:PostObject |
Acionado ao chamar a API PostObject para fazer upload de um objeto para um bucket usando um formulário HTML. Para mais informações, consulte PostObject. |
|
|
oss:ObjectCreated:CopyObject |
Acionado ao chamar a API CopyObject para copiar um objeto no OSS. Para mais informações, consulte CopyObject. |
|
|
oss:ObjectCreated:InitiateMultipartUpload |
Para transferir dados usando o recurso MultipartUpload, primeiro chame a API InitiateMultipartUpload para inicializar um upload multipart. Para mais informações, consulte InitiateMultipartUpload. |
|
|
oss:ObjectCreated:UploadPart |
Após a inicialização de um evento de upload multipart, faça o upload dos dados em partes com base no nome do objeto e no ID de upload especificados. Para mais informações, consulte UploadPart. |
|
|
oss:ObjectCreated:UploadPartCopy |
A operação de API UploadPartCopy faz o upload de uma parte copiando dados de um objeto existente. Para mais informações, consulte UploadPartCopy. |
|
|
oss:ObjectCreated:CompleteMultipartUpload |
Após o upload de todas as partes dos dados, chame a API CompleteMultipartUpload para concluir o upload multipart. Para mais informações, consulte CompleteMultipartUpload. |
|
|
oss:ObjectCreated:AppendObject |
A operação de API AppendObject é chamada para fazer upload de um objeto anexando dados. Para mais informações, consulte AppendObject. |
|
|
oss:ObjectCreated:* |
Acionado por uma chamada bem-sucedida para qualquer uma das operações de API ObjectCreated anteriores. |
|
|
ObjectRemoved |
oss:ObjectRemoved:DeleteObject |
Acionado ao chamar a API DeleteObject para excluir um objeto. Para mais informações, consulte DeleteObject. |
|
oss:ObjectRemoved:DeleteObjects |
Acionado ao chamar a API DeleteMultipleObjects para excluir vários objetos em uma única requisição. Para mais informações, consulte DeleteMultipleObjects. |
|
|
oss:ObjectRemoved:AbortMultipartUpload |
Acionado ao chamar a API AbortMultipartUpload para cancelar um upload multipart. Para mais informações, consulte AbortMultipartUpload. |
|
|
ObjectModified |
oss:ObjectModified:UpdateObjectMeta |
Acionado ao chamar a API UpdateObjectMeta para modificar os metadados de um objeto. Nota
Atualmente, há suporte para este evento nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Shenzhen) e China (Chengdu). |
|
ObjectReplication |
oss:ObjectReplication:ObjectCreated |
Uma operação de gravação que ocorre durante a replicação de dados. |
|
oss:ObjectReplication:ObjectModified |
Uma operação de sobrescrita que ocorre durante a replicação de dados. |
|
|
oss:ObjectReplication:ObjectRemoved |
Uma operação de exclusão que ocorre durante a replicação de dados. |
Regras de acionamento
Evite loops de trigger
Ao usar um trigger do OSS, tome cuidado para evitar loops de trigger. Um cenário comum é quando o upload de um objeto para um bucket do OSS aciona uma função. A função processa o objeto e grava um ou mais novos objetos de volta no mesmo bucket, o que, por sua vez, aciona a função novamente, criando um loop de execução.
Para evitar custos desnecessários com loops de trigger, configure um prefixo ou sufixo de objeto. Por exemplo, defina o prefixo do objeto para objetos source como src e o prefixo do objeto para objetos processados como dst. Isso garante que os objetos processados não acionem a função novamente. Se você não definir um prefixo ou sufixo de objeto, o trigger corresponderá a objetos com qualquer prefixo ou sufixo. Para mais informações, consulte Etapa 1: Crie um trigger do OSS.
Regras de triggers nativos do OSS
Para evitar que um único evento acione múltiplos triggers no mesmo bucket, o sistema detecta conflitos de configuração ao criar um trigger. Se a combinação do evento do trigger, prefixo do objeto e sufixo do objeto de um novo trigger se sobrepor a um trigger existente, a criação do trigger falhará.
Ao configurar um trigger, siga estes princípios:
Dentro do mesmo bucket, a combinação do evento do trigger, prefixo do objeto e sufixo do objeto deve ser exclusiva para cada trigger.
Os prefixos e sufixos de objeto são correspondidos usando curingas. Se um prefixo ou sufixo de objeto não for configurado, qualquer valor será correspondido.
Planeje o namespace de objetos ao configurar prefixos e sufixos de objetos para evitar falhas na criação de triggers causadas por intervalos de correspondência sobrepostos.
Se um único tipo de evento do OSS precisar acionar funções diferentes para tarefas de processamento distintas, ou seja, se as mesmas condições de trigger precisarem ser configuradas para funções diferentes, você pode crie um trigger do OSS baseado no EventBridge.
Perguntas frequentes
Documentos relacionados
-
Configurar um trigger
Para obter detalhes sobre como configurar e usar triggers nativos do OSS e triggers do OSS baseados no EventBridge, consulte Configure a native OSS trigger e Configure an EventBridge-based OSS trigger.
-
Tópicos relacionados a triggers
Para verificar qual evento acionou uma função, imprima o tipo de evento nos logs da sua função. Para mais informações, consulte Log management.
Para invocar uma função a partir de outra, use uma API para chamar a função de destino. Para mais informações, consulte Can functions invoke each other?.