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

Object Storage Service:ZIPパッケージの解凍

最終更新日:Feb 23, 2024

一度に複数のオブジェクトをアップロードしたり、元のディレクトリ構造を保持したオブジェクトをアップロードしたり、オブジェクトの完全なリストをアップロードしたり、オブジェクトにリソースを割り当てたりする場合は、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パッケージを解凍します。 次の図は、解凍プロセスを示しています。

image
  1. ZIPパッケージは、ZIPパッケージ解凍ルールのPrefixパラメーターで指定されたディレクトリにアップロードされます。

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

    OSSがトリガーロールAliyunOSSEventNotificationRoleを使用してFunction Computeにアクセスできるように、ZIPパッケージの解凍ルールを設定するときにトリガーを承認する必要があります。 トリガーロールを承認すると、デフォルトでFunction Computeにアクセスする権限がロールに付与されます。

  3. 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パッケージの解凍ルールの設定

  1. OSSコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションツリーで、インテリジェントデータ処理 > Zip パッケージを解凍 を選択します。

  4. 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の可用性を維持し、データの汚染を防ぐために、Destination Directoryに設定しないでください。dlsdata/ は、OSS-HDFSが有効になっているバケットのZIPパッケージ抽出ルールを設定するときにします。

    解凍設定の例

    シナリオ

    設定方法

    解凍後のストレージ構造

    ZIPパッケージと同じ名前のサブディレクトリを作成せずに、zipfolderディレクトリにアップロードされたすべてのZIPパッケージをdestfolderディレクトリに解凍します。

    • Prefixzipfolder/ に設定します。

    • 宛先ディレクトリdestfolderに設定します。

    • [宛先ディレクトリに解凍] を選択します。

    バケット
    â ─ ─ ─ zipfolder /
    │ ├─ ─ ─ a.zip
    │ ures ─ ─ ─ b.zip
    └ ─ ─ ─ destfolder /
         â ─ ─ ─ a.txt
         â ─ ─ ─ b.txt
         └ ─ ─ ...

    zipfolderディレクトリにアップロードされたすべてのZIPパッケージを、バケットのルートディレクトリにあるパッケージと同じ名前のサブディレクトリに解凍します。

    次のパラメーターを設定します。

    • Prefixzipfolder/ に設定します。

    • 宛先ディレクトリは空のままにします。

    • 圧縮オブジェクト名を宛先ディレクトリに追加を選択します。

    バケット
    â ─ ─ ─ zipfolder /
    │ ├─ ─ ─ a.zip
    │ ures ─ ─ ─ b.zip
    â ─ ─ ─ a /
    │ ├─ ─ ─ a.txt
    │ ά ─ ─ ─...
    └ ─ ─ ─ b /
         â ─ ─ ─ b.txt
         └ ─ ─ ...

    zipfolderディレクトリにアップロードされたすべてのZIPパッケージを、destfolderディレクトリ内のパッケージと同じ名前のサブディレクトリに解凍します。

    次のパラメーターを設定します。

    • Prefixzipfolder/ に設定します。

    • 宛先ディレクトリdestfolderに設定します。

    • 圧縮オブジェクト名を宛先ディレクトリに追加を選択します。

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

ZIPパッケージの解凍ルールの変更

ビジネス要件に基づいてZIPパッケージの解凍ルールを変更できます。

プレフィックスパラメーターの変更

  1. OSSコンソールの Zip パッケージを解凍 ページで、変更するトリガーを見つけ、[操作] 列の [編集] をクリックします。

  2. 関数の詳細ページの [トリガー] タブでトリガーを見つけ、[操作] 列の [変更] をクリックします。

  3. [トリガーの変更] パネルで、[オブジェクトプレフィックス] パラメーターを変更し、他のパラメーターのデフォルト設定を保持します。

  4. [OK] をクリックします。

関数設定の変更

  1. 機能詳細ページの [設定] タブで、[基本設定] セクションまたは [環境情報] セクションの [変更] をクリックします。

  2. [メモリ][実行タイムアウト期間] などの機能設定を変更します。

    詳細については、「関数の管理」をご参照ください。

トリガーを削除するDelete a trigger

説明

削除されたトリガーは使用できなくなり、復元できません。 トリガーを削除しても、トリガーの下で進行中の解凍タスクは中断されません。

  1. 関数の詳細ページの [トリガー] タブで、削除するトリガーを見つけ、[操作] 列の [削除] をクリックします。

  2. 表示されるメッセージで、[削除] をクリックします。

参考資料

Function Computeを使用して複数のオブジェクトをパッケージとしてダウンロード

FAQ

ZIPパッケージのアップロードがFunction Computeの解凍タスクのトリガーに失敗した場合はどうすればよいですか?

