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

Function Compute:ZIP パッケージ解凍トリガーの設定

最終更新日:Sep 06, 2025

Object Storage Service (OSS) は ZIP パッケージを自動的に解凍できます。 ファイルプレフィックスと保存先ディレクトリを指定して解凍ルールを設定すると、OSS バケットにアップロードした際にルールに一致する ZIP パッケージがシステムによって自動的に解凍され、解凍されたファイルが保存先ディレクトリに書き込まれます。 この機能は Function Compute (FC) と OSS を統合し、FC 側に OSS ネイティブトリガーを作成することで、コードを記述することなくイベント駆動型のプロセスを可能にします。

非同期推論とキューサービスのしくみ

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

  1. 解凍ルール内のサフィックスと一致する名前の ZIP パッケージが、OSS 解凍ルール内のプレフィックスと一致するディレクトリにアップロードされます。

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

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

シナリオ

  • バッチデータのアップロード

    多数の小さなファイルをアップロードする必要がある場合、プログラムを使用して 1 つずつアップロードすると時間がかかる場合があります。 この場合、ZIP パッケージ解凍機能を使用してファイルをパッケージ化およびアップロードできます。

  • 完全なファイルのアップロード

    リソースの整合性のために、複数のファイルを 1 つのリソースに結合する必要がある場合があります。 複数のファイルを個別にアップロードすると、成功率が低くなる可能性があります。 この場合、ZIP パッケージ解凍機能を使用してアップロードの成功率を向上させることができます。

  • 特定のディレクトリ構造を持つファイルのアップロード

    Web サイトでは、複雑なディレクトリ構造を持つ多くの静的リソースを参照することがよくあります。 OSS で 1 つずつディレクトリを作成し、ファイルをアップロードすると時間がかかる場合があります。 この場合、ZIP パッケージ解凍ルールを設定し、ローカルで目的のディレクトリ構造を持つ ZIP パッケージを作成し、その ZIP パッケージを OSS にアップロードできます。

  • リソース配布

    多数のファイルをユーザーまたは異なるサーバーに配布する必要がある場合、これらのファイルを ZIP パッケージにパッケージ化し、OSS ZIP パッケージ解凍機能を使用して ZIP パッケージを指定されたディレクトリに解凍できます。 これにより、転送時間と帯域幅の消費が削減されます。

課金

ZIP パッケージ解凍機能の使用には、OSS ストレージ料金と FC 関数の呼び出しおよびリソース使用料金がかかります。詳細は以下のとおりです。

  • OSS 料金

    バケットリソースへのアクセスに対する リクエスト料金 と、OSS バケットに保存されているファイルに対する ストレージ料金 が含まれます。

  • FC 料金

    関数の呼び出し回数と、関数呼び出しによって生成される vCPU、メモリ、およびディスクリソースの使用料金が含まれます。 これらの計測項目は、変換係数に従って課金のために CU 使用量に変換する必要があります。 詳細については、「CU 変換係数」をご参照ください。

バケット内部エンドポイントを介したデータ転送は、トラフィック料金は無料です。

制限

  • ストレージタイプの制限

    コールドアーカイブまたはディープコールドアーカイブストレージタイプのファイルは、解凍前に解凍する必要があります。 アーカイブストレージタイプのファイルは、バケットでアーカイブダイレクトリード機能が有効になっていない場合、解凍前に解凍する必要があります。

  • ファイルまたはフォルダの命名制限

    オブジェクトまたはディレクトリ名は UTF-8 または GB 2312 でエンコードすることをお勧めします。 そうしないと、解凍後のオブジェクト名またはディレクトリ名が文字化けしたり、解凍プロセスが中断されたりする可能性があります。

  • ZIP パッケージの制限

    ZIP パッケージのサイズは 10 GB を超えてはならず、パッケージ内の単一ファイルのサイズは 10 GB を超えてはなりません。 単一パッケージの解凍のデフォルトの最大時間は 2 時間です。 解凍に 2 時間以上かかる場合は、関数の最大実行時間を調整できます。 詳細については、「大きなファイルの解凍が 2 時間後に失敗する」をご参照ください。

