Ao integrar o OSS ao Function Compute, use eventos do OSS para acionar funções que executam processamento personalizado de dados. Este tópico descreve as limitações, os tipos de evento e as regras de acionamento dos gatilhos do OSS no Function Compute.
Informações básicas
O OSS e o Function Compute se integram perfeitamente por meio de um gatilho do OSS. Escreva funções para lidar com eventos do OSS. Quando um evento do tipo especificado ocorre no OSS, a função correspondente é acionada automaticamente. Por exemplo, configure uma função para processar eventos PutObject. Ao chamar a operação da API PutObject do OSS para carregar uma imagem em um bucket do OSS, a função é acionada automaticamente para processar essa 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 serviços de armazenamento. Essa arquitetura permite focar na lógica da função, enquanto o sistema gerencia grandes volumes de dados em tempo real, com alta confiabilidade e paralelismo em larga escala.
Limitações
Somente um gatilho do OSS baseado no EventBridge permite configurar múltiplos prefixos e sufixos de objeto.
Expressões regulares não são suportadas no prefixo e no sufixo de objeto de um gatilho nativo do OSS ou de um gatilho do OSS baseado no EventBridge.
-
Apenas um gatilho do OSS baseado no EventBridge permite associar mais de 10 gatilhos do OSS a um único bucket.
Como prática recomendada, evite associar mais de 10 gatilhos a um único bucket. Caso precise de mais gatilhos, crie um novo bucket e configure-os nele.
Definições de eventos
Quando o OSS captura um evento relevante, ele codifica as informações do evento em uma string JSON e as transmite à função manipuladora de eventos. Para obter mais detalhes sobre o formato da notificação de evento do OSS, consulte a documentação vinculada.
A tabela a seguir lista as definições de eventos do OSS suportadas. Cada tipo de evento corresponde a uma operação da API ObjectCreated, ObjectRemoved ou ObjectModified. Uma chamada bem-sucedida a qualquer uma dessas operações da API aciona a função uma vez.
Tipo de evento | Nome do evento | Descrição |
ObjectCreated | oss:ObjectCreated:PutObject | Acionado pela chamada à API PutObject para carregar um objeto. Para mais informações, consulte PutObject. |
oss:ObjectCreated:PutSymlink | Acionado pela chamada à 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 pela chamada à API PostObject para carregar um objeto em um bucket usando um formulário HTML. Para mais informações, consulte PostObject. | |
oss:ObjectCreated:CopyObject | Acionado pela chamada à API CopyObject para copiar um objeto no OSS. Para mais informações, consulte CopyObject. | |
oss:ObjectCreated:InitiateMultipartUpload | Para transferir dados usando o recurso MultipartUpload, chame primeiro a API InitiateMultipartUpload para inicializar um upload multipart. Para mais informações, consulte InitiateMultipartUpload. | |
oss:ObjectCreated:UploadPart | Após iniciar um evento de upload multipart, carregue os 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 da API UploadPartCopy carrega uma parte copiando dados de um objeto existente. Para mais informações, consulte UploadPartCopy. | |
oss:ObjectCreated:CompleteMultipartUpload | Depois que todas as partes dos dados forem carregadas, chame a API CompleteMultipartUpload para concluir o upload multipart. Para mais informações, consulte CompleteMultipartUpload. | |
oss:ObjectCreated:AppendObject | A operação da API AppendObject é chamada para carregar um objeto anexando dados. Para mais informações, consulte AppendObject. | |
oss:ObjectCreated:* | Acionado por uma chamada bem-sucedida a qualquer uma das operações da API ObjectCreated anteriores. | |
ObjectRemoved | oss:ObjectRemoved:DeleteObject | Acionado pela chamada à API DeleteObject para excluir um objeto. Para mais informações, consulte DeleteObject. |
oss:ObjectRemoved:DeleteObjects | Acionado pela chamada à API DeleteMultipleObjects para excluir vários objetos em uma única solicitação. Para mais informações, consulte DeleteMultipleObjects. | |
oss:ObjectRemoved:AbortMultipartUpload | Acionado pela chamada à API AbortMultipartUpload para cancelar um upload multipart. Para mais informações, consulte AbortMultipartUpload. | |
ObjectModified | oss:ObjectModified:UpdateObjectMeta | Acionado pela chamada à API UpdateObjectMeta para modificar os metadados de um objeto. Nota Atualmente, este evento é suportado 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 escrita 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 gatilho
Ao usar um gatilho do OSS, tome cuidado para evitar loops de gatilho. Um cenário comum ocorre quando o upload de um objeto em 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 aciona a função novamente, criando um loop de execução.
Para evitar custos desnecessários decorrentes de loops de gatilho, recomendamos configurar um prefixo ou sufixo de objeto. Por exemplo, defina o prefixo do objeto para objetos de origem 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 gatilho corresponderá a objetos com qualquer prefixo ou sufixo. Para mais informações, consulte Etapa 1: Criar um gatilho do OSS.
Regras do gatilho nativo do OSS
Para impedir que um único evento dispare múltiplos gatilhos no mesmo bucket, o Function Compute aplica as seguintes regras de configuração para um bucket:
A combinação do evento de gatilho, prefixo do objeto e sufixo do objeto deve ser única.
Crie um novo gatilho somente se a combinação de
trigger event + object prefix + object suffixnão entrar em conflito com nenhum gatilho existente.
Os exemplos a seguir descrevem as regras de configuração para um gatilho nativo do OSS.
Gatilho existente | Novo gatilho | Status de criação | Descrição | ||||
Trigger Event | Object Prefix | Object Suffix | Trigger Event | Object Prefix | Object Suffix | ||
oss:ObjectCreated:PutObject | source | zip | oss:ObjectCreated:* | source | zip | Falha | Falha. O evento curinga do novo gatilho ( |
source1 | zip1 | Sucesso | O novo gatilho e o gatilho existente possuem tipos de evento conflitantes, mas seus valores de Object Prefix e Object Suffix não coincidem. | ||||
oss:ObjectCreated:PutObject | source | zip | Falha | O novo gatilho e um gatilho existente possuem o mesmo tipo de evento, Object Prefix e Object Suffix. | |||
source | 1zip | Falha | |||||
source1 | zip | Falha | |||||
source | None | Falha | Se o tipo de evento e o Object Prefix de um novo gatilho coincidirem com os de um gatilho existente e você não especificar um Object Suffix, o novo gatilho corresponderá a objetos com qualquer sufixo, como objetos .zip. Nesse caso, o Object Suffix também é considerado uma correspondência. | ||||
None | zip | Falha | O tipo de evento e o Object Suffix do novo gatilho coincidem com os de um gatilho existente. Se o Object Prefix não estiver definido, o gatilho incluirá objetos com o prefixo 'source', o que significa que o Object Prefix também corresponde. | ||||
source1 | zip1 | Sucesso | O tipo de evento e o Object Prefix do novo gatilho coincidem com os de um gatilho existente, mas o Object Suffix não coincide. | ||||
1source | 1zip | Sucesso | O tipo de evento e o Object Suffix do novo gatilho coincidem com os de um gatilho existente, mas o Object Prefix não coincide. | ||||
oss:ObjectCreated:PostObject | source | zip | Sucesso | Sucesso. Os tipos de evento não entram em conflito, portanto o gatilho pode ser criado independentemente do filtro de caminho. | |||
O prefixo do objeto é correspondido a partir do início do nome do objeto, e o sufixo do objeto é correspondido a partir do final do nome do objeto.
Não é possível criar um novo gatilho se suas configurações entrarem em conflito com um gatilho existente. Um conflito ocorre apenas se o tipo de evento do novo gatilho e seu filtro de caminho (prefixo e sufixo) se sobrepuserem às configurações de um gatilho existente.
Conflitos de tipo de evento
Tipo de evento existente | Novo tipo de evento | Descrição do conflito |
|
|
|
|
|
Conflitos de correspondência de caminho
|
Caminho existente |
Novo caminho |
Descrição do conflito |
|
|
|
O prefixo não corresponde, mas o sufixo corresponde. Os caminhos não entram em conflito. |
|
|
|
O prefixo corresponde, mas o sufixo não corresponde. Os caminhos não entram em conflito. |
|
|
|
O prefixo corresponde e o sufixo corresponde. Os caminhos entram em conflito. |
Se desejar que um único tipo de evento do OSS acione funções diferentes para tarefas de processamento distintas, crie um gatilho do OSS baseado no EventBridge.
Perguntas frequentes
Documentos relacionados
-
Configure um gatilho
Para obter detalhes sobre como configurar e usar gatilhos nativos do OSS e gatilhos do OSS baseados no EventBridge, consulte Configurar um gatilho nativo do OSS e Configurar um gatilho do OSS baseado no EventBridge.
-
Tópicos relacionados a gatilhos
Para verificar qual evento acionou uma função, imprima o tipo de evento nos logs da sua função. Para mais informações, consulte Gerenciamento de logs.
Para invocar uma função a partir de outra, use uma API para chamar a função de destino. Para mais informações, consulte As funções podem invocar umas às outras?.