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

Object Storage Service:ZIP パッケージをアップロードして自動的に解凍する

最終更新日:Oct 11, 2025

ファイルをバッチでアップロードしたり、フォルダ構造を維持したり、ファイルの整合性を確保したり、リソースを迅速に配布したりするには、解凍ルールを設定します。Object Storage Service (OSS) の指定されたパスに ZIP ファイルをアップロードすると、ルールが Function Compute をトリガーしてファイルを自動的に解凍します。解凍されたコンテンツは OSS に保存されます。

前提条件

Function Compute サービスを有効化する必要があります。Function Compute は、その製品ページで有効化できます。

シナリオ

  • バッチアップロード: 多数の小さなファイルを 1 つずつアップロードすると時間がかかる場合があります。この機能を使用して、ファイルを単一の ZIP ファイルにパッケージ化し、アップロードを高速化できます。

  • ファイルの整合性: 複数のファイルが単一のリソースを構成することがあります。これらを個別にアップロードすると、転送が不完全になるリスクがあります。ZIP ファイルにパッケージ化することで、すべての部分が一緒に届くことが保証され、成功率が向上します。

  • 特定のフォルダ構造: Web サイトでは、静的リソースに複雑なフォルダ構造がよく使用されます。これらのフォルダを OSS で手動で作成すると時間がかかる場合があります。代わりに、目的の構造をローカルで作成し、ZIP ファイルにパッケージ化してアップロードできます。解凍機能により、OSS 内に構造が再作成されます。

  • リソースの配布: 多数のファイルをユーザーやサーバーに配布するには、ZIP ファイルにパッケージ化します。指定された OSS ディレクトリにファイルをアップロードして解凍します。この方法により、転送時間と帯域幅を節約できます。

仕組み

ZIP パッケージの解凍では、Function Compute を使用して ZIP ファイルを解凍します。解凍プロセスを次のフローチャートに示します。

  1. 解凍ルールで指定されたプレフィックスを持つディレクトリに ZIP ファイルがアップロードされます。

  2. Function Compute が自動的にトリガーされます。

    ルールを設定する際に、トリガーを承認する必要があります。これにより、OSS は `AliyunOSSEventNotificationRole` ロールを使用して Function Compute を呼び出すことができます。承認プロセスにより、このロールに必要なアクセスポリシーが自動的に付与されます。

  3. Function Compute は ZIP ファイルを解凍し、解凍されたファイルを OSS の指定されたディレクトリに保存します。

    また、Function Compute にサービス権限を付与する必要もあります。これにより、Function Compute が OSS から ZIP パッケージにアクセスし、解凍されたファイルを OSS バケットに書き込むために使用する新しいロールが作成されます。このロールには、バケットに対する必要な読み取りおよび書き込み権限が自動的に付与されます。

課金

ZIP パッケージ解凍機能は、OSS と Function Compute の両方でコストが発生する付加価値サービスです。データは OSS バケットと Function Compute 間でバケットの内部の同一リージョンエンドポイントを使用して転送され、トラフィック料金は発生しません。

  • OSS: バケットリソースへのリクエスト数とストレージに対して料金が発生します。詳細については、「OSS の課金の概要」をご参照ください。

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

    たとえば、5 分間実行される ZIP パッケージ解凍タスクでは、2 コア vCPU、3 GB のメモリ、およびデフォルトの 10 GB の一時ストレージディスクが使用されます。コストは次のように計算されます。

    リソース使用量

    単位

    説明

    課金例

    vCPU 使用量

    vCPU 秒

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

    関数は 2 コア vCPU で設定され、300 秒間実行されます。この実行での vCPU 使用量は 2 × 300 = 600 vCPU 秒です。

    メモリ使用量

    GB 秒

    メモリ使用量 = メモリ仕様 × 実行時間 (秒)

    関数は 3 GB のメモリで設定され、300 秒間実行されます。この実行でのメモリ使用量は 3 × 300 = 900 GB 秒です。

    ディスク使用量

    GB 秒

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

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

    関数は 10 GB の一時ディスクで設定され、300 秒間実行されます。この実行でのディスク使用量は (10 - 512/1024) × 300 = 2,850 GB 秒です。