ZIP パッケージ解凍トリガーの設定

  1. OSS コンソール にログインします。 左側のナビゲーションウィンドウで、[バケット] をクリックします。

  2. [バケット] ページで、ターゲットバケットの名前をクリックします。

  3. バケット詳細ページの左側のナビゲーションウィンドウで、[データ処理] > [ZIP パッケージの解凍] を選択します。 次に、[ZIP パッケージの解凍] をクリックします。 [ZIP パッケージの解凍] パネルで、ZIP パッケージ解凍ルールを設定します。

    パラメーター

    説明

    このトピックの例

    [サービス認証]

    Function Compute が他の Alibaba Cloud サービスにアクセスするためのサービスリンクロールを作成します。 以前に Function Compute コンソールにログインしたことがない場合は、[認証] ボタンをクリックして、サービスリンクロール AliyunServiceRoleForFC を作成する必要があります。

    該当なし

    [関数認証]

    Function Compute に OSS の読み取りと書き込みの権限を付与します。

    [認証] ボタンをクリックし、プロンプトに従って認証を完了します。

    該当なし

    [トリガー認証]

    OSS に Function Compute へのアクセスを認証します。

    [認証] ボタンをクリックし、プロンプトに従って認証を完了します。 認証がすでに完了している場合、この項目は [トリガーロール] として表示されます。

    該当なし

    プレフィックス

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

    重要

    このパラメーターを指定しない場合、解凍タスクが繰り返し実行される可能性があります。 そのため、各解凍ルールにプレフィックスを指定することをお勧めします。 詳細については、「循環トリガーを防ぐ方法」をご参照ください。

    zipfolder/

    [保存先ディレクトリ]

    ZIP パッケージから抽出されたオブジェクトを保存するディレクトリを指定します。 このパラメーターを指定しない場合、Function Compute は ZIP パッケージを現在のバケットのルートディレクトリに解凍します。 さまざまな保存先ディレクトリの設定については、このトピックの例で結果のファイル構造を参照してください。

    警告

    OSS-HDFS サービスの通常の使用に影響を与えたり、データの汚染やデータ損失のリスクを回避するために、OSS-HDFS サービスが有効になっているバケットで ZIP パッケージ解凍ルールを設定する場合は、[保存先ディレクトリ].dlsdata/ に設定しないでください。

    • 保存先ディレクトリは destfolder で、[保存先ディレクトリに直接解凍] が選択されています。

      bucket
      ├─── zipfolder/
      │ ├─── a.zip
      │ └─── b.zip
      └─── destfolder/
      ├─── a.txt
      ├─── b.txt
      └─── ...
    • 保存先ディレクトリは空で、[圧縮ファイル名をパスディレクトリとして保持] が選択されています。

      bucket/
      ├── zipfolder/
      │   ├── a.zip
      │   └── b.zip
      ├── a/
      │   ├── a.txt
      │   └── ...
      └── b/
          ├── b.txt
          └── ...
    • 保存先ディレクトリは destfolder で、[圧縮ファイル名をパスディレクトリとして保持] が選択されています。

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

設定が完了したら、トリガーの [ファイルプレフィックス] と関連付けられている FC 関数設定を変更できます。 詳細については、「ネイティブ OSS トリガーの設定」および「関数の設定」をご参照ください。

参考資料

よくある質問

ファイルのアップロード後に Function Compute トリガーが失敗する

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

説明

ZIP パッケージ内の単一ファイルのサイズは 10 GB を超えてはならず、単一パッケージの解凍の最大時間は 2 時間です。

大きなファイルの解凍が 2 時間後に失敗する

関数の実行がタイムアウトしました。 必要に応じて、最大 24 時間まで、関数の実行タイムアウト期間を調整できます。

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

  2. 表示される関数詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[ランタイム] を選択し、[編集] をクリックします。

  3. ランタイム編集パネルで、[実行タイムアウト] を変更し、[デプロイ] をクリックします。

ZIP パッケージが 10 GB を超えているか、パッケージ内の単一ファイルが 10 GB を超えている

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

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

いいえ、システムはネストされた ZIP パッケージの解凍をサポートしていません。

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

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

いいえ、FC によって解凍されたファイルを別のバケットに解凍することはできません。

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

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

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

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

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

ターゲットバケットのファイルリストでファイルが保存先ディレクトリに解凍されているかどうかを確認するか、Function Compute コンソール の関数呼び出しログを確認して、解凍が完了したかどうかを確認できます。

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

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

    現在の関数のログ機能が有効になっていない場合は、[ワンクリックで有効化] をクリックします。

  3. ZIP パッケージをアップロードし、[ログ] タブで呼び出しが成功したかどうかを確認します。

システムは .rar ファイルと .tar.gz ファイルの解凍をサポートしていますか?

いいえ、システムは .rar ファイルと .tar.gz ファイルの解凍をサポートしていません。

ZIP パッケージ展開は ZIP ファイルのみをサポートしています。他の種類の圧縮ファイルを解凍する必要がある場合は、「decompress-oss」をご参照ください。

ZIP パッケージが解凍された後、システムは OSS に情報を返しますか?

いいえ、システムは ZIP パッケージが解凍された後に OSS に情報を返しません。

解凍の進捗状況を確認する必要がある場合は、関数詳細ページの [呼び出しログ] タブを確認するか、解凍関数に非同期呼び出し先サービスを設定できます。詳細については、「非同期呼び出し先サービスを設定する」をご参照ください。

OSS はオンライン圧縮に対応していますか?

いいえ、 OSS はオンライン圧縮には対応していません。

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

システムはマルチパート ZIP パッケージをサポートしていますか?

いいえ、システムはマルチパート ZIP パッケージをサポートしていません。

ZIP パッケージの展開では、マルチパート ZIP パッケージのコンテンツはマージされません。そのため、この機能ではマルチパート ZIP パッケージを解凍できません。

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

インターフェイスで要求される、Function Compute サービスリンクロール AliyunServiceRoleForFC の作成や、Function Compute に OSS へのファイルアップロード権限を付与することなど、必要な権限付与が完了しているか確認してください。