Object Storage Service (OSS) はFunction Computeをサポートしています。 Function Computeを使用して、任意のタイプのアプリケーションと関数を構築できます。 このトピックでは、Function Computeを使用して複数のオブジェクトをパッケージに圧縮し、OSSからローカルコンピューターにパッケージをダウンロードする方法について説明します。
前提条件
Function Computeが有効化されています。
Function Computeプロダクトページ でFunction Computeを有効化できます。
Function Computeには、OSSへのアクセス権限が付与されています。
詳細については、「他のAlibaba Cloudサービスへのアクセス権限付与」をご参照ください。
OSSバケットは、関数と同じリージョン内に存在する必要があります。
複数のオブジェクトがバケットの特定のディレクトリにアップロードされます。 この例では、複数のオブジェクトが中国 (杭州) リージョンのexamplebucketバケットのdirディレクトリにアップロードされます。 詳細は、「簡易アップロード (Simple upload)」をご参照ください。
Function Computeでアプリケーションが属するサービスに対してRAMロールが作成され、RAMロールのAlibaba Cloud Resource Name (ARN) が記録されます。 詳細については、「信頼できるAlibaba CloudアカウントのRAMロールの作成」をご参照ください。
解決策
OSSから一度に複数のオブジェクトをダウンロードすると、特別な場合に不便が生じることがあります。 たとえば、一度に多数の小さなオブジェクトをダウンロードすると、ダウンロード速度が遅くなります。 一度に多数のオブジェクトをダウンロードするエクスペリエンスを向上させるために、Function Computeを使用してオブジェクトをパッケージに圧縮し、パッケージをローカルコンピューターにダウンロードしてから、パッケージを解凍することができます。 次の図は、Function Computeを使用してオブジェクトをパッケージに圧縮し、パッケージをダウンロードする方法を示しています。
ユーザーは関数を呼び出し、圧縮するオブジェクトと、オブジェクトが格納されているバケットを指定します。
Function Computeは、指定されたオブジェクトをOSSからダウンロードし、ランダムな名前のZIPパッケージを生成します。
Function ComputeはZIPパッケージをOSSにアップロードします。
Function Computeは、ZIPパッケージのダウンロードに使用されるURLをユーザーに返します。
ユーザーは、URLを使用してOSSからZIPパッケージをダウンロードします。
使用上の注意
機能を実行するためのディスク容量が限られているため、ストリーミングダウンロードとストリーミングアップロードを使用してZIPパッケージを転送します。 少量のデータのみがメモリにキャッシュされます。
ZIPパッケージの転送を高速化するために、Function ComputeはZIPパッケージを生成し、同時にパッケージをOSSにアップロードします。
マルチパートアップロードは、ZIPパッケージを部品単位でOSSに並行してアップロードするために使用されます。
Function Computeは、オブジェクトをパッケージに圧縮するのに最大24時間かかります。 テストデータによると、Function Computeは合計サイズが1.06 GBの57個のオブジェクトをパッケージに圧縮するのに約63秒かかりました。
手順
この例では、Function Computeを使用して、中国 (杭州) リージョンのexamplebucketバケットのdir /ディレクトリにある複数のオブジェクトをローカルコンピューターにダウンロードします。
アプリケーションをデプロイし、パブリックドメイン名を取得します。
ROSを使用したアプリケーションのデプロイ
Resource Orchestration Service (ROS) を使用してFunction Computeアプリケーションをデプロイし、そのパブリックドメイン名を取得するには、次の手順を実行します。
ROSコンソールでスタック作成ウィザードを使用します。
[パラメーターの設定] ステップで、すべてのパラメーターのデフォルト設定を保持し、[次へ] をクリックします。
[確認と確認] ステップで、[作成] をクリックします。
表示されるページの [スタック情報] タブで、スタックのステータスが [作成中] と表示されます。
スタックのステータスが [作成済み] になったら、[出力] タブをクリックしてパブリックドメイン名を表示します。
Serverless Application Centerを使用したアプリケーションのデプロイ
に移動します。Serverlessアプリケーションセンターstart-zip-ossアプリケーションテンプレートをデプロイします。
[デプロイメントタイプ] で [直接デプロイ] を選択します。 アプリケーションテンプレートのバケットのリージョンを選択します。 他のパラメーターのデフォルト設定を保持し、[デフォルト環境の作成と展開] をクリックします。 次の図は、設定の詳細を示しています。
パブリックドメイン名を取得します。
表示されるページの [バージョンのデプロイ] パネルで、結果タブをクリックします。
triggersフィールドで、urlInternetパラメータからパブリックドメイン名を取得します。
Serverless Devsを使用したアプリケーションのデプロイ
Serverless Devsをインストールします。
curl -o-L http:// cli.so/install.sh | bash
Serverless Devsがインストールされているか確認します。
s -v
Serverless Devsがインストールされている場合、次の出力が返されます。
@ serverless-devs/s: 2.1.1、s-home: /root/.s、linux-x64、node-v14.19 3
Serverless Devsを設定します。
s config add -- AccessKeyID LTAI ********* -- AccessKeySecret KZo1 ******** -- アクセスfc-access
次の表に、上記のコマンドのパラメーターを示します。
パラメーター
説明
-- AccessKeyID
Function Computeへのアクセスに使用されるAccessKey ID。
-- AccessKeySecret
Function Computeへのアクセスに使用されるAccessKeyシークレット。
-- アクセス
カスタムキーのエイリアス。
start-zip-ossアプリケーションテンプレートを展開します。
プロジェクトを初期化します。
次の表に、start-zip-ossアプリケーションテンプレートの構成例を示します。
プロジェクトを開始します。
プロジェクトを展開します。
system_urlの戻り値を記録します。
s init start-zip-oss -d start-zip-oss
設定アイテム
例
アプリケーションをデプロイするリージョンのID
cn-hangzhou
Function Computeでアプリケーションが属するサービス
start-zip-oss
アプリケーションの関数名
zip-oss-func
Function Computeでアプリケーションが属するサービスに対して作成されたRAMロールのARN
acs:ram::137918634953 ****:role/test-role
cd start-zip-oss
s deploy -y
fc-zip-oss-service: リージョン: cn-hangzhou service: 名前: start-zip-oss 関数: 名前: zip-oss-func ランタイム: python2.7 handler: main.main_handler memorySize: 3072 timeout: 1800 url: system_url: https:// zip-oss-func-start-zip-oss-ayouye **** .cn-hangzhou.fcapp.ru n トリガー: - タイプ: http name: http-test
次のコマンドを実行してevent.jsonファイルを生成し、バケット名とダウンロードするオブジェクトが保存されているディレクトリを指定します。
cat <<EOF > event.json { "bucket": "examplebucket", "source-dir": "dir/" } EOF
説明source-dirは、バケットのルートディレクトリ以外のディレクトリに設定する必要があります。
次のコマンドを実行して、関数をトリガーします。
curl -v -L -o oss.zip -d @./event.json https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run
/test/oss.zip: dir /ディレクトリにオブジェクトを格納するために使用されるローカルパス。
https:// zip-oss-func-zip-oss-ayouye **** .cn-hangzhou.fcapp.ru n: プロジェクトのデプロイ時に返されるsystem_urlの値。
説明前の例の匿名非認証HTTP関数を認証済みHTTP関数に変更する場合は、次のいずれかのOSS SDKを使用できます。