Todos los productos
Search
Centro de documentos

Intelligent Media Management:Package file decompression

Última actualización: Sep 22, 2026

Este tema describe cómo usar Intelligent Media Management (IMM) para comprimir uno o varios objetos almacenados en Object Storage Service (OSS), consultar el contenido de un archivo dentro de un paquete y descomprimirlo. La compresión y la descompresión resultan útiles en muchos escenarios, como la transmisión de datos, las copias de seguridad y el archivado. Con estas funciones se gestionan y procesan los datos de un bucket de manera eficiente. Por ejemplo, esta función permite mejorar la velocidad de transmisión de datos, reducir el uso de almacenamiento y facilitar el archivado y el intercambio de información.

Descripción general de la función

IMM es compatible con la compresión y descompresión de archivos en la nube, lo que mejora la eficiencia y simplifica su gestión. Con IMM puede comprimir y descomprimir objetos en línea directamente en OSS.

Requisitos previos

  • Creó un par de AccessKey. Para más información, consulte Create an AccessKey pair.

  • Activó OSS, creó un bucket y cargó archivos en él. Para más información, consulte Upload files.

  • Activó IMM. Para más información, consulte Activate IMM.

  • Creó un proyecto en la consola de IMM. Para más información, consulte Create a project.

    Nota
    • También puede llamar a la operación CreateProject para crear un proyecto. Para más información, consulte Create a project.

    • Llame a la operación ListProjects para listar todos los proyectos de una región específica.

Formatos compatibles

  • La función de compresión solo admite operaciones de empaquetado.

  • La función de compresión solo admite el formato ZIP.

  • Las funciones de descompresión y vista previa de paquetes admiten los formatos ZIP, RAR y 7z.

Notas

La información de las tareas de compresión, lectura de paquetes y descompresión se conserva durante 7 días a partir de la fecha de inicio. Una vez transcurrido ese periodo, ya no se puede consultar. Utilice cualquiera de los siguientes métodos para consultar la información de las tareas:

  • Llame a la operación GetTask o ListTasks para consultar la información de la tarea.

  • Active Message Service (MNS) en la misma región que Intelligent Media Management (IMM) y configure una suscripción para recibir notificaciones inmediatas sobre las tareas. Para más información sobre el formato de las notificaciones asíncronas, consulte Asynchronous notification message format. Para más información sobre el SDK de MNS, consulte Step 4: Receive and delete messages.

  • Active ApsaraMQ for RocketMQ en la misma región que IMM. Luego, cree una instancia de RocketMQ 4.0, un topic y un grupo de consumidores para recibir notificaciones inmediatas sobre las tareas. Para más información sobre el formato de las notificaciones asíncronas, consulte Asynchronous notification message format. Para más información sobre cómo usar ApsaraMQ for RocketMQ, consulte Use HTTP SDKs to send and receive normal messages.

  • Active e integre EventBridge en la misma región que IMM para recibir notificaciones inmediatas sobre las tareas. Para más información, consulte Intelligent Media Management (IMM) events.

Compresión

Llame a la operación CreateFileCompressionTask - Create a file compression task para comprimir varios objetos en un bucket de OSS.

Información de compresión

  • Proyecto de IMM: test-project

  • Objetos por comprimir:

    • oss://test-bucket/test-object1.jpg

    • oss://test-bucket/test-object2.jpg

    • oss://test-bucket/test-object3.jpg

    • oss://test-bucket/test-object4.jpg

  • Ruta de salida: oss://test-bucket/test-target-object.zip

Ejemplo de solicitud

{
    "ProjectName": "test-project",
    "CompressedFormat": "zip",
    "Sources": "[{\"URI\":\"oss://test-bucket/test-object1.jpg\"},{\"URI\":\"oss://test-bucket/test-object2.jpg\"},{\"URI\":\"oss://test-bucket/test-object3.jpg\"},{\"URI\":\"oss://test-bucket/test-object4.jpg\"}]",
    "TargetURI": "oss://test-bucket/test-target-object.zip"
}

Ejemplo de respuesta

{
  "TaskId": "FileCompression-7e3e2b8c-81bd-495f-a338-25b3762a****",
  "RequestId": "C54C5888-9C96-5A35-AF73-ABD6EF15****",
  "EventId": "164-1S6uXTYhUU4qAFCPOTcYdcb****"
}

