一度に複数のオブジェクトをアップロードしたり、元のディレクトリ構造を保持したオブジェクトをアップロードしたり、オブジェクトの完全なリストをアップロードしたり、オブジェクトにリソースを割り当てたりする場合は、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パッケージは、ZIPパッケージ解凍ルールのPrefixパラメーターで指定されたディレクトリにアップロードされます。
Compute Functionトリガーが使用されます。
OSSがトリガーロールAliyunOSSEventNotificationRoleを使用してFunction Computeにアクセスできるように、ZIPパッケージの解凍ルールを設定するときにトリガーを承認する必要があります。 トリガーロールを承認すると、デフォルトでFunction Computeにアクセスする権限がロールに付与されます。
Function ComputeはZIPパッケージを解凍し、解凍されたデータを指定されたOSSディレクトリに保存します。
ZIPパッケージの解凍ルールを設定するときに、Function ComputeがOSSにアクセスすることを許可する必要があります。 権限付与中に、Function ComputeがOSSバケットからオブジェクトを読み取り、圧縮解除されたデータをバケットに書き込むことを許可するロールを作成する必要があります。 このようなロールを作成すると、バケットの読み取りおよび書き込み権限がロールに付与されます。
課金
ZIPパッケージの解凍は、OSSおよびFunction Computeで料金が発生する付加価値機能です。
OSS側では、API操作の呼び出しとオブジェクトストレージに対して課金されます。 詳細については、「課金の概要」をご参照ください。
Function Compute側では、実行期間に基づいてvCPU使用率とメモリ使用率に対して課金されます。 たとえば、ZIPパッケージの解凍タスクが、3 GBのメモリと2コアvCPUを備え、解凍を完了するのに5分かかるFunction Computeインスタンスを使用する場合、Function Computeによって請求される料金は2 × 0.000015 × 300 + 3 × 0.0000015 × 300 = USD 0.01035です。 詳細については、「課金の概要」をご参照ください。
内部エンドポイントを使用したOSSとFunction Compute間のデータ転送に使用されるトラフィックに対しては課金されません。
制限事項
リージョン: ZIPパッケージの解凍は、次のリージョンでサポートされています。中国 (杭州) 、中国 (上海) 、中国 (青島) 、中国 (北京) 、中国 (張家口) 、中国 (フフホト) 、中国 (深セン) 、中国 (成都) 、中国 (香港) 、シンガポール、オーストラリア (シドニー)サービス終了 、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、日本 (東京) 、ドイツ (フランクフルト) 、英国 (ロンドン) 、米国 (バージニア州) 、米国 (シリコンバレー) 、サウジアラビア (リヤド).
ストレージクラス: コールドアーカイブ オブジェクトは、解凍する前に復元する必要があります。 アーカイブオブジェクトのリアルタイムアクセスが有効になっていないバケット内のアーカイブオブジェクトも、解凍する前に復元する必要があります。
オブジェクトとディレクトリの命名: 解凍の中断や解凍後のオブジェクトとディレクトリ名の文字化けなどの潜在的な問題を回避するために、オブジェクトとディレクトリをUTF-8またはGB 2312でエンコードすることを推奨します。
オブジェクトサイズと解凍期間: ZIPパッケージ内の各オブジェクトのサイズは1 GBを超えることはできません。 必要に応じて、解凍時間を増やすことができます。 詳細については、ZIPパッケージが解凍タイムアウトのために解凍に失敗した場合はどうすればよいですか?
ZIPパッケージの解凍ルールの設定
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションツリーで、を選択します。
Zip パッケージを解凍 をクリックします。 Zip パッケージを解凍 パネルで、次の表に示すパラメーターを設定します。
Parameters
パラメーター
必須
説明
サービス承認
あり
Function Computeに、OSSからデータを読み書きし、関数を実行する権限を付与します。
[権限付与] をクリックします。 表示されるページで承認を完了します。
トリガーの承認
あり
OSSにFunction Computeへのアクセスを許可します。
[権限付与] をクリックします。 表示されるページで承認を完了します。 OSSがFunction Computeへのアクセスを許可されている場合、Authorize Triggerパラメーターの代わりにTrigger Roleパラメーターが表示されます。
プレフィックス
なし
Function ComputeがZIPパッケージを解凍するためにトリガーするために、パッケージ名に含める必要があるプレフィックスを指定します。 指定されたプレフィックスを含む名前のZIPパッケージをアップロードするか、プレフィックスで指定されたディレクトリにZIPパッケージをアップロードすると、Function ComputeはZIPパッケージを解凍します。 このパラメーターを指定しない場合、Function ComputeはバケットにアップロードされたすべてのZIPパッケージを解凍します。
重要このパラメーターを指定しないと、解凍タスクが繰り返し実行される可能性があります。 したがって、各解凍ルールにプレフィックスを指定することを推奨します。 詳細については、「トリガーループを回避するにはどうすればよいですか? 」をご参照ください。
宛先ディレクトリ
なし
ZIPパッケージから抽出したオブジェクトを格納するディレクトリを指定します。 このパラメーターを指定しない場合、Function ComputeはZIPパッケージを現在のバケットのルートディレクトリに解凍します。
ZIPパッケージから抽出されたオブジェクトを、宛先ディレクトリのパッケージと同じ名前のサブディレクトリに格納する場合は、[圧縮オブジェクト名を宛先ディレクトリに追加] を選択します。
ZIPパッケージから抽出されたオブジェクトを、元のZIPパッケージ名を保持せずに宛先ディレクトリに保存する場合は、[宛先ディレクトリに解凍] を選択します。 このパラメーターの設定方法の詳細については、次の表の例を参照してください。
警告OSS-HDFSの可用性を維持し、データの汚染を防ぐために、宛先ディレクトリへ
. dlsdata /
OSS-HDFSが有効になっているバケットのZIPパッケージ抽出ルールを設定すると、解凍設定の例
シナリオ
設定方法
解凍後のストレージ構造
ZIPパッケージと同じ名前のサブディレクトリを作成せずに、zipfolderディレクトリにアップロードされたすべてのZIPパッケージをdestfolderディレクトリに解凍します。
Prefixをzipfolder/ に設定します。
宛先ディレクトリをdestfolderに設定します。
[宛先ディレクトリに解凍] を選択します。
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a.txt ├─── b.txt └─── ...
zipfolderディレクトリにアップロードされたすべてのZIPパッケージを、バケットのルートディレクトリにあるパッケージと同じ名前のサブディレクトリに解凍します。
次のパラメーターを設定します。
Prefixをzipfolder/ に設定します。
宛先ディレクトリは空のままにします。
圧縮オブジェクト名を宛先ディレクトリに追加を選択します。
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip├─── a/│ ├─── a.txt│ └─── ...└─── b/ ├─── b.txt └─── ...
zipfolderディレクトリにアップロードされたすべてのZIPパッケージを、destfolderディレクトリ内のパッケージと同じ名前のサブディレクトリに解凍します。
次のパラメーターを設定します。
Prefixをzipfolder/ に設定します。
宛先ディレクトリをdestfolderに設定します。
圧縮オブジェクト名を宛先ディレクトリに追加を選択します。
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a/ │ ├─── a.txt │ └─── ... └─── b/ ├─── b.txt └─── ...
利用規約を読み、Function Computeを使用して圧縮ファイルを処理することに同意しました。 UTF-8またはGB 2312でエンコードされたファイルまたはフォルダ名のみが処理できます。を選択し、 [OK] をクリックします。
ZIPパッケージの解凍ルールの変更
ビジネス要件に基づいてZIPパッケージの解凍ルールを変更できます。
プレフィックスパラメーターの変更
OSSコンソールの Zip パッケージを解凍 ページで、変更するトリガーを見つけ、[操作] 列の [編集] をクリックします。
関数の詳細ページの [トリガー] タブでトリガーを見つけ、[操作] 列の [変更] をクリックします。
[トリガーの変更] パネルで、[オブジェクトプレフィックス] パラメーターを変更し、他のパラメーターのデフォルト設定を保持します。
[OK] をクリックします。
関数設定の変更
機能詳細ページの [設定] タブで、[基本設定] セクションまたは [環境情報] セクションの [変更] をクリックします。
[メモリ] や [実行タイムアウト期間] などの機能設定を変更します。
詳細については、「関数の管理」をご参照ください。
トリガーを削除するDelete a trigger
削除されたトリガーは使用できなくなり、復元できません。 トリガーを削除しても、トリガーの下で進行中の解凍タスクは中断されません。
関数の詳細ページの [トリガー] タブで、削除するトリガーを見つけ、[操作] 列の [削除] をクリックします。
表示されるメッセージで、[削除] をクリックします。