configure regras de descompactação para extrair automaticamente pacotes ZIP enviados para um diretório especificado do OSS. O Function Compute descompacta os pacotes e salva os objetos extraídos no diretório de destino.
Pré-requisito
O Function Compute deve estar ativado. Para ativá-lo, acesse a Function Compute.
Cenários
Upload em lote: comprima vários objetos pequenos em um único pacote ZIP para reduzir o tempo de upload.
Integridade de recursos: agrupe arquivos relacionados em um único pacote ZIP para garantir que todos os componentes sejam enviados juntos.
Preservação da estrutura de diretórios: empacote uma árvore de diretórios local em um arquivo ZIP e envie-o para o OSS. A regra de descompactação recria a estrutura de pastas original no bucket.
Distribuição de conteúdo: comprima objetos em um pacote ZIP e envie-o para o OSS. O pacote é descompactado nos diretórios especificados, o que reduz o tempo de transmissão e o consumo de largura de banda.
Como funciona
O OSS utiliza o Function Compute para descompactar pacotes ZIP enviados. A figura a seguir ilustra o processo.
Um pacote ZIP é enviado para o diretório especificado pelo parâmetro Prefix em uma regra de descompactação.
-
O trigger do Function Compute é invocado.
Ao configurar uma regra de descompactação, autorize o trigger para que o OSS possa usar a função AliyunOSSEventNotificationRole para acessar o Function Compute.
-
O Function Compute descompacta o pacote ZIP e salva os objetos extraídos no diretório especificado do OSS.
Ao configurar uma regra de descompactação, autorize o Function Compute a ler e gravar no bucket do OSS.
Faturamento
A descompactação de pacotes ZIP gera custos tanto no OSS quanto no Function Compute. Transferências de dados entre o OSS e o Function Compute por endpoints internos são gratuitas.
No lado do OSS, há cobrança por chamadas de operações de API e armazenamento de objetos. Para mais informações, consulte Billing overview.
-
No lado do Function Compute, há cobrança por uso de vCPU, uso de memória e uso de disco com base na duração da execução. Para mais informações, consulte Billing overview.
Por exemplo, se uma tarefa de descompactação de pacote ZIP usar uma instância do Function Compute com 3 GB de memória e vCPU de 2 núcleos, levar 5 minutos para ser concluída e o tamanho padrão do disco alocado para arquivos de armazenamento temporário for de 10 GB, os valores cobrados pelo Function Compute serão calculados com a seguinte fórmula:
|
Item de uso de recurso |
Unidade |
Fórmula |
Exemplo de faturamento |
|
Uso de vCPU |
**vCPU-seconds** |
Uso ativo de vCPU = Capacidade de vCPU × Duração da execução (segundos) |
Se a função estiver configurada com 2 vCPUs e executar por 300 segundos, o uso de vCPU para uma única execução será: 2 × 300 = 600 **vCPU-seconds**. |
|
Uso de memória |
GB-seconds |
Uso de memória = Capacidade de memória (GB) × Duração da execução (segundos) |
Se a função estiver configurada com 3 GB de memória e executar por 300 segundos, o uso de memória para uma única execução será: 3 × 300 = 900 GB-seconds |
|
Uso de disco |
GB-seconds |
Uso de disco = Capacidade de disco (GB) × Duração da execução (segundos) Nota: até 512 MB de uso de disco são gratuitos. |
Se a função estiver configurada com um disco temporário de 10 GB e executar por 300 segundos, o uso de disco para uma única execução será: (10-512/1024) × 300 = 2850 GB-seconds. |
Limitações
Classes de armazenamento: um objeto Cold Archive precisa ser restaurado antes de ser descompactado. Um objeto Archive em um bucket sem acesso em tempo real a objetos Archive ativado também precisa ser restaurado antes da descompactação.
Nomenclatura de objetos e diretórios: codifique nomes de objetos e diretórios em UTF-8 ou GB 2312. Outras codificações podem causar falhas na descompactação ou nomes ilegíveis.
Tamanho do objeto e duração da descompactação: cada objeto em um pacote ZIP não pode exceder 1 GB. É possível aumentar a duração da descompactação se necessário. Para mais informações, consulte What do I do if a ZIP package fails to be decompressed due to a decompression timeout?
Configurar uma regra de descompactação de pacote ZIP
Faça login no console do OSS.
No painel de navegação à esquerda, clique em Buckets. Na página exibida, clique em o nome do bucket desejado.
Na árvore de navegação à esquerda, escolha .
-
clique em Decompress ZIP Package. No painel Decompress ZIP Package, configure os parâmetros descritos na tabela a seguir.
Parâmetros
Parâmetro
Obrigatório
Descrição
Service Authorization
Sim
Autorize o Function Compute a ler e gravar no OSS e a executar funções.
clique em Authorize. Conclua a autorização na página exibida.
Authorize Trigger
Sim
Autorize o OSS a acessar o Function Compute.
clique em Authorize. Conclua a autorização na página exibida. Se o OSS já estiver autorizado a acessar o Function Compute, o parâmetro Trigger Role será exibido no lugar do parâmetro Authorize Trigger.
Prefix
Não
O prefixo que os nomes dos pacotes ZIP devem corresponder para acionar a descompactação. Se você enviar um pacote ZIP cujo nome contenha esse prefixo ou enviá-lo para o diretório especificado pelo prefixo, o Function Compute o descompactará. Se não for especificado, todos os pacotes ZIP enviados para o bucket serão descompactados.
ImportanteSe você não especificar esse parâmetro, as tarefas de descompactação poderão ser executadas repetidamente. Portanto, recomendamos especificar um prefixo para cada regra de descompactação. Para mais informações, consulte How can I avoid trigger loops?
Destination Directory
Não
O diretório onde os objetos extraídos serão armazenados. Se não for especificado, os objetos serão descompactados no diretório raiz do bucket.
Para armazenar os objetos extraídos em um subdiretório com o mesmo nome do pacote ZIP, selecione Add the compressed object name to the destination directory.
Para armazenar os objetos extraídos diretamente no diretório de destino sem criar um subdiretório, selecione Decompress to the destination directory. A tabela a seguir mostra exemplos de configuração.
AvisoPara evitar interrupção do serviço, contaminação de dados ou perda de dados ao configurar regras de descompactação de pacote ZIP em um bucket com OSS-HDFS ativado, não defina o Destination Directory como
.dlsdata/.Exemplos de configuração de descompactação
Cenário
Método de configuração
Estrutura de armazenamento após a descompactação
Descompactar todos os pacotes ZIP enviados para o diretório zipfolder no diretório destfolder, sem criar subdiretórios com os mesmos nomes dos pacotes ZIP.
defina Prefix como zipfolder/.
defina Destination Directory como destfolder.
selecione Decompress to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a.txt ├─── b.txt └─── ...Descompactar todos os pacotes ZIP enviados para o diretório zipfolder em subdiretórios com os mesmos nomes dos pacotes, no diretório raiz do bucket.
configure os seguintes parâmetros:
defina Prefix como zipfolder/.
Deixe Destination Directory vazio.
selecione Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip├─── a/│ ├─── a.txt│ └─── ...└─── b/ ├─── b.txt └─── ...Descompactar todos os pacotes ZIP enviados para o diretório zipfolder em subdiretórios com os mesmos nomes dos pacotes, dentro do diretório destfolder.
configure os seguintes parâmetros:
defina Prefix como zipfolder/.
defina Destination Directory como destfolder.
selecione Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a/ │ ├─── a.txt │ └─── ... └─── b/ ├─── b.txt └─── ... selecione I have read the terms of service and agreed to activate Function Compute and process compressed files by using Function Compute. Only file or folder names encoded in UTF-8 or GB 2312 can be processed. e clique em OK.
modifique uma regra de descompactação de pacote ZIP
modifique uma regra de descompactação para atualize o prefixo do trigger ou as configurações da função.
modifique o parâmetro Prefix
Na página Decompress ZIP Package no console do OSS, localize o trigger que deseja modifique e clique em Edit na coluna Actions.
Na aba Triggers da página de detalhes da função, localize o trigger e clique em Modify na coluna Actions.
No painel Modify Trigger, modifique o parâmetro Object Prefix e mantenha as configurações padrão dos demais parâmetros.
clique em OK.
modifique configurações da função
Na aba Configurations da página de detalhes da função, clique em Modify na seção Basic Settings ou na seção Environment Information.
-
modifique as configurações da função, como Memory e Execution Timeout Period.
Para mais informações, consulte gerencie functions.
exclua um trigger
Triggers excluídos não podem ser restaurados. A exclusão de um trigger não interrompe tarefas de descompactação em andamento.
Na aba Triggers da página de detalhes da função, localize o trigger que deseja exclua e clique em Delete na coluna Actions.
Na mensagem exibida, clique em Delete.
Obter resultados da descompactação
Após a conclusão da função de descompactação, o OSS não retorna o resultado de forma proativa. Use os métodos a seguir para obter o resultado da descompactação e encaminhá-lo ao seu serviço de backend.
Método 1: Consultar o status da descompactação no modo de tarefas
Após ativar o modo de tarefas, cada execução da função de descompactação gera um registro de tarefa assíncrona. visualize o status da tarefa na lista de tarefas ou consulte-o por meio de uma operação de API.
No console do Function Compute, acesse a página de detalhes da função de descompactação e clique em na aba Task.
Na área de configuração do modo de tarefas, clique em Edit e ative Task Mode. O Task Mode está desativado por padrão. Nessa mesma área, também é possível configure Maximum Retry Attempts (padrão: 3), Message Time to Live (padrão: 1 dia) e Invocation Destination (padrão: não configurado).
Após a ativação do Task Mode, cada execução da função de descompactação gera um registro de tarefa assíncrona. A lista de tarefas exibe o ID da tarefa, o status, o horário de início e término, a duração da execução, o número de tentativas, o ID da requisição e o ID da instância.
Também é possível chamar a operação
GetAsyncTaskdo Function Compute para consultar o status da tarefa. Um status retornado como Succeeded indica que a tarefa de descompactação foi concluída com sucesso.
Método 2: configure um destino de invocação assíncrona para notificações automáticas
Na área de configuração do modo de tarefas, ative Invoke Another Service on Success ou Invoke Another Service on Failure para notificar automaticamente um serviço de destino especificado após o término da tarefa de descompactação. Os seguintes tipos de serviço de destino são compatíveis:
Function Compute (FC)
ApsaraMQ for RocketMQ
Simple Message Queue (anteriormente MNS)
EventBridge
Método 3: Enviar notificações ao seu serviço de backend por meio de um callback HTTP personalizado
Os destinos de invocação assíncrona integrados não são compatíveis com callback HTTP personalizado. Se você precisar notificar um serviço de backend autogerenciado — por exemplo, um serviço implantado em um cluster ACK — sobre o resultado da descompactação, utilize a seguinte abordagem:
crie uma função no Function Compute que envie uma requisição de notificação HTTP ao endpoint do seu serviço de backend.
configure essa função como destino de invocação assíncrona da função de descompactação, seguindo os passos do Método 2.
Após o término da tarefa de descompactação, o Function Compute invoca essa função, que então envia a notificação HTTP ao seu serviço de backend.
