Todos los productos
Search
Centro de documentos

Object Storage Service:ZIP package decompression

Última actualización: Sep 22, 2026

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.

image
  1. Se carga un paquete ZIP en el directorio que especifica el parámetro Prefix de una regla de descompresión.

  2. 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.

  3. 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

  1. Inicie sesión en la consola de OSS.

  2. 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.

  3. En el árbol de navegación izquierdo, elija Data Processing > Decompress ZIP Package.

  4. 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.

    Importante

    Si 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.

    Aviso

    Para 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          └─── ...
  5. 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

  1. 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.

  2. 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.

  3. En el panel Modify Trigger, modifique el parámetro Object Prefix y conserve la configuración predeterminada de los demás parámetros.

  4. Haga clic en OK.

Modificar las configuraciones de la función

  1. 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.

  2. 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

Nota

Los disparadores eliminados no se pueden restaurar. Eliminar un disparador no interrumpe las tareas de descompresión en curso.

  1. 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.

  2. 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.

  1. 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.

  2. 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).

  3. 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.

  4. También puede llamar a la operación GetAsyncTask de 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:

  1. Cree una función de Function Compute que envíe una solicitud de notificación HTTP al endpoint de su servicio de backend.

  2. 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.

  3. 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.

Referencia

Package and download objects as a ZIP file

Preguntas frecuentes

¿Qué debo hacer si la carga de un paquete ZIP no activa una tarea de descompresión en Function Compute?

Revise el encabezado de respuesta x-oss-event-status codificado en Base64. Si el valor decodificado de x-oss-event-status es {"Result": "Ok"}, la descompresión se activó. Si el valor decodificado de x-oss-event-status no es {"Result": "Ok"}, vuelva a cargar el paquete ZIP. Para obtener más información, consulte Simple upload.

Nota

Cada objeto dentro de un paquete ZIP no puede superar 1 GB. La duración máxima predeterminada de la descompresión es de 2 horas.

¿Qué debo hacer si un paquete ZIP no se descomprime por un tiempo de espera agotado?

La duración máxima predeterminada de la descompresión es de 2 horas, pero se puede aumentar hasta 24 horas. Para modificarla, siga estos pasos:

  1. 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.

  2. En la página de detalles de la función, haga clic en la pestaña Configurations.

  3. Haga clic en Modify junto a Environment Information.

  4. Modifique el valor del campo Execution Timeout Period y haga clic en OK.

¿Cómo descomprimo un paquete que contiene un objeto de más de 1 GB?

Si un objeto dentro de un paquete ZIP supera 1 GB, almacene el paquete en File Storage NAS y descomprímalo ahí. Esto genera cargos de almacenamiento de NAS. Consulte el repositorio de GitHub unzip-oss-nas.

¿Function Compute descomprime un paquete ZIP que está dentro de otro paquete ZIP?

No. Function Compute descomprime el paquete ZIP una sola vez.

Si el paquete ZIP contiene otros paquetes anidados, los paquetes internos no se descomprimen. Cárguelos por separado para activar otra tarea de descompresión.

¿La descompresión de paquetes ZIP permite extraer los datos en un bucket diferente?

No. La descompresión se limita a los directorios del mismo bucket. Para extraer los datos en otro bucket, implemente una función personalizada en Function Compute.

¿Los objetos extraídos durante la descompresión de un paquete ZIP aparecen de forma síncrona en el directorio de destino?

Sí. Function Compute carga los objetos extraídos en el directorio de destino mientras continúa descomprimiendo los datos restantes.

Function Compute carga en OSS los objetos ya descomprimidos de un paquete ZIP al mismo tiempo que procesa el resto del contenido.

¿Cómo compruebo si una tarea de descompresión terminó?

Consulte los registros de invocación de la función para verificar el estado de la descompresión.

  1. En la página Decompress ZIP Package de la consola de OSS, busque el disparador y haga clic en Edit en la columna Actions.

  2. En la página de detalles de la función, haga clic en la pestaña Logs.

  3. Haga clic en Enable.

  4. Adjunte la política AliyunLogFullAccess al rol de RAM. Para obtener más información, consulte Manage permissions for a RAM role.

  5. Si se activa una tarea de descompresión al cargar un paquete ZIP, revise la información de los registros en la pestaña Logs para comprobar si la descompresión terminó.

    Si el registro contiene "FC Invoke End", la tarea de descompresión finalizó.

    image.png

¿La descompresión de paquetes ZIP admite archivos .rar y .tar.gz?

No. Solo se admiten archivos .zip.

La descompresión de paquetes ZIP únicamente funciona con archivos ZIP.

¿Se envía una notificación cuando termina la descompresión?

No. OSS no devuelve el resultado de la descompresión de forma proactiva. Para conocer cómo obtener el resultado, consulte Obtain decompression results.

¿OSS admite compresión en línea?

No, OSS no admite compresión en línea.

Utilice Function Compute para empaquetar y descargar objetos. Use Function Compute to package and download OSS objects.

¿Puedo usar la descompresión de paquetes ZIP para descomprimir archivos ZIP divididos en varias partes?

No. La descompresión de paquetes ZIP no combina ni descomprime archivos ZIP divididos en varias partes.

Esta función no fusiona el contenido de paquetes ZIP multipartes, por lo que no es posible descomprimirlos.

¿Por qué el botón Decompress ZIP Package aparece atenuado?

  • Function Compute no está activado. Actívelo en la Function Compute.

  • La descompresión de paquetes ZIP no es compatible con la región de su bucket. Para obtener más información, consulte Limitations.