複数のオブジェクトを一度にアップロードする場合、元のディレクトリ構造を保持したままオブジェクトをアップロードする場合、オブジェクトの完全なリストをアップロードする場合、またはオブジェクトにリソースを割り当てる場合は、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 パッケージを解凍します。次の図は、解凍プロセスを示しています。
ZIP パッケージ解凍ルールの Prefix パラメーターで指定されたディレクトリに ZIP パッケージがアップロードされます。
Compute Function トリガーが使用されます。
ZIP パッケージ解凍ルールを構成する際にトリガーを承認して、OSS がトリガーロール AliyunOSSEventNotificationRole を使用して Function Compute にアクセスできるようにする必要があります。トリガーロールを承認すると、デフォルトで Function Compute にアクセスするための権限がロールに付与されます。
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 パッケージ解凍ルールの構成
OSS コンソール にログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションツリーでデータ処理 > を選択します。
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 └─── ...
[利用規約を読み、function Compute をアクティブ化し、function Compute を使用して圧縮ファイルを処理することに同意します。UTF-8 または GB 2312 でエンコードされたファイル名またはフォルダー名のみ処理できます。] を選択し、[OK] をクリックします。
ZIP パッケージ解凍ルールの変更
ビジネス要件に基づいて、ZIP パッケージ解凍ルールを変更できます。
Prefix パラメーターの変更
OSS コンソールの Zip パッケージを解凍 ページで、変更するトリガーを見つけて、[操作] 列の [編集] をクリックします。
関数詳細ページの [トリガー] タブで、トリガーを見つけて、[操作] 列の [変更] をクリックします。
[トリガーの変更] パネルで、[オブジェクトプレフィックス] パラメーターを変更し、その他のパラメーターのデフォルト設定を保持します。
[OK] をクリックします。
関数構成の変更
関数詳細ページの [構成] タブで、基本設定 セクションまたは 環境情報 セクションの [変更] をクリックします。
メモリ や 実行タイムアウト期間 などの関数構成を変更します。
詳細については、「関数の管理」をご参照ください。
トリガーの削除
削除されたトリガーは使用できなくなり、復元できません。トリガーを削除しても、トリガー下で進行中の解凍タスクは中断されません。
関数詳細ページの [トリガー] タブで、削除するトリガーを見つけて、[操作] 列の [削除] をクリックします。
表示されるメッセージで、[削除] をクリックします。