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

Object Storage Service:ZIP パッケージの解凍

最終更新日:Jul 04, 2025

複数のオブジェクトを一度にアップロードする場合、元のディレクトリ構造を保持したままオブジェクトをアップロードする場合、オブジェクトの完全なリストをアップロードする場合、またはオブジェクトにリソースを割り当てる場合は、ZIP パッケージ解凍ルールを構成し、Object Storage Service (OSS) バケットの指定されたディレクトリに ZIP オブジェクトをアップロードできます。 Function Compute は、解凍ルールに基づいて ZIP オブジェクトを自動的に解凍し、解凍されたデータを OSS の指定されたディレクトリに返します。

前提条件

Function Compute がアクティブ化されていること。Function Compute がアクティブ化されていない場合は、Function Compute ページでアクティブ化してください。

シナリオ

  • バッチアップロード: 多数の小規模オブジェクトをアップロードすると時間がかかる場合があります。アップロード効率を向上させるには、ZIP パッケージ解凍ルールを構成し、オブジェクトの ZIP パッケージをアップロードします。

  • リソースの完全性: ZIP パッケージ解凍は、複数のファイルを個別にアップロードするのではなく、アップロード効率を向上させるために完全なリソースに結合する場合に役立ちます。

  • ディレクトリ構造の保持: 静的 Web サイトには、多数の静的リソースが含まれ、比較的深いディレクトリ構造を持つ場合があります。 OSS で個々のディレクトリを作成し、これらのディレクトリにリソースをアップロードするには、多くの時間がかかります。この場合、ZIP パッケージ解凍ルールを構成し、目的のディレクトリ構造を持つ ZIP パッケージをローカルに作成し、その ZIP パッケージを OSS にアップロードできます。

  • コンテンツ配信: 多数のオブジェクトを異なるユーザーまたはサーバーに配信する必要がある場合は、オブジェクトを ZIP パッケージに圧縮し、ZIP パッケージ解凍を使用して、OSS にアップロードされたときに ZIP パッケージを指定されたディレクトリに解凍できます。これにより、転送時間と帯域幅の消費が削減されます。

しくみ

OSS は Function Compute を使用して、OSS にアップロードされた ZIP パッケージを解凍します。次の図は、解凍プロセスを示しています。

image
  1. ZIP パッケージ解凍ルールの Prefix パラメーターで指定されたディレクトリに ZIP パッケージがアップロードされます。

  2. Compute Function トリガーが使用されます。

    ZIP パッケージ解凍ルールを構成する際にトリガーを承認して、OSS がトリガーロール AliyunOSSEventNotificationRole を使用して Function Compute にアクセスできるようにする必要があります。トリガーロールを承認すると、デフォルトで Function Compute にアクセスするための権限がロールに付与されます。

  3. Function Compute は ZIP パッケージを解凍し、解凍されたデータを指定された OSS ディレクトリに保存します。

    ZIP パッケージ解凍ルールを構成する際に、Function Compute が OSS にアクセスすることを承認する必要があります。承認中に、Function Compute が OSS バケットからオブジェクトを読み取り、解凍されたデータをバケットに書き込むことを許可するロールを作成する必要があります。このようなロールを作成すると、バケットに対する読み取りおよび書き込み権限がロールに付与されます。

課金

ZIP パッケージ解凍は付加価値機能であり、OSS と Function Compute で料金が発生します。内部エンドポイントを使用して OSS と Function Compute 間でデータを転送するために使用されるトラフィックについては課金されません。

  • OSS 側では、API 操作の呼び出しとオブジェクトストレージに対して課金されます。詳細については、「課金の概要」をご参照ください。

  • Function Compute 側では、実行時間に基づいて vCPU 使用量、メモリ使用量、およびディスク使用量に対して課金されます。詳細については、「課金の概要」をご参照ください。

    たとえば、ZIP パッケージ解凍タスクが 3 GB のメモリと 2 コア vCPU を持つ Function Compute インスタンスを使用し、解凍の完了に 5 分かかり、一時的に作成されたストレージファイルに割り当てられたディスクのデフォルトサイズが 10 GB である場合、Function Compute によって課金される料金は、次の式に基づいて計算されます。

リソース使用項目

単位

課金の例

vCPU 使用量

vCPU 秒

アクティブな vCPU 使用量 = vCPU 容量 × 実行時間 (秒)

関数が 2 つの vCPU で構成され、300 秒間実行される場合、1 回の実行の vCPU 使用量は、次の式を使用して計算されます。2 × 300 = 600 vCPU 秒

メモリ使用量

GB 秒

