Object Storage Service (OSS) は ZIP パッケージを自動的に解凍できます。 ファイルプレフィックスと保存先ディレクトリを指定して解凍ルールを設定すると、OSS バケットにアップロードした際にルールに一致する ZIP パッケージがシステムによって自動的に解凍され、解凍されたファイルが保存先ディレクトリに書き込まれます。 この機能は Function Compute (FC) と OSS を統合し、FC 側に OSS ネイティブトリガーを作成することで、コードを記述することなくイベント駆動型のプロセスを可能にします。
非同期推論とキューサービスのしくみ
OSS は Function Compute を使用して、アップロードされた ZIP パッケージを解凍します。 次のフローチャートは、解凍プロセスを示しています。
解凍ルール内のサフィックスと一致する名前の ZIP パッケージが、OSS 解凍ルール内のプレフィックスと一致するディレクトリにアップロードされます。
Compute Function トリガーが使用されます。
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 パッケージ解凍トリガーの設定
OSS コンソール にログインします。 左側のナビゲーションウィンドウで、[バケット] をクリックします。
[バケット] ページで、ターゲットバケットの名前をクリックします。
バケット詳細ページの左側のナビゲーションウィンドウで、 を選択します。 次に、[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 └── ...
[利用規約を読み、Function Compute をアクティブ化し、Function Compute を使用して圧縮ファイルを処理することに同意しました。 UTF-8 または GB 2312 でエンコードされたファイル名またはフォルダ名のみ処理できます。] を選択し、[OK] をクリックします。
設定が完了したら、トリガーの [ファイルプレフィックス] と関連付けられている FC 関数設定を変更できます。 詳細については、「ネイティブ OSS トリガーの設定」および「関数の設定」をご参照ください。
参考資料
.tarや.gzファイルなど、他の種類の圧縮ファイルを自動的に解凍する必要がある場合は、「decompress-oss」をご参照ください。Function Compute を使用して OSS ファイルをパッケージとしてダウンロードする必要がある場合は、「Function Compute を使用して OSS からオブジェクトをパッケージとしてダウンロードする」をご参照ください。