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

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

最終更新日:Sep 09, 2026

解凍ルールを設定することで、指定された OSS ディレクトリにアップロードされた ZIP パッケージを自動的に解凍できます。 Function Compute がパッケージを解凍し、解凍されたオブジェクトを宛先ディレクトリに保存します。

前提条件

Function Compute がアクティブ化されていること。 アクティブ化するには、Function Computeページに移動します。

シナリオ

  • バッチアップロード:多数の小さなオブジェクトを単一の ZIP パッケージに圧縮して、アップロード時間を短縮します。

  • リソースの完全性:関連ファイルを 1 つの ZIP パッケージにバンドルして、すべてのコンポーネントが一緒にアップロードされるようにします。

  • ディレクトリ構造の保持:ローカルのディレクトリツリーを ZIP ファイルにパッケージ化して OSS にアップロードします。 解凍ルールにより、バケット内に元のフォルダー構造が再作成されます。

  • コンテンツ配信:オブジェクトを ZIP パッケージに圧縮して OSS にアップロードします。 パッケージは指定されたディレクトリに解凍され、転送時間と帯域幅の使用量を削減します。

仕組み

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

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

  2. Function Compute トリガーが呼び出されます。

    解凍ルールを設定する際、OSS が AliyunOSSEventNotificationRole ロールを使用して Function Compute にアクセスできるように、トリガーに権限を付与します。

  3. Function Compute が ZIP パッケージを解凍し、解凍されたオブジェクトを指定の 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 へのアクセスを承認されている場合、[トリガーの承認] パラメーターの代わりに [トリガーロール] パラメーターが表示されます。

    [プレフィックス]

    いいえ

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

    重要

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

    [宛先ディレクトリ]

    いいえ

    解凍されたオブジェクトを保存するディレクトリです。 指定しない場合、オブジェクトはバケットのルートディレクトリに解凍されます。

    • 展開されたオブジェクトを ZIP パッケージと同じ名前のサブディレクトリに保存するには、[宛先ディレクトリに圧縮オブジェクト名を追加] を選択します。

    • 展開されたオブジェクトをサブディレクトリなしで宛先ディレクトリに直接保存するには、[宛先ディレクトリに解凍] を選択します。次の表に設定例を示します。

    警告

    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 を有効化して圧縮ファイルを処理することに同意します。処理できるのは、UTF-8 または GB 2312 でエンコードされたファイル名またはフォルダー名のみです。] にチェックを入れ、[OK] をクリックします。

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

解凍ルールを変更して、トリガープレフィックスまたは関数設定を更新します。

プレフィックスパラメーターの変更

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

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

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

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

関数設定の変更

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

  2. [メモリ] や [実行タイムアウト期間] などの関数設定を変更します。

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

トリガーの削除

説明

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

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

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

解凍結果の取得

解凍関数が実行を終了した後、OSS は解凍結果を自動的には返しません。 次の方法を使用して解凍結果を取得し、バックエンドサービスに転送できます。

方法 1:タスクモードでの解凍ステータスの照会

タスクモードを有効にすると、解凍関数の各実行で非同期タスクレコードが生成されます。 タスクリストでのステータスの表示や、API オペレーションの呼び出しによる照会が可能です。

  1. Function Compute コンソールで、解凍関数の関数詳細ページに移動し、[タスク] タブをクリックします。

  2. タスクモード設定エリアで、編集 をクリックし、[タスクモード] をオンにします。タスクモードはデフォルトでオフになっています。同じエリアで、[最大リトライ回数] (デフォルト: 3)、[メッセージの有効期間] (デフォルト: 1 日)、および [呼び出し先] (デフォルト: 未設定) も設定できます。

  3. タスクモードがオンになると、解凍関数の各実行で非同期タスクレコードが生成されます。 タスクリストには、タスク ID、タスクステータス、開始時刻と終了時刻、実行時間、再試行回数、リクエスト ID、インスタンス ID が表示されます。

  4. また、Function Compute の GetAsyncTask API を呼び出してタスクのステータスを照会することもできます。返されたタスクステータスが「Succeeded」の場合、解凍タスクが正常に完了したことを示します。

方法 2:非同期呼び出し先の設定による自動通知

タスクモード設定エリアで、[成功時に別のサービスを呼び出す] または [失敗時に別のサービスを呼び出す] をオンにすると、解凍タスクの終了時に、指定した宛先サービスへ自動的に通知が送信されます。 次の宛先サービスタイプがサポートされています。

  • Function Compute (FC)

  • ApsaraMQ for RocketMQ

  • Simple Message Queue (旧称:MNS)

  • EventBridge

方法 3:カスタム HTTP コールバックによるバックエンドサービスへの通知

組み込みの非同期呼び出し先機能では、カスタム HTTP コールバックはサポートされていません。 ACK クラスターにデプロイされたサービスなど、自己管理型のバックエンドサービスに解凍結果を通知する必要がある場合は、次の方法で行います。

  1. バックエンドサービスのエンドポイントに HTTP 通知リクエストを送信する Function Compute 関数を作成します。

  2. 方法 2 の手順に従って、この関数を解凍関数の非同期呼び出し先として設定します。

  3. 解凍タスクが終了すると、Function Compute がこの関数を呼び出します。その後、この関数がバックエンドサービスに HTTP 通知を送信します。

関連ドキュメント

ZIP ファイルとしてオブジェクトをパッケージ化してダウンロード

よくある質問

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

Base64 エンコードされた x-oss-event-status レスポンスヘッダーを確認します。 x-oss-event-status のデコードされた値が {"Result": "Ok"} の場合、解凍がトリガーされています。 x-oss-event-status のデコードされた値が {"Result": "Ok"} でない場合は、ZIP パッケージを再アップロードしてください。 詳細については、「シンプルアップロード」をご参照ください。

説明

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

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

デフォルトの最大解凍時間は 2 時間ですが、最大 24 時間まで増やすことができます。 時間を変更するには:

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

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

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

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

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

ZIP パッケージ内のオブジェクトが 1 GB を超える場合は、パッケージを File Storage NAS に保存し、そこで解凍します。 これには NAS のストレージ料金が発生します。 「unzip-oss-nas」 GitHub リポジトリをご参照ください。

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

いいえ。 Function Compute は ZIP パッケージを 1 回だけ解凍します。

ZIP パッケージにネストされた ZIP パッケージが含まれている場合、内部のパッケージは解凍されません。 それらを個別にアップロードして、別の解凍タスクをトリガーしてください。

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

いいえ。 解凍は同じバケット内のディレクトリに限定されます。 別のバケットに解凍するには、Function Compute でカスタム関数を実装してください。

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

はい。 Function Compute は、残りのデータの解凍を続けながら、解凍されたオブジェクトを宛先ディレクトリにアップロードします。

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 ファイルのみがサポートされています。

ZIP パッケージの解凍は、ZIP ファイルにのみ対応しています。

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

いいえ。 OSS は解凍結果を自動的には返しません。 結果の取得方法の詳細については、「解凍結果の取得」をご参照ください。

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

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

Function Compute を使用してオブジェクトをパッケージ化してダウンロードします。詳細については、「Function Compute を使用して OSS オブジェクトをパッケージ化してダウンロードする」をご参照ください。

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

いいえ。 ZIP パッケージの解凍では、マルチパート (分割) ZIP アーカイブをマージまたは解凍することはできません。

ZIP パッケージの解凍機能はマルチパート ZIP パッケージのコンテンツをマージしないため、この機能でマルチパート ZIP パッケージを解凍することはできません。

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

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

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