メモリ使用量 = メモリ容量 (GB) × 実行時間 (秒)

関数が 3 GB のメモリサイズで構成され、300 秒間実行される場合、1 回の実行のメモリ使用量は、次の式を使用して計算されます。3 × 300 = 900 GB 秒

ディスク使用量

GB 秒

ディスク使用量 = ディスク容量 (GB) × 実行時間 (秒)

注: 最大 512 MB のディスク使用量は無料です。

関数が 10 GB の一時ディスクサイズで構成され、300 秒間実行される場合、1 回の実行のディスク使用量は、次の式を使用して計算されます。(10 - 512 / 1024) × 300 = 2850 GB 秒

制限事項

  • ストレージクラス: コールドアーカイブ オブジェクトは、解凍する前にリストアする必要があります。アーカイブオブジェクトのリアルタイムアクセスが有効になっていないバケット内のアーカイブオブジェクトも、解凍する前にリストアする必要があります。

  • オブジェクトとディレクトリの命名: 解凍の中断や解凍後のオブジェクト名とディレクトリ名における文字化けなどの潜在的な問題を回避するために、オブジェクトとディレクトリを UTF-8 または GB 2312 でエンコードすることをお勧めします。

  • オブジェクトサイズと解凍時間: ZIP パッケージ内の各オブジェクトのサイズは 1 GB を超えることはできません。必要に応じて、解凍時間を増やすことができます。詳細については、「解凍タイムアウトのために ZIP パッケージが解凍に失敗した場合はどうすればよいですか?」をご参照ください。

ZIP パッケージ解凍ルールの構成

  1. OSS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションツリーでデータ処理 > Zip パッケージを解凍 を選択します。

  4. Zip パッケージを解凍 をクリックします。Zip パッケージを解凍 パネルで、次の表で説明するパラメーターを構成します。

    パラメーター

    パラメーター

    必須

    説明

    サービス認証

    はい

    Function Compute が OSS からデータを読み取り、データを書き込み、関数を実行することを承認します。

    [承認] をクリックします。表示されるページで承認を完了します。

    トリガーの承認

    はい

    OSS が Function Compute にアクセスすることを承認します。

    [承認] をクリックします。表示されるページで承認を完了します。OSS が Function Compute にアクセスすることを承認されている場合、[トリガーの承認] パラメーターの代わりに [トリガーロール] パラメーターが表示されます。

    プレフィックス

    いいえ

    Function Compute が ZIP パッケージを解凍するようにトリガーするために、パッケージ名に含まれる必要があるプレフィックスを指定します。指定したプレフィックスを含む ZIP パッケージをアップロードするか、プレフィックスで指定したディレクトリに ZIP パッケージをアップロードすると、Function Compute は ZIP パッケージを解凍します。このパラメーターを指定しない場合、Function Compute はバケットにアップロードされたすべての ZIP パッケージを解凍します。

    重要

    このパラメーターを指定しない場合、解凍タスクが繰り返し実行される可能性があります。したがって、各解凍ルールにプレフィックスを指定することをお勧めします。詳細については、「トリガーループを回避するにはどうすればよいですか?」をご参照ください。

    保存先ディレクトリ

    いいえ

    ZIP パッケージから抽出されたオブジェクトを格納するディレクトリを指定します。このパラメーターを指定しない場合、Function Compute は ZIP パッケージを現在のバケットのルートディレクトリに解凍します。

    • ZIP パッケージから抽出されたオブジェクトを、保存先ディレクトリ内のパッケージと同じ名前のサブディレクトリに格納する場合は、[圧縮オブジェクト名を保存先ディレクトリに追加する] を選択します。

    • 元の ZIP パッケージ名を保持せずに、ZIP パッケージから抽出されたオブジェクトを保存先ディレクトリに格納する場合は、[保存先ディレクトリに解凍する] を選択します。このパラメーターの構成方法の詳細については、次の表の例を参照してください。

    警告

    OSS-HDFS の可用性を維持し、データの汚染を防ぐために、OSS-HDFS が有効になっているバケットの ZIP パッケージ抽出ルールを構成する際に、[保存先ディレクトリ].dlsdata/ に設定しないでください。

    解凍構成の例

    シナリオ

    構成方法

    解凍後のストレージ構造

    zipfolder ディレクトリにアップロードされたすべての ZIP パッケージを、ZIP パッケージと同じ名前のサブディレクトリを作成せずに、destfolder ディレクトリに解凍します。

    • [プレフィックス]zipfolder/ に設定します。

    • [保存先ディレクトリ]destfolder に設定します。

    • [保存先ディレクトリに解凍する] を選択します。

    bucket  ├─── zipfolder/   │    ├─── a.zip│    └─── b.zip└─── destfolder/     ├─── a.txt     ├─── b.txt     └─── ... 

    zipfolder ディレクトリにアップロードされたすべての ZIP パッケージを、バケットのルートディレクトリにあるパッケージと同じ名前のサブディレクトリに解凍します。

    次のパラメーターを構成します。

    • [プレフィックス]zipfolder/ に設定します。

    • [保存先ディレクトリ] は空のままにします。

    • [圧縮オブジェクト名を保存先ディレクトリに追加する] を選択します。

    bucket  ├─── zipfolder/   │    ├─── a.zip│    └─── b.zip├─── a/│    ├─── a.txt│    └─── ...└─── b/     ├─── b.txt     └─── ...

    zipfolder ディレクトリにアップロードされたすべての ZIP パッケージを、destfolder ディレクトリにあるパッケージと同じ名前のサブディレクトリに解凍します。

    次のパラメーターを構成します。

    • [プレフィックス]zipfolder/ に設定します。

    • [保存先ディレクトリ]destfolder に設定します。

    • [圧縮オブジェクト名を保存先ディレクトリに追加する] を選択します。

    bucket  ├─── zipfolder/   │    ├─── a.zip│    └─── b.zip└─── destfolder/     ├─── a/     │    ├─── a.txt     │    └─── ...     └─── b/          ├─── b.txt          └─── ...
  5. [利用規約を読み、function Compute をアクティブ化し、function Compute を使用して圧縮ファイルを処理することに同意します。UTF-8 または GB 2312 でエンコードされたファイル名またはフォルダー名のみ処理できます。] を選択し、[OK] をクリックします。

