Object Storage Service (OSS) se integra con Function Compute, lo que permite crear diversas aplicaciones y funciones. Este tema explica cómo utilizar Function Compute para empaquetar varios objetos de OSS en un solo archivo ZIP y descargarlo localmente.
Requisitos previos
-
Function Compute está activado.
Puede activar Function Compute en la página de detalles del producto Function Compute.
-
Debe otorgar permisos a Function Compute para acceder a OSS.
Para obtener más información, consulte Grant Function Compute permissions to access other Alibaba Cloud services.
El bucket y la función de la aplicación deben encontrarse en la misma región.
Debe cargar varios objetos en un directorio específico de un bucket. Este tutorial utiliza el directorio
dir/del bucketexamplebucketen la región China (Hangzhou) como ejemplo. Para obtener más información, consulte Simple upload.Debe crear un rol de RAM para el servicio Function Compute y registrar su ARN. Para obtener más información, consulte Create a RAM role for a trusted Alibaba Cloud account.
Funcionamiento
Descargar múltiples objetos de OSS de forma masiva, especialmente si son pequeños, puede resultar lento e inconveniente. Al usar Function Compute, primero empaqueta los objetos en OSS, descarga el paquete comprimido a su computadora local y luego lo descomprime. Este método agiliza las descargas masivas. El siguiente diagrama ilustra el flujo de trabajo para empaquetar y descargar objetos de OSS mediante Function Compute.
Un usuario invoca la función y especifica el bucket y los objetos que se van a comprimir.
Function Compute descarga los objetos especificados de OSS y genera un paquete ZIP con un nombre aleatorio.
Function Compute carga el paquete ZIP en OSS.
Function Compute devuelve al usuario la URL de descarga del paquete ZIP.
El usuario descarga el archivo desde OSS mediante la URL de descarga permanente devuelta.
Notas de uso
El espacio en disco del entorno de ejecución de la función es limitado. Por ello, la función transmite los datos tanto en la descarga como en la carga para almacenar en caché solo una pequeña cantidad de datos en memoria.
Para acelerar el proceso, Function Compute carga el archivo ZIP en OSS mientras se genera.
Al cargar el archivo ZIP en OSS, la función utiliza la función de carga multiparte de OSS para subir partes simultáneamente mediante varios subprocesos.
El tiempo máximo de procesamiento para comprimir archivos con Function Compute es de 24 horas (datos de prueba: 57 objetos con un tamaño total de 1.06 GB se procesaron en 63 segundos).
Procedimiento
Este ejemplo describe cómo usar Function Compute para empaquetar y descargar varios objetos del directorio dir/ en el bucket examplebucket de la región China (Hangzhou) hacia una computadora local.
-
Despliegue la aplicación y obtenga su nombre de dominio público.
One-click with ROS
Utilice Resource Orchestration Service (ROS) para desplegar la aplicación de Function Compute con un solo clic.
Abra el enlace de la plantilla de configuración con un clic.
En la pestaña Configure Parameters, conserve la configuración predeterminada de todos los parámetros y haga clic en Next: Check and Confirm.
-
En la pestaña Check and Confirm, haga clic en Create.
El campo Status en la pestaña Stack Information muestra Creating.
Cuando el Status de la pila cambie a Create_Success, haga clic en la pestaña Outputs para encontrar el nombre de dominio público.
One-click with Serverless Application Center
-
Despliegue la plantilla de aplicación start-zip-oss desde Serverless Application Center.
En la página Create Application, la plantilla de aplicación es
start-zip-ossy el tipo de despliegue es Directly Deploy. Configure los siguientes parámetros clave:Application Name:
start-zip-oss-obvrRole Name: AliyunFCServerlessDevsRole. Las directivas adjuntas incluyen AliyunOSSReadOnlyAccess y AliyunFCFullAccess.
Service Status: Function Compute y Object Storage Service (OSS) están activados.
Advanced Settings: Seleccione la región China (Hangzhou). Establezca el nombre del servicio como
zip-oss, el nombre de la función comozip-oss-funcy el ARN del rol de RAM como AliyunFcDefaultRole (directivas adjuntas: AliyunOSSFullAccess y AliyunFCDefaultRolePolicy).
Después de completar la configuración, haga clic en Create and Deploy Default Environment.
-
Obtenga el nombre de dominio público.
Haga clic en la pestaña Result.
-
En el campo de disparadores, obtenga el nombre de dominio 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 con Serverless Devs CLI
-
Instale Serverless Devs.
npm install -g @serverless-devs/sVerifique la instalación.
s -vLa siguiente salida indica que la instalación se realizó correctamente:
@serverless-devs/s: 2.1.1, s-home: /root/.s, linux-x64, node-v14.19.3 -
Configure Serverless Devs.
s config add --AccessKeyID LTAI******** --AccessKeySecret KZo1******** --access fc-accessLa siguiente tabla describe los parámetros.
Parámetro
Descripción
--AccessKeyID
El AccessKey ID para acceder a Function Compute.
--AccessKeySecret
El AccessKey Secret para acceder a Function Compute.
--access
Un alias personalizado para las credenciales.
-
Despliegue la plantilla de aplicación start-zip-oss.
Inicialice el proyecto.
Especifique valores para los elementos de configuración según los siguientes ejemplos.
Vaya al directorio del proyecto.
Despliegue el proyecto.
Registre el valor de
system_urlde la salida.
s init start-zip-oss -d start-zip-ossParámetro
Ejemplo
Región donde se encuentra la aplicación
cn-hangzhou
Servicio de Function Compute al que pertenece la aplicación
start-zip-oss
Nombre de la función de la aplicación
zip-oss-func
ARN del rol de RAM configurado para el servicio de Function Compute al que pertenece la aplicación
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
-
En su servidor o en una instancia de ECS, ejecute el siguiente comando para generar un archivo
event.json. En el archivo, especifique el nombre del bucket y el directorio que contiene los objetos que se van a descargar.cat <<EOF > event.json { "bucket": "examplebucket", "source-dir": "dir/" } EOFNotaEl parámetro
source-dirdebe ser un directorio dentro de un bucket; no se admite el directorio raíz. -
El siguiente comando es un ejemplo de solicitud.
curl -v -L -o oss.zip -d @./event.json https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run-
oss.zip: La ruta local donde se guarda el paquete ZIP descargado.NotaSi la herramienta de descompresión integrada de Windows falla, utilice una herramienta de terceros, como 7-Zip o WinRAR.
https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run: el valorsystem_urldevuelto al desplegar el proyecto.
Para invocar esto como una función HTTP autenticada en lugar de anónima, utilice uno de los siguientes SDK:
-
Preguntas frecuentes
Agregar marcas de agua
URL de descarga con límite de tiempo
Referencias
Para obtener más información sobre las funciones y la facturación de Function Compute, consulte What is Function Compute? y Billing overview.
Para ver plantillas y aplicaciones de ejemplo que demuestran la integración de Function Compute y OSS, consulte Sample code.
Para ver más ejemplos sobre el uso de Function Compute con OSS, consulte Use Function Compute to automatically decompress ZIP files in OSS.