すべてのプロダクト
Search
ドキュメントセンター

Intelligent Media Management:パッケージファイルの展開

最終更新日:Nov 09, 2025

このトピックでは、Intelligent Media Management (IMM) を使用して Object Storage Service (OSS) に保存されている 1 つ以上のオブジェクトを圧縮する方法、パッケージ内のファイルコンテンツをクエリする方法、およびパッケージを展開する方法について説明します。圧縮と展開は、データ転送、バックアップ、アーカイブなど、多くのシナリオで役立ちます。圧縮と展開を使用して、バケット内のデータを効率的に管理および処理できます。たとえば、この機能を使用して、データ転送速度を向上させ、ストレージ使用量を削減し、データのアーカイブと共有を容易にすることができます。

機能概要

IMM は、クラウド内のファイルの圧縮と展開をサポートしており、効率を向上させ、ファイル管理を簡素化します。IMM を使用して、OSS 内のオブジェクトをオンラインで圧縮および展開できます。

前提条件

  • AccessKey ペアが作成され、取得されていること。詳細については、「AccessKey ペアの作成」をご参照ください。

  • OSS が有効化され、バケットが作成され、オブジェクトがバケットにアップロードされていること。詳細については、「オブジェクトのアップロード」をご参照ください。

  • IMM が有効化されていること。詳細については、「IMM の有効化」をご参照ください。

  • IMM コンソールでプロジェクトが作成されていること。IMM コンソールを使用してプロジェクトを作成する方法の詳細については、「プロジェクトの作成」をご参照ください。

    説明
    • CreateProject 操作を呼び出してプロジェクトを作成することもできます。詳細については、「CreateProject」をご参照ください。

    • ListProjects 操作を呼び出して、特定のリージョン内の既存のプロジェクトをクエリできます。詳細については、「ListProjects」をご参照ください。

サポートされているフォーマット

  • 圧縮機能は、パッケージング操作のみをサポートします。

  • 圧縮機能は、ZIP フォーマットのみをサポートします。

  • 展開およびパッケージプレビュー機能は、ZIP、RAR、および 7z フォーマットをサポートします。

注意

圧縮、パッケージ読み取り、および展開タスクの情報は、タスク開始日から 7 日間保持され、7 日間の期間が終了した後はクエリできません。次のいずれかのメソッドを使用してタスク情報をクエリできます。

  • GetTask または ListTasks 操作を呼び出します。

  • IMM プロジェクトが配置されているリージョンで、Simple Message Queue (SMQ) サブスクリプションを構成して、タスク情報通知を受信します。詳細については、「非同期メッセージの例」をご参照ください。MNS SDK の詳細については、「ステップ 4: メッセージの受信と削除」をご参照ください。

  • IMM プロジェクトが配置されているリージョンで、ApsaraMQ for RocketMQ 4.0 インスタンス、Topic、およびグループを作成して、タスク通知を受信します。詳細については、「非同期メッセージの例」をご参照ください。ApsaraMQ for RocketMQ の使用方法の詳細については、「HTTP クライアント SDK を使用して通常メッセージを送受信する」をご参照ください。

  • IMM プロジェクトが配置されているリージョンで、EventBridge を使用してタスク情報通知を受信します。詳細については、「IMM イベント」をご参照ください。

圧縮

CreateFileCompressionTask - ファイル圧縮タスクの作成 操作を呼び出して、OSS バケット内の複数のオブジェクトを圧縮します。

圧縮情報

  • IMM プロジェクト: test-project

  • 圧縮するオブジェクト:

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

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

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

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

  • 出力パス: oss://test-bucket/test-target-object.zip

リクエストの例

{
    "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"
}

応答の例

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

サンプルコード

次のサンプルコードは、複数のオブジェクトを圧縮する方法の例を示しています。

# -*- coding: utf-8 -*-
# このファイルは自動生成されます。編集しないでください。ありがとうございます。
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:
        """
        AccessKey ID と AccessKey Secret を使用してクライアントを初期化します。
        @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
        )
        # IMM エンドポイントを指定します。
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。これらの資格情報を使用して操作を実行することは、リスクの高い操作です。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することを推奨します。
        # データセキュリティ上の理由から、プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことを推奨します。
        # この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。
        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:
            # 必要に応じて、API 操作の応答を出力するコードを記述します。
            client.create_file_compression_task_with_options(create_file_compression_task_request, runtime)
        except Exception as error:
            # 必要に応じて、エラーメッセージを出力します。
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。これらの資格情報を使用して操作を実行することは、リスクの高い操作です。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することを推奨します。
        # データセキュリティ上の理由から、プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことを推奨します。
        # この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。
        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:
            # 必要に応じて、API 操作の応答を出力するコードを記述します。
            await client.create_file_compression_task_with_options_async(create_file_compression_task_request, runtime)
        except Exception as error:
            # 必要に応じて、エラーメッセージを出力します。
            UtilClient.assert_as_string(error.message)


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

パッケージの内容のクエリ

CreateArchiveFileInspectionTask - パッケージ解析タスクの作成 操作を呼び出して、OSS 内のパッケージの内容をクエリします。

パッケージ情報

  • プロジェクト名: test-project

  • パッケージのパス: oss://test-bucket/test-target-object.zip

  • 出力パス: oss://test-bucket/test-target-object.json

リクエストの例

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

応答の例

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

サンプルコード

次のサンプルコードは、パッケージの内容をクエリする方法の例を示しています。

# -*- coding: utf-8 -*-
# このファイルは自動生成されます。編集しないでください。ありがとうございます。
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:
        """
        AccessKey ID と AccessKey Secret を使用してクライアントを初期化します。
        @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
        )
        # IMM エンドポイントを指定します。
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。これらの資格情報を使用して操作を実行することは、リスクの高い操作です。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することを推奨します。
        # データセキュリティ上の理由から、プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことを推奨します。
        # この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。
        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:
            # API 操作の応答を出力することを選択できます。
            client.create_archive_file_inspection_task_with_options(create_archive_file_inspection_task_request, runtime)
        except Exception as error:
            # 必要に応じて、エラーメッセージを出力します。
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。これらの資格情報を使用して操作を実行することは、リスクの高い操作です。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することを推奨します。
        # データセキュリティ上の理由から、プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことを推奨します。
        # この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。
        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:
            # API 操作の応答を出力することを選択できます。
            await client.create_archive_file_inspection_task_with_options_async(create_archive_file_inspection_task_request, runtime)
        except Exception as error:
            # 必要に応じて、エラーメッセージを出力します。
            UtilClient.assert_as_string(error.message)


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

