Serverless Devsとfunction Computeコンソールを使用して関数をデプロイし、ファイルがObject Storage Service (OSS) にアップロードされた後、解凍ルールを満たすZIPファイルを自動的に解凍することができます。
使用上の注意
ファイルまたはフォルダーの名前をUTF-8またはGB 2312でエンコードすることを推奨します。 そうしないと、解凍されたファイルまたはフォルダの名前が文字化けしたり、解凍が中断されたりする可能性があります。
圧縮ファイルをOSSバケットにアップロードするときは、アーカイブまたはコールドアーカイブストレージを選択しないでください。 それ以外の場合、関数は期待どおりに実行できません。
標準のzipコマンドラインユーティリティを使用してファイルを圧縮し、解凍の失敗を防ぐことを推奨します。
OSSバケットにアップロードする圧縮ファイルのサイズは、1 GB以下である必要があります。 そうしないと、ファイルの解凍に失敗する可能性があります。
ZIPファイルを解凍する時間は、2時間を超えることはできません。 ZIPファイルが2時間以内に解凍されない場合、解凍タスクは停止されます。
デフォルトでは、OSSオブジェクトを解凍する関数のタイムアウト時間は2時間です。 ビジネス要件に基づいて実行タイムアウト期間を調整できます。
手順
Function Computeコンソールの使用
前提条件
Function Computeが有効化されています。 詳細については、「関数の迅速な作成」の手順1をご参照ください。
OSSが有効化され、バケットが作成されます。 詳細については、「OSSコンソールを使用して開始する」をご参照ください。
手順
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
アプリケーションページで、アプリケーションの作成 をクリックします。
[アプリケーションの作成] ページで、アプリケーションの作成方法を選択します。
このトピックでは、[テンプレートを使用してアプリケーションを作成する] を選択します。
[ホットテンプレート] タブをクリックします。 タブで、アップロードされたファイルを自動的に解凍するためのアプリケーションの作成に使用するカード (start-unzip-ossなど) にポインターを移動し、[今すぐ作成] をクリックします。
アプリケーションの作成ページで、パラメーターを設定し、デフォルト環境の作成とデプロイをクリックします。
手動設定が必要なパラメーターを次の表に示します。 他のパラメーターのデフォルト値を保持します。
パラメーター
説明
基本設定
展開タイプ
[直接デプロイ] を選択します。
ロール名
デフォルトでは、AliyunFCServerlessDevsRoleが選択されています。 既存のポリシーが要件を満たしていない場合は、[ポリシーの追加] をクリックします。 表示されるダイアログボックスで、追加するポリシーを選択し、[追加] をクリックします。
高度な設定
リージョン
アプリケーションをデプロイするリージョンを選択します。
サービス名
作成するアプリケーションが属するサービスの名称を设定します。
関数名
作成するアプリケーションが属する関数名を设定します。
RAMのARN
関数のトリガーに使用するロールを選択します。 AliyunOSSFullAccessおよびAliyunFCDefaultRolePolicyポリシーがロールにアタッチされていることを確認します。
OSSバケット名
既存のバケットを選択します。
プレフィックス
アップロードされたファイル名に含まれるプレフィックスを指定します。 デフォルト値はsrcです。 同じバケット内の2つのトリガーに同じプレフィックスを設定しないでください。
解凍先ディレクトリ
解凍されたファイルを保存するディレクトリを設定します。 デフォルト値はdstです。
説明ループのトリガーを防ぐには、このディレクトリをプレフィックスの値とは異なる値に設定します。
圧縮ファイル名をパスディレクトリとして使用するかどうか
解凍したファイルを保存するディレクトリの名前として、圧縮ファイルの名前を使用するかどうかを指定します。 以下の点にご注意ください。
true: 圧縮ファイルの名前をディレクトリ名として使用します。 たとえば、解凍先ディレクトリがtargetに設定され、圧縮ファイル名がsource.zipの場合、解凍されたファイルのパスはtarget/source/... です。
false: 圧縮ファイルの名前をディレクトリ名として使用しません。 上記の例では、解凍されたファイルパスはtarget/....
トリガーRAMロールARN
デフォルト値はAliyunOSSEventNotificationRoleです。 OSSはこのロールを使用してイベント通知を送信し、関数を呼び出します。
アプリケーションをテストします。
指定したプレフィックスに一致するディレクトリにZIPファイルをアップロードします。 関連付けられた関数は、decompress destination directoryパラメーターで指定されたディレクトリにファイルを解凍するようにトリガーされます。
たとえば、Prefixをsourceに設定し、Decompression Destination Directoryをtargetに設定した場合、ZIPファイルをsourceまたはsource1にアップロードすると、関数はファイルをtargetに解凍します。
(推奨) Serverless Devsの使用
前提条件
Function Computeが有効化されています。 詳細については、「関数の迅速な作成」の手順1をご参照ください。
OSSが有効化され、バケットが作成されます。 詳細については、「OSSコンソールを使用して開始する」をご参照ください。
サーバーレスDevsがインストールおよび構成されています。 詳細については、「Serverless Devsのインストール」および「Serverless Devsの設定」をご参照ください。
手順
次のコマンドを実行してデモプロジェクトをダウンロードします。
git clone git@github.com:awesome-fc/decompress-oss.git
次のコマンドを実行して、プロジェクトディレクトリに移動します。
cd decompress-oss
s.yamlファイルで設定情報を編集し、ファイルを保存します。
bucketName
パラメーターの値をyour-bucket
から作成したバケットの名前に変更します。(オプション) OSSトリガーの
プレフィックス
、サフィックス
、PROCESSED_DIR
パラメーターの値を変更します。
説明この例では、
src/
はOSSトリガーのプレフィックスです。 Prefixパラメーターをsrc
に設定できます。 デフォルトでは、解凍されたファイルはdst/
に保存されます。次のコマンドを実行して、プロジェクトをデプロイします。
sudo s fc-decompress-oss-invoke-fc-EnhancedInstance deploy -y
サンプル出力:
Checking Service, Function, Triggers (18.63s) Creating Service, Function, Triggers (13.44s) There is auto config in the service: enhancedInstance-decompress Tips for next step ====================== * Display information of the deployed resource: s info * Display metrics: s metrics * Display logs: s logs * Invoke remote function: s invoke * Remove Service: s remove service * Remove Function: s remove function * Remove Trigger: s remove trigge * Remove CustomDomain: s remove domain fc-decompress-oss-invoke-fc-EnhancedInstance: region: cn-hangzhou service: name: enhancedInstance-decompress function: name: oss-invoke-fc runtime: python3 handler: index.handler memorySize: 4096 timeout: 7200 triggers: - type: oss name: zip-t - type: oss name: gz-t - type: oss name: tar-t
拡張子の圧縮ファイルをアップロードします。zip, . tar、または。gzをバケット内の指定されたディレクトリに移動し、関数をトリガーしてファイルを解凍します。
この例では、デフォルトのディレクトリはsrc/ です。 解凍されたファイルは、指定されたディレクトリdst/ に自動的に生成されます。
関連ドキュメント
OSSにアップロードされたZIPファイルのみを解凍する必要がある場合は、OSSコンソールでZIPファイルの自動解凍を設定できます。 詳細については、「Function Computeを使用してファイルを自動的に解凍する」をご参照ください。
10を超えるトリガーをバケットに関連付ける場合は、EventBridgeベースのOSSトリガーを作成できます。 詳細については、「EventBridgeベースのOSSトリガーの設定」をご参照ください。
Function Computeを使用してオブジェクトをパッケージとしてダウンロードする場合は、「Function Computeを使用して複数のオブジェクトをパッケージとしてダウンロードする」をご参照ください。