O Object Storage Service (OSS) integra-se ao Function Compute, o que permite criar diversas aplicações e funções. Este tópico explica como usar o Function Compute para compactar vários objetos do OSS em um único arquivo ZIP e baixá-lo localmente.
Pré-requisitos
-
O Function Compute deve estar ativado.
Ative o Function Compute na página de detalhes do produto Function Compute.
-
Conceda permissões ao Function Compute para acessar o OSS.
Para mais informações, consulte Grant Function Compute permissions to access other Alibaba Cloud services.
O bucket e a função da aplicação devem estar na mesma região.
Faça upload de múltiplos objetos para um diretório específico em um bucket. Este tutorial usa como exemplo o diretório
dir/no bucketexamplebucketna região China (Hangzhou). Para mais informações, consulte Simple upload.Crie uma função do RAM para o service Function Compute e anote seu ARN. Para mais informações, consulte Create a RAM role for a trusted Alibaba Cloud account.
Como funciona
Baixar vários objetos do OSS em massa, especialmente muitos arquivos pequenos, pode ser lento e inconveniente. Com o Function Compute, você compacta os objetos no OSS, baixa o pacote compactado para o computador local e depois o descompacta. Esse método agiliza downloads em massa. A figura a seguir ilustra o fluxo de trabalho para usar o Function Compute na compactação e no download de objetos do OSS.
Um usuário invoca a função e especifica o bucket e os objetos a compactar.
O Function Compute baixa os objetos especificados do OSS e gera um pacote ZIP com nome aleatório.
O Function Compute faz upload do pacote ZIP para o OSS.
O Function Compute retorna a URL de download do pacote ZIP ao usuário.
O usuário baixa o arquivo do OSS pela URL de download permanente retornada.
Observações de uso
O espaço em disco no ambiente de execução da função é limitado. Por isso, a função transmite dados tanto no download quanto no upload para armazenar em cache apenas uma pequena quantidade de dados na memória.
Para acelerar o processo, o Function Compute faz upload do arquivo ZIP no OSS durante a geração.
Ao enviar o arquivo ZIP para o OSS, a função utiliza o recurso de upload multipart do OSS para carregar partes simultaneamente por meio de múltiplas threads.
O tempo máximo de processamento para compactar arquivos com o Function Compute é de 24 horas. (Dados de teste: 57 objetos com tamanho total de 1,06 GB foram processados em 63 segundos).
Procedimento
Este exemplo descreve como usar o Function Compute para compactar e baixar vários objetos do diretório dir/ no bucket examplebucket na região China (Hangzhou) para um computador local.
-
Implante a aplicação e obtenha seu nome de domínio público.
One-click with ROS
Use o Resource Orchestration Service (ROS) para implantar a aplicação do Function Compute com um clique.
Na aba Configure Parameters, mantenha as configurações padrão de todos os parâmetros e clique em Next: Check and Confirm.
-
Na aba Check and Confirm, clique em Create.
O Status na aba Stack Information exibe Creating.
Quando o Status da pilha mudar para Create_Success, clique em Outputs para encontrar o nome de domínio público.
One-click with Serverless Application Center
-
Implante o modelo de aplicação start-zip-oss pelo Serverless Application Center.
Na página Create Application, o modelo de aplicação é
start-zip-osse o tipo de implantação é Directly Deploy. Configure os seguintes parâmetros principais:Application Name:
start-zip-oss-obvrRole Name: AliyunFCServerlessDevsRole. As políticas anexadas incluem AliyunOSSReadOnlyAccess e AliyunFCFullAccess.
Service Status: O Function Compute e o Object Storage Service (OSS) devem estar ativados.
Advanced Settings: Selecione a região China (Hangzhou). Defina o nome do service como
zip-oss, o nome da função comozip-oss-funce o ARN da função do RAM como AliyunFcDefaultRole (políticas anexadas: AliyunOSSFullAccess e AliyunFCDefaultRolePolicy).
Após concluir a configuração, clique em Create and Deploy Default Environment.
-
Obtenha o nome de domínio público.
Clique em Result.
-
No campo triggers, obtenha o nome de domínio público (urlInternet).
fc zip oss service. service: role: acs:ram::1379186349xxx:role/aliyunfcdefaultrole internetAccess: true name: zip-oss description: zip oss sample function: handler: main.main_handler initializationTimeout: 3 memorySize: 3072 instanceType: e1 name: zip-oss-func runtime: python2.7 description: This is default function description by fc-deploy component timeout: 1800 instanceConcurrency: 1 region: cn-hangzhou triggers: - urlInternet: https://zip-oss-func-zip-oss-ayouyexxx.cn-hangzhou.fcapp.run name: http-test type: http config: methods: - GET - POST - PUT authType: anonymous
Manual with Serverless Devs CLI
-
Instale o Serverless Devs.
npm install -g @serverless-devs/sVerifique a instalação.
s -vA saída a seguir indica instalação bem-sucedida:
@serverless-devs/s: 2.1.1, s-home: /root/.s, linux-x64, node-v14.19.3 -
Configure o Serverless Devs.
s config add --AccessKeyID LTAI******** --AccessKeySecret KZo1******** --access fc-accessA tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
--AccessKeyID
O AccessKey ID para acessar o Function Compute.
--AccessKeySecret
O AccessKey Secret para acessar o Function Compute.
--access
Um alias personalizado para as credenciais.
-
Implante o modelo de aplicação start-zip-oss.
Inicialize o projeto.
Especifique valores para os itens de configuração conforme os exemplos a seguir.
Acesse o diretório do projeto.
Implante o projeto.
Anote o valor de
system_urlna saída.
s init start-zip-oss -d start-zip-ossParâmetro
Exemplo
Região onde a aplicação está localizada
cn-hangzhou
Serviço do Function Compute ao qual a aplicação pertence
start-zip-oss
Nome da função da aplicação
zip-oss-func
ARN da função do RAM configurada para o service do Function Compute ao qual a aplicação pertence
acs:ram::137918634953****:role/test-role
cd start-zip-osss deploy -yfc-zip-oss-service: region: cn-hangzhou service: name: start-zip-oss function: name: zip-oss-func runtime: python2.7 handler: main.main_handler memorySize: 3072 timeout: 1800 url: system_url: https://zip-oss-func-start-zip-oss-ayouye****.cn-hangzhou.fcapp.run triggers: - type: http name: http-test
-
No servidor ou em uma instância ECS, execute o comando a seguir para gerar um arquivo
event.json. No arquivo, especifique o nome do bucket e o diretório que contém os objetos a baixar.cat <<EOF > event.json { "bucket": "examplebucket", "source-dir": "dir/" } EOFNotaO parâmetro
source-dirdeve ser um diretório dentro de um bucket; o diretório raiz não é suportado. -
O comando a seguir é um exemplo de solicitação.
curl -v -L -o oss.zip -d @./event.json https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run-
oss.zip: Caminho local onde o pacote ZIP baixado será salvo.NotaSe a ferramenta de descompactação nativa do Windows falhar, use uma ferramenta de terceiros, como 7-Zip ou WinRAR.
https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run: Asystem_urlretornada ao implantar o projeto.
Para invocar esta função como uma função HTTP autenticada em vez de anônima, use um dos seguintes SDKs:
-
Perguntas frequentes
Adição de marcas d'água
URLs de download com limite de tempo
Referências
Para mais informações sobre os recursos e o faturamento do Function Compute, consulte What is Function Compute? e Billing overview.
Para modelos e aplicações de exemplo que demonstram a integração entre Function Compute e OSS, consulte Sample code.
Para mais exemplos de uso do Function Compute com o OSS, consulte Use Function Compute to automatically decompress ZIP files in OSS.