Código de ejemplo

A continuación se muestra un ejemplo de código para comprimir varios objetos:

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Use your AccessKey ID and AccessKey secret to initialize the client.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Specify the IMM endpoint.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code for data security reasons.
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        sources_0 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object1.jpg'
        )
        sources_1 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object2.jpg'
        )
        sources_2 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object3.jpg'
        )
        sources_3 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object4.jpg'
        )
        create_file_compression_task_request = imm_20200930_models.CreateFileCompressionTaskRequest(
            project_name='test-project',
            sources=[
                sources_0,
                sources_1,
                sources_2,
                sources_3
            ],
            target_uri='oss://test-bucket/test-target-object.zip',
            compressed_format='zip',
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Write your code to print the response of the API operation if necessary.
            client.create_file_compression_task_with_options(create_file_compression_task_request, runtime)
        except Exception as error:
            # Print the error message if necessary.
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code for data security reasons.
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        sources_0 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object1.jpg'
        )
        sources_1 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object2.jpg'
        )
        sources_2 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object3.jpg'
        )
        sources_3 = imm_20200930_models.CreateFileCompressionTaskRequestSources(
            uri='oss://test-bucket/test-object4.jpg'
        )
        create_file_compression_task_request = imm_20200930_models.CreateFileCompressionTaskRequest(
            project_name='test-project',
            sources=[
                sources_0,
                sources_1,
                sources_2,
                sources_3
            ],
            target_uri='oss://test-bucket/test-target-object.zip',
            compressed_format='zip',
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Write your code to print the response of the API operation if necessary.
            await client.create_file_compression_task_with_options_async(create_file_compression_task_request, runtime)
        except Exception as error:
            # Print the error message if necessary.
            UtilClient.assert_as_string(error.message)

if __name__ == '__main__':
    Sample.main(sys.argv[1:])

Consulta del contenido de un paquete

Llame a la operación CreateArchiveFileInspectionTask - Create a package parsing task para consultar el contenido de un paquete en OSS.

Información del paquete

  • Nombre del proyecto: test-project

  • Ruta del paquete: oss://test-bucket/test-target-object.zip

  • Ruta de salida: oss://test-bucket/test-target-object.json

Ejemplo de solicitud

{
    "ProjectName": "test-project",
    "SourceURI": "oss://test-bucket/test-target-object.zip",
    "TargetURI": "oss://test-bucket/test-target-object.json"
}

Ejemplo de respuesta

{
    "TaskId": "ArchiveFileInspection-4a7c308a-5671-4d34-ba41-86a942d0****",
    "RequestId": "20D23855-C9E6-5193-8939-3A8797E1****",
    "EventId": "2AB-1S53L6FTdU6yMxkc1JgpwcV****"
}

Código de ejemplo

A continuación se muestra un ejemplo de código para consultar el contenido de un paquete:

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Use your AccessKey ID and AccessKey secret to initialize the client.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Specify the IMM endpoint.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code for data security reasons.
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        create_archive_file_inspection_task_request = imm_20200930_models.CreateArchiveFileInspectionTaskRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-target-object.zip',
            target_uri='oss://test-bucket/test-target-object.json'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # You can choose to print the response of the API operation.
            client.create_archive_file_inspection_task_with_options(create_archive_file_inspection_task_request, runtime)
        except Exception as error:
            # Print the error message if necessary.
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code for data security reasons.
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        create_archive_file_inspection_task_request = imm_20200930_models.CreateArchiveFileInspectionTaskRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-target-object.zip',
            target_uri='oss://test-bucket/test-target-object.json',
        )
        runtime = util_models.RuntimeOptions()
        try:
            # You can choose to print the response of the API operation.
            await client.create_archive_file_inspection_task_with_options_async(create_archive_file_inspection_task_request, runtime)
        except Exception as error:
            # Print the error message if necessary.
            UtilClient.assert_as_string(error.message)

if __name__ == '__main__':
    Sample.main(sys.argv[1:])

Descompresión

Llame a la operación CreateFileUncompressionTask - Create a decompression task para descomprimir un paquete en OSS.

Información de descompresión

  • Nombre del proyecto: test-project

  • Ruta del paquete: oss://test-bucket/test-target-object.zip

  • Objeto por descomprimir: test-object1.jpg

  • Ruta de salida: oss://test-bucket/test-target-object