制限事項

  • ストレージタイプ: コールドアーカイブストレージタイプのファイルは、解凍する前に復元する必要があります。アーカイブストレージタイプのファイルの場合、バケットでアーカイブオブジェクトへのリアルタイムアクセスが有効になっていない場合も、解凍前にファイルを復元する必要があります。

  • ファイルとフォルダの命名: ファイル名とフォルダ名には UTF-8 または GB 2312 エンコーディングを使用してください。他のエンコーディングを使用すると、名前が文字化けしたり、解凍プロセスが中断されたりする可能性があります。

  • ZIP パッケージ: ZIP パッケージ内の単一ファイルの最大サイズは 1 GB です。単一パッケージのデフォルトの最大解凍時間は 2 時間です。タスクが 2 時間以上かかる場合は、関数の最大実行時間を調整できます。詳細については、「特大ファイルの解凍が 2 時間以上かかって失敗する」をご参照ください。

ZIP パッケージ解凍ルールを設定する

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

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

  3. 左側のナビゲーションウィンドウで、インテリジェントデータ処理 > Zip パッケージを解凍 を選択します。

  4. Zip パッケージを解凍 をクリックします。Zip パッケージを解凍 パネルで、解凍ルールを設定します。

    パラメーター

    パラメーター

    必須

    説明

    サービス権限付与

    はい

    Function Compute に OSS への読み取りと書き込み、および関数の実行権限を付与します。

    [権限付与] をクリックし、画面の指示に従って権限付与を完了します。

    トリガー権限付与

    はい

    OSS に Function Compute へのアクセス権限を付与します。

    [権限付与] をクリックし、画面の指示に従います。権限付与が既に完了している場合、このパラメーターは [トリガーロール] として表示されます。

    プレフィックス

    いいえ

    Function Compute をトリガーするファイルのプレフィックス。このプレフィックスを持つ ZIP ファイルをアップロードするか、このプレフィックスを持つディレクトリにアップロードすると、Function Compute がトリガーされます。これを空のままにすると、アップロードされたすべての ZIP ファイルが関数をトリガーします。

    重要

    このパラメーターを空のままにすると、ループ実行が発生する可能性があります。詳細については、「ループ実行を防ぐにはどうすればよいですか?」をご参照ください。

    宛先ディレクトリ

    いいえ

    解凍されたファイルが保存されるディレクトリ。これを空のままにすると、Function Compute は ZIP ファイルを現在のバケットのルートディレクトリに解凍します。

    • 宛先パスに ZIP ファイル名をディレクトリとして保持する場合は、[圧縮ファイル名をパスディレクトリとして保持] を選択します。

    • ZIP ファイル名を保持せずにファイルを宛先ディレクトリに直接解凍する場合は、[宛先ディレクトリに直接解凍] を選択します。設定の詳細については、以下の設定例をご参照ください。

    警告

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

    設定例

    シナリオ

    設定

    解凍後のファイル構造

    zipfolder ディレクトリにアップロードされたすべての ZIP パッケージは、destfolder ディレクトリに解凍されます。ZIP パッケージ名は保持されません。

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

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

    • [宛先ディレクトリに直接解凍] を選択します。

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

    zipfolder ディレクトリにアップロードされたすべての ZIP パッケージは、ルートディレクトリに解凍されます。ZIP パッケージ名は保持されます。

    次のパラメーターを設定します。

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

    • [宛先ディレクトリ] を空のままにします。

    • [圧縮ファイル名をパスディレクトリとして保持] を選択します。

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

    zipfolder ディレクトリにアップロードされたすべての ZIP パッケージは、destfolder ディレクトリに解凍されます。ZIP パッケージ名は保持されます。

    次のパラメーターを設定します。

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

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

    • [圧縮ファイル名をパスディレクトリとして保持] を選択します。

    bucket  ├─── zipfolder/   │    ├─── a.zip│    └─── b.zip└─── destfolder/     ├─── a/     │    ├─── a.txt     │    └─── ...     └─── b/          ├─── b.txt          └─── ...
  5. Function Compute を有効化することに同意するチェックボックスを選択し、[OK] をクリックします。

ZIP パッケージ解凍設定の変更

必要に応じて ZIP パッケージの解凍設定を変更できます。

Function Compute をトリガーするファイルプレフィックスの変更

  1. OSS コンソールの Zip パッケージを解凍 ページで、対象のトリガーの右側にある [編集] をクリックします。

  2. 表示される関数詳細ページで、[トリガー管理] タブに移動し、対象のトリガーの右側にある [編集] をクリックします。

  3. [トリガーの編集] ダイアログボックスで、[ファイルプレフィックス] を変更し、他のパラメーターはデフォルト設定のままにします。

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

Function Compute 設定の変更

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

  2. 関数の実行メモリや実行タイムアウトなど、必要に応じて Function Compute の設定を変更します。

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

トリガーの削除

説明