ZIPパッケージの解凍には、OSSとFunction Compute間の相互作用が含まれます。 既存の解凍ルールに一致するZIPパッケージのアップロードは、function Computeの解凍関数をトリガーしてZIPパッケージを解凍します。 OSSは解凍関数の呼び出しに失敗する可能性があります。 x-oss-event-statusレスポンスヘッダーのBase64-encoded値を確認することで、解凍がトリガーされたかどうかを確認できます。 x-oss-event-statusヘッダーのデコード値が {"Result": "Ok"} の場合、解凍がトリガーされます。 x-oss-event-statusヘッダーのデコード値が {"Result": "Ok"} でない場合、解凍はトリガーされません。 この場合、ZIPパッケージを再アップロードすることを推奨します。 詳細については、「簡易アップロード」をご参照ください。

説明

ZIPパッケージ内の各オブジェクトのサイズは1 GBを超えることはできません。 ZIPパッケージのデフォルトの最大解凍時間は2時間です。

解凍タイムアウトのためにZIPパッケージの解凍に失敗した場合はどうすればよいですか?

デフォルトでは、ZIPパッケージの最大解凍時間は2時間です。 最大解凍時間を24時間に増やすことができます。 ZIPパッケージの解凍に2時間以上かかる場合は、次の手順を実行して最大解凍時間を変更します。

  1. OSSコンソールの Zip パッケージを解凍 ページで、変更するトリガーを見つけ、[操作] 列の [編集] をクリックします。

  2. 機能の詳細ページで、[設定] タブをクリックします。

  3. [環境情報] の横にある [変更] をクリックします。

  4. [実行タイムアウト期間] フィールドの値を変更し、[OK] をクリックします。

サイズが1 GBを超えるオブジェクトを含むパッケージを解凍するにはどうすればよいですか?

ZIPパッケージ内のオブジェクトのサイズが1 GBを超える場合、パッケージをApsara File Storage NASに格納し、パッケージをApsara File Storage NASのディレクトリに解凍できます。 このソリューションでは、Apsara File storage NASのストレージ料金が発生します。 詳細については、GitHubのunzip-oss-nasページをご覧ください。

Function Computeは、別のZIPパッケージ内にあるZIPパッケージを解凍しますか?

いいえ、Function Computeは別のZIPパッケージ内のZIPパッケージを解凍しません。

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

ZIPパッケージの解凍では、データを別のバケットに解凍できますか?

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

ZIPパッケージの解凍中に抽出されたオブジェクトが同期して宛先ディレクトリに表示されるのはですか?

はい。進行中の解凍タスクから抽出されたオブジェクトは、同期して宛先ディレクトリに表示されます。

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

解凍タスクが完了したかどうかを確認する方法は?

関数呼び出しログを表示して、解凍が完了したかどうかを確認できます。

  1. OSSコンソールの Zip パッケージを解凍 ページでトリガーを見つけ、[操作] 列の [編集] をクリックします。

  2. 機能の詳細ページで、[ログ] タブをクリックします。

  3. [有効化] をクリックします。

  4. AliyunLogFullAccessポリシーをRAMロールにアタッチします。 詳細については、「RAMロールへの権限の付与」をご参照ください。

  5. ZIPパッケージのアップロードで解凍タスクがトリガーされた場合は、[ログ] タブでログ情報を表示して、解凍が完了しているかどうかを確認します。

    ログに「FC Invoke End」が含まれている場合、解凍タスクは完了です。

    image.png

ZIPパッケージの解凍をサポートします。rarと。tar.gzファイル?

いいえ、ZIPパッケージの解凍はサポートされていません。rarと。tar.gzファイル。

ZIPパッケージの解凍は、ZIPファイルのみをサポートします。

解凍完了の通知はですか?

いいえ、解凍タスクが完了しても通知されません。

解凍タスクが完了したかどうかを確認するには、関数の詳細ページの [ログ] タブでログを確認するか、解凍関数の非同期呼び出しの宛先を設定します。 詳細については、「非同期呼び出しの宛先の設定」をご参照ください。

OSSはオンライン圧縮をサポートしていますか?

いいえ、OSSはオンライン圧縮をサポートしていません。

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

ZIPパッケージの解凍を使用して、マルチパートZIPパッケージを解凍できますか?

いいえ、ZIPパッケージの解凍を使用してマルチパートZIPパッケージを解凍することはできません。

ZIPパッケージの解凍は、マルチパートZIPパッケージのコンテンツをマージしません。 したがって、この機能はマルチパートZIPパッケージを解凍できません。

ZIPパッケージの解凍ボタンがグレーアウトされるのはなぜですか?

  • Function Computeは有効化されていません。 この場合、関数でFunction Computeを有効化します。 Function Compute ページ。

  • ZIPパッケージの解凍は、バケットが存在するリージョンではサポートされていません。 詳細については、「制限事項」をご参照ください。