ファイルをバッチでアップロードしたり、フォルダ構造を維持したり、ファイルの整合性を確保したり、リソースを迅速に配布したりするには、解凍ルールを設定します。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 ファイルを解凍します。解凍プロセスを次のフローチャートに示します。
解凍ルールで指定されたプレフィックスを持つディレクトリに ZIP ファイルがアップロードされます。
Function Compute が自動的にトリガーされます。
ルールを設定する際に、トリガーを承認する必要があります。これにより、OSS は `AliyunOSSEventNotificationRole` ロールを使用して Function Compute を呼び出すことができます。承認プロセスにより、このロールに必要なアクセスポリシーが自動的に付与されます。
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 パッケージ解凍ルールを設定する
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、 を選択します。
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 └─── ...Function Compute を有効化することに同意するチェックボックスを選択し、[OK] をクリックします。
ZIP パッケージ解凍設定の変更
必要に応じて ZIP パッケージの解凍設定を変更できます。
Function Compute をトリガーするファイルプレフィックスの変更
OSS コンソールの Zip パッケージを解凍 ページで、対象のトリガーの右側にある [編集] をクリックします。
表示される関数詳細ページで、[トリガー管理] タブに移動し、対象のトリガーの右側にある [編集] をクリックします。
[トリガーの編集] ダイアログボックスで、[ファイルプレフィックス] を変更し、他のパラメーターはデフォルト設定のままにします。
[OK] をクリックします。
Function Compute 設定の変更
Function Compute コンソールの関数詳細ページで、[関数設定] タブに移動し、[編集] をクリックします。
関数の実行メモリや実行タイムアウトなど、必要に応じて Function Compute の設定を変更します。
詳細については、「関数を管理する」をご参照ください。
トリガーの削除
トリガーを削除すると、復元できなくなり、関数をトリガーするために使用できなくなります。進行中のタスクは引き続き実行されます。
関数詳細ページで、[トリガー管理] タブに移動し、対象のトリガーの右側にある [削除] をクリックします。
表示されるダイアログボックスで、[削除] をクリックします。