トリガーを削除すると、復元できなくなり、関数をトリガーするために使用できなくなります。進行中のタスクは引き続き実行されます。

  1. 関数詳細ページで、[トリガー管理] タブに移動し、対象のトリガーの右側にある [削除] をクリックします。

  2. 表示されるダイアログボックスで、[削除] をクリックします。

参照

複数のファイルを ZIP パッケージにまとめてダウンロードする

よくある質問

ファイルのアップロード後に関数がトリガーされない

解凍には OSS から 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 です。単一パッケージの最大解凍時間は 2 時間です。

特大ファイルの解凍が 2 時間以上かかって失敗する

関数のデフォルトの最大実行時間は 2 時間です。ZIP パッケージ解凍ルールを設定した後、Function Compute コンソールでこの時間を変更できます。サポートされる最大実行時間は 24 時間です。

  1. OSS コンソールの Zip パッケージを解凍 ページで、対象のトリガーの右側にある [編集] をクリックします。

  2. 表示される関数詳細ページで、[関数設定] タブをクリックします。

  3. [環境コンテキスト] の右側にある [編集] をクリックします。

  4. [実行タイムアウト] を変更し、[OK] をクリックします。

圧縮パッケージ内の単一ファイルが 1 GB を超える

ZIP パッケージ内の単一ファイルが 1 GB を超える場合、NAS を一時的な作業ディレクトリとして解凍に使用できます。このソリューションでは、追加の NAS ストレージ料金が発生する場合があります。詳細については、「unzip-oss-nas」をご参照ください。

ネストされた ZIP パッケージの解凍はサポートされていますか?

いいえ。

解凍ルールを設定した後、OSS バケットに ZIP パッケージをアップロードすると、単一の Function Compute 解凍タスクがトリガーされます。結果は指定された OSS ディレクトリに保存されます。解凍されたファイルに別の ZIP パッケージが含まれている場合、そのネストされたパッケージは自動的に解凍されません。ネストされた ZIP パッケージを再度アップロードして、別の解凍タスクをトリガーする必要があります。

FC で解凍されたファイルを別のバケットに保存できますか?

いいえ。

ZIP パッケージ解凍機能は、ルール設定時に設定した宛先ディレクトリへのファイルの解凍のみをサポートします。ファイルを別のバケットに解凍するには、カスタム開発を行い、関数コードを変更する必要があります。

解凍プロセス中に OSS ディレクトリ内のファイルを表示できますか?

はい。

ZIP パッケージ解凍機能を使用すると、Function Compute はファイルを解凍して OSS に同時にアップロードします。宛先ディレクトリで解凍されたファイルをいつでも表示できます。

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

関数の呼び出しログをチェックして、解凍が完了したかどうかを確認できます。

  1. OSS コンソールの Zip パッケージを解凍 ページで、対象のトリガーの右側にある [編集] をクリックします。

  2. 表示される関数詳細ページで、[呼び出しログ] タブをクリックします。

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

  4. 現在の RAM ロールに AliyunLogFullAccess 権限を付与します。詳細については、「RAM ロールに権限を付与する」をご参照ください。

  5. ZIP パッケージファイルをアップロードし、[関数ログ] タブで呼び出しログを表示します。

    次のレコードは、関数の呼び出しが終了したことを示しており、解凍が完了したことを意味します。

    image.png

.rar および .tar.gz ファイルの解凍はサポートされていますか?

いいえ。

ZIP パッケージ解凍機能は現在、.zip ファイルの解凍のみをサポートしています。

解凍完了後、Function Compute は OSS に通知を送り返しますか?

いいえ。

解凍の進行状況を確認するには、関数詳細ページの [呼び出しログ] タブでログを表示します。または、解凍関数の非同期呼び出しの宛先を設定することもできます。詳細については、「非同期呼び出しの宛先を設定する」をご参照ください。

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

いいえ。

OSS から複数のオブジェクトをパッケージ化してローカルマシンにダウンロードするには、Function Compute を使用してダウンロード用にパッケージ化できます。詳細については、「複数のファイルを ZIP パッケージにまとめてダウンロードする」をご参照ください。

マルチパート圧縮はサポートされていますか?

いいえ。

ZIP パッケージ解凍機能は、単一の圧縮パッケージのみを処理します。解凍後に複数の圧縮パッケージのコンテンツをマージすることはサポートしていません。したがって、複数の .zip パッケージに分割された大きなファイルの解凍はサポートしていません。

[ZIP パッケージの解凍] ボタンがグレー表示され、解凍ルールを設定できません

  • Function Compute サービスが有効化されていることを確認してください。Function Compute は、その製品ページで有効化できます。

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