ZIP パッケージ解凍ルールの変更

ビジネス要件に基づいて、ZIP パッケージ解凍ルールを変更できます。

Prefix パラメーターの変更

  1. OSS コンソールの Zip パッケージを解凍 ページで、変更するトリガーを見つけて、[操作] 列の [編集] をクリックします。

  2. 関数詳細ページの [トリガー] タブで、トリガーを見つけて、[操作] 列の [変更] をクリックします。

  3. [トリガーの変更] パネルで、[オブジェクトプレフィックス] パラメーターを変更し、その他のパラメーターのデフォルト設定を保持します。

  4. [OK] をクリックします。

関数構成の変更

  1. 関数詳細ページの [構成] タブで、基本設定 セクションまたは 環境情報 セクションの [変更] をクリックします。

  2. メモリ実行タイムアウト期間 などの関数構成を変更します。

    詳細については、「関数の管理」をご参照ください。

トリガーの削除

説明

削除されたトリガーは使用できなくなり、復元できません。トリガーを削除しても、トリガー下で進行中の解凍タスクは中断されません。

  1. 関数詳細ページの [トリガー] タブで、削除するトリガーを見つけて、[操作] 列の [削除] をクリックします。

  2. 表示されるメッセージで、[削除] をクリックします。

参照

Function Compute を使用して複数のオブジェクトをパッケージとしてダウンロードする

FAQ

ZIP パッケージのアップロードで Function Compute 解凍タスクがトリガーされない場合はどうすればよいですか?

ZIP パッケージ解凍には、OSS と Function Compute 間の相互作用が含まれます。既存の解凍ルールに一致する ZIP パッケージのアップロードは、Function Compute の解凍関数をトリガーして ZIP パッケージを解凍します。OSS は解凍関数の呼び出しに失敗する可能性があります。x-oss-event-status レスポンスヘッダーの Base64 エンコード値を確認することで、解凍がトリガーされたかどうかを確認できます。 x-oss-event-status ヘッダーのデコード値が {"Result": "Ok"} の場合、解凍がトリガーされます。 x-oss-event-status ヘッダーのデコード値が {"Result": "Ok"} でない場合、解凍はトリガーされません。この場合、ZIP パッケージを再アップロードすることをお勧めします。詳細については、「シンプルアップロード」をご参照ください。

説明

ZIP パッケージ内の各オブジェクトのサイズは 1 GB を超えることはできません。ZIP パッケージのデフォルトの最大解凍時間は 2 時間です。

解凍タイムアウトのために ZIP パッケージが解凍に失敗した場合はどうすればよいですか?

デフォルトでは、ZIP パッケージの最大解凍時間は 2 時間です。最大解凍時間を 24 時間に増やすことができます。ZIP パッケージの解凍に 2 時間以上かかる場合は、次の手順を実行して最大解凍時間を変更します。

  1. OSS コンソールの Zip パッケージを解凍 ページで、変更するトリガーを見つけて、[操作] 列の [編集] をクリックします。

  2. 関数詳細ページで、[構成] タブをクリックします。

  3. [環境情報] の横にある [変更] をクリックします。

  4. [実行タイムアウト期間] フィールドの値を変更し、[OK] をクリックします。

