Configure reglas de descompresión para extraer automáticamente los paquetes ZIP que se carguen en un directorio específico de OSS. Function Compute descomprime los paquetes y guarda los objetos extraídos en el directorio de destino.
Requisito previo
Function Compute debe estar activado. Para activarlo, vaya a la Function Compute.
Escenarios
Carga por lotes: comprima varios objetos pequeños en un solo paquete ZIP para reducir el tiempo de carga.
Integridad de recursos: agrupe archivos relacionados en un único paquete ZIP para garantizar que todos los componentes se carguen juntos.
Conservación de la estructura de directorios: empaquete un árbol de directorios local en un archivo ZIP y cárguelo en OSS. La regla de descompresión recrea la estructura original de carpetas en el bucket.
Entrega de contenido: comprima objetos en un paquete ZIP y cárguelo en OSS. El paquete se descomprime en los directorios especificados, lo que reduce el tiempo de transmisión y el uso del ancho de banda.
Funcionamiento
OSS utiliza Function Compute para descomprimir los paquetes ZIP cargados. En la siguiente figura se muestra el proceso.
Se carga un paquete ZIP en el directorio que especifica el parámetro Prefix de una regla de descompresión.
-
Se invoca el disparador de Function Compute.
Cuando configure una regla de descompresión, autorice el disparador para que OSS pueda usar el rol AliyunOSSEventNotificationRole y acceder a Function Compute.
-
Function Compute descomprime el paquete ZIP y guarda los objetos extraídos en el directorio de OSS especificado.
Al configurar una regla de descompresión, otorgue a Function Compute permisos de lectura y escritura en el bucket de OSS.
Facturación
La descompresión de paquetes ZIP genera cargos tanto en OSS como en Function Compute. Las transferencias de datos entre OSS y Function Compute a través de endpoints internos son gratuitas.
En OSS, se le cobran las llamadas a operaciones de API y el almacenamiento de objetos. Para obtener más información, consulte Billing overview.
-
En Function Compute, se cobra el uso de vCPU, memoria y disco según la duración de la ejecución. Para obtener más información, consulte Billing overview.
Por ejemplo, suponga que una tarea de descompresión de un paquete ZIP usa una instancia de Function Compute con 3 GB de memoria y una vCPU de 2 núcleos, tarda 5 minutos en completarse y el tamaño predeterminado del disco asignado para los archivos de almacenamiento temporales es de 10 GB. En este caso, el monto de los cargos de Function Compute se calcula con la siguiente fórmula:
|
Elemento de uso de recursos |
Unidad |
Fórmula |
Ejemplo de facturación |
|
Uso de vCPU |
**vCPU-segundos** |
Uso activo de vCPU = capacidad de vCPU × duración de la ejecución (segundos) |
Si la función se configura con 2 vCPU y se ejecuta durante 300 segundos, el uso de vCPU de una sola ejecución se calcula con la siguiente fórmula: 2 × 300 = 600 **vCPU-segundos**. |
|
Uso de memoria |
GB-segundos |
Uso de memoria = capacidad de memoria (GB) × duración de la ejecución (segundos) |
Si la función se configura con 3 GB de memoria y se ejecuta durante 300 segundos, el uso de memoria de una sola ejecución se calcula con la siguiente fórmula: 3 × 300 = 900 GB-segundos |
|
Uso de disco |
GB-segundos |
Uso de disco = capacidad de disco (GB) × duración de la ejecución (segundos) Nota: el uso de disco hasta 512 MB es gratuito. |
Si la función se configura con un disco temporal de 10 GB y se ejecuta durante 300 segundos, el uso de disco de una sola ejecución se calcula con la siguiente fórmula: (10 - 512/1024) × 300 = 2850 GB-segundos. |
Límites
Clases de almacenamiento: un objeto Cold Archive debe restaurarse antes de poder descomprimirlo. Un objeto Archive almacenado en un bucket que no tiene habilitado el acceso en tiempo real a objetos Archive también requiere restauración previa.
Nombres de objetos y directorios: codifique los nombres de objetos y directorios en UTF-8 o GB 2312. Otras codificaciones pueden provocar errores de descompresión o nombres ilegibles.
Tamaño de objeto y duración de la descompresión: cada objeto dentro de un paquete ZIP no puede superar 1 GB. Si es necesario, aumente la duración de la descompresión. Para obtener más información, What do I do if a ZIP package fails to be decompressed due to a decompression timeout?
Configurar una regla de descompresión de paquetes ZIP
Inicie sesión en la consola de OSS.
En el panel de navegación izquierdo, haga clic en Buckets. En la página que aparece, haga clic en el nombre del bucket de destino.
En el árbol de navegación izquierdo, elija .
-
Haga clic en Decompress ZIP Package. En el panel Decompress ZIP Package, configure los parámetros que se describen a continuación.
Parámetros
Parámetro
Obligatorio
Descripción
Service Authorization
Sí
Otorgue a Function Compute permisos de lectura y escritura en OSS, así como permisos para ejecutar funciones.
Haga clic en Authorize. Complete la autorización en la página que aparece.
Authorize Trigger
Sí
Autorice a OSS para acceder a Function Compute.
Haga clic en Authorize. Complete la autorización en la página que aparece. Si OSS ya cuenta con autorización para acceder a Function Compute, se muestra el parámetro Trigger Role en lugar de Authorize Trigger.
Prefix
No
Prefijo con el que deben coincidir los nombres de los paquetes ZIP para activar la descompresión. Si carga un paquete ZIP cuyo nombre contiene este prefijo, o si lo carga en el directorio que indica el prefijo, Function Compute lo descomprime. Si no se especifica, se descomprimen todos los paquetes ZIP que se carguen en el bucket.
ImportanteSi no especifica este parámetro, las tareas de descompresión podrían ejecutarse de forma repetida. Por lo tanto, se recomienda definir un prefijo para cada regla de descompresión. Para obtener más información, consulte How can I avoid trigger loops?
Destination Directory
No
Directorio donde se almacenan los objetos extraídos. Si no se especifica, los objetos se descomprimen en el directorio raíz del bucket.
Para almacenar los objetos extraídos en un subdirectorio con el mismo nombre que el paquete ZIP, seleccione Add the compressed object name to the destination directory.
Para almacenar los objetos extraídos directamente en el directorio de destino sin crear un subdirectorio, seleccione Decompress to the destination directory. En la siguiente tabla se muestran ejemplos de configuración.
AvisoPara evitar interrupciones del servicio, contaminación o pérdida de datos al configurar reglas de descompresión de paquetes ZIP en un bucket con OSS-HDFS habilitado, no establezca Destination Directory en
.dlsdata/.Ejemplos de configuración de descompresión
Escenario
Método de configuración
Estructura de almacenamiento después de la descompresión
Descomprima todos los paquetes ZIP cargados en el directorio zipfolder hacia el directorio destfolder, sin crear subdirectorios con los mismos nombres que los paquetes ZIP.
Establezca Prefix en zipfolder/.
Establezca Destination Directory en destfolder.
Seleccione Decompress to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a.txt ├─── b.txt └─── ...Descomprima todos los paquetes ZIP cargados en el directorio zipfolder hacia subdirectorios con los mismos nombres que los paquetes, ubicados en el directorio raíz del bucket.
Configure los siguientes parámetros:
Establezca Prefix en zipfolder/.
Deje Destination Directory vacío.
Seleccione Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip├─── a/│ ├─── a.txt│ └─── ...└─── b/ ├─── b.txt └─── ...Descomprima todos los paquetes ZIP cargados en el directorio zipfolder hacia subdirectorios con los mismos nombres que los paquetes, ubicados dentro del directorio destfolder.
Configure los siguientes parámetros:
Establezca Prefix en zipfolder/.
Establezca Destination Directory en destfolder.
Seleccione Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a/ │ ├─── a.txt │ └─── ... └─── b/ ├─── b.txt └─── ... Seleccione 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. y haga clic en OK.
Modificar una regla de descompresión de paquetes ZIP
Modifique una regla de descompresión cuando necesite actualizar el prefijo del disparador o las configuraciones de la función.
Modificar el parámetro Prefix
En la página Decompress ZIP Package de la consola de OSS, busque el disparador que desea modificar y haga clic en Edit en la columna Actions.
En la pestaña Triggers de la página de detalles de la función, busque el disparador y haga clic en Modify en la columna Actions.
En el panel Modify Trigger, modifique el parámetro Object Prefix y conserve la configuración predeterminada de los demás parámetros.
Haga clic en OK.
Modificar las configuraciones de la función
En la pestaña Configurations de la página de detalles de la función, haga clic en Modify en la sección Basic Settings o en la sección Environment Information.
-
Modifique las configuraciones de la función, como Memory y Execution Timeout Period.
Para obtener más información, consulte Manage functions.
Eliminar un disparador
Los disparadores eliminados no se pueden restaurar. Eliminar un disparador no interrumpe las tareas de descompresión en curso.
En la pestaña Triggers de la página de detalles de la función, busque el disparador que desea eliminar y haga clic en Delete en la columna Actions.
En el mensaje que aparece, haga clic en Delete.
Obtener los resultados de la descompresión
Una vez que la función de descompresión termina de ejecutarse, OSS no devuelve el resultado de forma proactiva. Utilice los siguientes métodos para obtener el resultado y reenviarlo a su servicio de backend.
Método 1: consultar el estado de descompresión en modo de tarea
Cuando se habilita el modo de tarea, cada ejecución de la función de descompresión genera un registro de tarea asíncrona. Consulte el estado de la tarea en la lista de tareas o mediante una llamada a una operación de API.
En la consola de Function Compute, vaya a la página de detalles de la función de descompresión y haga clic en la pestaña Task.
En el área de configuración del modo de tarea, haga clic en Edit y active Task Mode. De manera predeterminada, Task Mode está desactivado. En esta misma área también puede configurar Maximum Retry Attempts (valor predeterminado: 3), Message Time to Live (valor predeterminado: 1 día) e Invocation Destination (valor predeterminado: no configurado).
Con Task Mode activado, cada ejecución de la función de descompresión genera un registro de tarea asíncrona. La lista de tareas muestra el identificador de la tarea, su estado, las horas de inicio y finalización, la duración de la ejecución, el número de reintentos, el identificador de la solicitud y el identificador de la instancia.
También puede llamar a la operación
GetAsyncTaskde Function Compute para consultar el estado de la tarea. Si el estado devuelto es Succeeded, significa que la tarea de descompresión se completó correctamente.
Método 2: configurar un destino de invocación asíncrona para recibir notificaciones automáticas
En el área de configuración del modo de tarea, active Invoke Another Service on Success o Invoke Another Service on Failure para notificar automáticamente a un servicio de destino cuando termine la tarea de descompresión. Se admiten los siguientes tipos de servicios de destino:
Function Compute (FC)
ApsaraMQ for RocketMQ
Simple Message Queue (anteriormente MNS)
EventBridge
Método 3: enviar notificaciones al servicio de backend mediante una devolución de llamada HTTP personalizada
Los destinos de invocación asíncrona integrados no admiten devoluciones de llamada HTTP personalizadas. Si necesita notificar el resultado de la descompresión a un servicio de backend autogestionado, como uno desplegado en un clúster de ACK, siga este enfoque:
Cree una función de Function Compute que envíe una solicitud de notificación HTTP al endpoint de su servicio de backend.
Configure esta función como destino de invocación asíncrona de la función de descompresión. Para ello, siga los pasos descritos en el método 2.
Cuando la tarea de descompresión termine, Function Compute invocará esta función y se enviará la notificación HTTP a su servicio de backend.