展開

CreateFileUncompressionTask - 展開タスクの作成 操作を呼び出して、OSS 内のパッケージを展開します。

展開情報

  • プロジェクト名: test-project

  • パッケージのパス: oss://test-bucket/test-target-object.zip

  • 展開するオブジェクト: test-object1.jpg

  • 出力パス: oss://test-bucket/test-target-object

リクエストの例

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

応答の例

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

サンプルコード

次のサンプルコードは、パッケージを展開する方法の例を示しています。

# -*- coding: utf-8 -*-
# このファイルは自動生成されます。編集しないでください。ありがとうございます。
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:
        """
        AccessKey ID と AccessKey Secret を使用してクライアントを初期化します。
        @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
        )
        # エンドポイント。
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
            args: List[str],
    ) -> None:
        # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。これらの資格情報を使用して操作を実行することは、リスクの高い操作です。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することを推奨します。
        # データセキュリティ上の理由から、プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことを推奨します。
        # この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。
        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:
            # ビジネス要件に基づいて API 操作の応答を出力するコードを記述します。
            response = client.create_file_uncompression_task_with_options(create_file_uncompression_task_request, runtime)
        except Exception as error:
            # 必要に応じて、エラーを出力することを選択できます。
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
            args: List[str],
    ) -> None:
        # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。これらの資格情報を使用して操作を実行することは、リスクの高い操作です。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することを推奨します。
        # データセキュリティ上の理由から、プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey Secret) を含めないことを推奨します。
        # この例では、環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。
        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:
            # ビジネス要件に基づいて API 操作の応答を出力するコードを記述します。
            await client.create_file_uncompression_task_with_options_async(create_file_uncompression_task_request, runtime)
        except Exception as error:
            # 必要に応じて、エラーを出力することを選択できます。
            UtilClient.assert_as_string(error.message)


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

課金

パッケージファイルの展開中に、OSS および IMM 側で次の課金項目が生成されます。

  • OSS 側: 料金の詳細については、「OSS 料金」をご参照ください。

    API

    課金項目

    説明

    GetObject

    GET リクエスト

    成功したリクエストの数に基づいてリクエスト料金が請求されます。

    インターネット経由のアウトバウンドトラフィック

    oss-cn-hangzhou.aliyuncs.com などのパブリックエンドポイント、または oss-accelerate.aliyuncs.com などのアクセラレーションエンドポイントを使用して GetObject 操作を呼び出す場合、データサイズに基づいてインターネット経由のアウトバウンドトラフィックの料金が請求されます。

    IA オブジェクトの取得

    IA オブジェクトが取得された場合、取得された IA オブジェクトのサイズに基づいて IA データ取得料金が請求されます。

    アーカイブダイレクト読み取りからのデータ取得容量

    リアルタイムアクセスが有効になっているバケット内のアーカイブオブジェクトが取得された場合、取得されたアーカイブオブジェクトのサイズに基づいてアーカイブデータ取得料金が請求されます。

    転送アクセラレーション

    転送アクセラレーションを有効にし、アクセラレーションエンドポイントを使用してバケットにアクセスする場合、データサイズに基づいて転送アクセラレーション料金が請求されます。

  • IMM 側: 料金の詳細については、「IMM 課金項目」をご参照ください。

    重要

    2025 年 7 月 28 日 11:00 (UTC + 08:00) 以降、IMM ファイルの圧縮および展開サービスは無料モデルから有料モデルにアップグレードされます。詳細については、「IMM 課金調整のお知らせ」をご参照ください。

    API

    課金項目

    説明

    CreateFileCompressionTask

    FileProcess

    圧縮するソースファイルのサイズに基づいて圧縮料金が請求されます。

    CreateFileUncompressionTask

    展開されたファイルのサイズに基づいて展開料金が請求されます。

    CreateArchiveFileInspectionTask

    FilePreview

    プレビューするパッケージのサイズに基づいてプレビュー料金が請求されます。

よくある質問

  • CreateFileCompressionTask 操作がパッケージの作成を完了したかどうかは、どうすればわかりますか?

  • CreateFileCompressionTask 操作を使用して、異なる OSS バケットのオブジェクトを単一のパッケージに圧縮できますか?

    • はい、必要な権限があれば、異なる OSS バケットのオブジェクトを単一のパッケージに圧縮できます。