1 GB を超えるオブジェクトを含むパッケージを解凍するにはどうすればよいですか?

ZIP パッケージ内のオブジェクトのサイズが 1 GB を超える場合は、パッケージを NAS ファイルシステムに保存し、パッケージを NAS ファイルシステム内のディレクトリに解凍できます。このソリューションでは、NAS ファイルシステムにストレージ料金が発生します。詳細については、GitHub の unzip-oss-nas ページ を参照してください。

Function Compute は別の ZIP パッケージ内にある ZIP パッケージを解凍しますか?

いいえ、Function Compute は別の ZIP パッケージ内にある ZIP パッケージを解凍しません。

バケットに ZIP パッケージ解凍ルールを構成した場合、バケットにアップロードされた ZIP パッケージは、Function Compute を 1 回だけトリガーして ZIP パッケージを解凍します。ZIP パッケージに別の ZIP パッケージが含まれている場合、内部の ZIP パッケージは解凍されません。内部の ZIP パッケージをバケットに個別にアップロードして、別の解凍タスクをトリガーできます。

ZIP パッケージ解凍では、別のバケットにデータを解凍できますか?

いいえ、ZIP パッケージ解凍では、ZIP パッケージがアップロードされたバケット内にあるディレクトリにのみ ZIP パッケージを解凍できます。ZIP パッケージを別のバケットに解凍するには、Function Compute でカスタム開発を行う必要があります。

ZIP パッケージの解凍中に抽出されたオブジェクトは、保存先ディレクトリに同期的に表示されますか?

はい、進行中の解凍タスクから抽出されたオブジェクトは、保存先ディレクトリに同期的に表示されます。

Function Compute は、パッケージ内の残りのデータを解凍している間に、ZIP パッケージから解凍されたオブジェクトを OSS にアップロードします。

解凍タスクが完了したかどうかを確認するにはどうすればよいですか?

関数呼び出しログを表示して、解凍が完了したかどうかを確認できます。

  1. OSS コンソールの Zip パッケージを解凍 ページで、トリガーを見つけて、[操作] 列の [編集] をクリックします。

  2. 関数詳細ページで、[ログ] タブをクリックします。

  3. [有効化] をクリックします。

  4. AliyunLogFullAccess ポリシーを RAM ロールにアタッチします。詳細については、「RAM ロールに権限を付与する」をご参照ください。

  5. ZIP パッケージのアップロードで解凍タスクがトリガーされた場合は、[ログ] タブのログ情報を確認して、解凍が完了したかどうかを確認します。

    ログに「FC Invoke End」が含まれている場合、解凍タスクは完了しています。

    image.png

ZIP パッケージ解凍は .rar ファイルと .tar.gz ファイルをサポートしていますか?

いいえ、ZIP パッケージ解凍は .rar ファイルと .tar.gz ファイルをサポートしていません。

ZIP パッケージ解凍は ZIP ファイルのみをサポートしています。

解凍の完了後に通知は送信されますか?

いいえ。

関数詳細ページの [ログ] タブでログを確認するか、解凍関数の非同期呼び出しの保存先を構成することで、解凍タスクが完了したかどうかを確認できます。詳細については、「非同期呼び出しの保存先の構成」をご参照ください。

OSS はオンライン圧縮をサポートしていますか?

いいえ、OSS はオンライン圧縮をサポートしていません。

Function Compute を使用して、OSS からローカルデバイスにオブジェクトをパッケージとしてダウンロードできます。詳細については、「Function Compute を使用して OSS オブジェクトをパッケージ化およびダウンロードする」をご参照ください。

ZIP パッケージ解凍を使用してマルチパート ZIP パッケージを解凍できますか?

いいえ、ZIP パッケージ解凍を使用してマルチパート ZIP パッケージを解凍することはできません。

ZIP パッケージ解凍は、マルチパート ZIP パッケージのコンテンツをマージしません。したがって、この機能ではマルチパート ZIP パッケージを解凍できません。

[ZIP パッケージの解凍] ボタンがグレー表示されているのはなぜですか?

  • Function Compute がアクティブ化されていません。この場合、Function Compute ページで Function Compute をアクティブ化してください。

  • バケットが存在するリージョンでは、ZIP パッケージ解凍はサポートされていません。詳細については、「制限事項」をご参照ください。