Ejemplo de solicitud

{
    "ProjectName": "test-project",
    "SourceURI": "oss://test-bucket/test-target-object.zip",
    "Target": "{\"URI\":\"oss://test-bucket/test-target-object\"}",
    "SelectedFiles": "[\"test-object1.jpg\"]"
}

Ejemplo de respuesta

{
  "TaskId": "FileUncompression-f31061ab-eaeb-469d-ac8f-9af10e5d****",
  "RequestId": "20115435-9F59-58C0-8D15-E6ECC096****",
  "EventId": "3B6-1S6ywKAB2ogXJnrzmk6tFUF****"
}

Código de ejemplo

A continuación se muestra un ejemplo de código para descomprimir un paquete:

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
            access_key_id: str,
            access_key_secret: str,
    ) -> imm20200930Client:
        """
        Use your AccessKey ID and AcecssKey secret to initialize the client.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # The endpoint.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
            args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code for data security reasons.
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        target = imm_20200930_models.CreateFileUncompressionTaskRequestTarget(
            uri='oss://test-bucket/test'
        )
        create_file_uncompression_task_request = imm_20200930_models.CreateFileUncompressionTaskRequest(
            project_name='test-project',
            target=target,
            source_uri='oss://test-bucket/test-target-object.zip'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Write code to print the response of the API operation based on your business requirements.
            response = client.create_file_uncompression_task_with_options(create_file_uncompression_task_request, runtime)
        except Exception as error:
            # You can choose to print the error if necessary.
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
            args: List[str],
    ) -> None:
        # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M.
        # We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code for data security reasons.
        # In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        target = imm_20200930_models.CreateFileUncompressionTaskRequestTarget(
            uri='oss://test-bucket/test'
        )
        create_file_uncompression_task_request = imm_20200930_models.CreateFileUncompressionTaskRequest(
            project_name='test-project',
            target=target,
            source_uri='oss://test-bucket/test-target-object.zip'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Write code to print the response of the API operation based on your business requirements.
            await client.create_file_uncompression_task_with_options_async(create_file_uncompression_task_request, runtime)
        except Exception as error:
            # You can choose to print the error if necessary.
            UtilClient.assert_as_string(error.message)

if __name__ == '__main__':
    Sample.main(sys.argv[1:])

Facturación

Durante la descompresión de archivos empaquetados se generan los siguientes elementos de facturación en OSS e IMM:

  • En OSS: para más información sobre los precios, consulte Precios de OSS.

    API

    Elemento de facturación

    Descripción

    GetObject

    Solicitudes GET

    Se le cobran tarifas de solicitud según la cantidad de solicitudes exitosas.

    Tráfico saliente por Internet

    Si llama a la operación GetObject mediante un endpoint público, como oss-cn-hangzhou.aliyuncs.com, o un endpoint de aceleración, como oss-accelerate.aliyuncs.com, se le cobran tarifas por tráfico saliente a través de Internet según el tamaño de los datos.

    Recuperación de objetos IA

    Si recupera objetos IA, se le cobran tarifas de recuperación de datos IA según el tamaño de los objetos recuperados.

    Capacidad de recuperación de datos desde Archive Direct Read

    Si recupera objetos Archive de un bucket con acceso en tiempo real habilitado, se le cobran tarifas de recuperación de datos Archive según el tamaño de los objetos recuperados.

    Aceleración de transferencia

    Si habilita la aceleración de transferencia y usa un endpoint de aceleración para acceder a su bucket, se le cobran tarifas de aceleración de transferencia según el tamaño de los datos.

  • En IMM: para más información sobre los precios, consulte IMM billing items.

    Importante

    A partir de las 11:00 del 28 de julio de 2025 (UTC+8), los servicios de compresión y descompresión de archivos de IMM pasarán de un modelo gratuito a uno de pago. Para más información, consulte Anuncio de ajuste de facturación de IMM.

    API

    Elemento de facturación

    Descripción

    CreateFileCompressionTask

    FileProcess

    Se le cobran tarifas de compresión según el tamaño de los archivos de origen por comprimir.

    CreateFileUncompressionTask

    Se le cobran tarifas de descompresión según el tamaño de los archivos descomprimidos.

    CreateArchiveFileInspectionTask

    FilePreview

    Se le cobran tarifas de vista previa según el tamaño del paquete consultado.

Preguntas frecuentes