Object Storage Service (OSS) は Function Compute と統合されており、さまざまなアプリケーションや関数を構築できます。このトピックでは、Function Compute を使用して複数の OSS オブジェクトを単一の ZIP ファイルにパッケージ化し、ローカルにダウンロードする方法について説明します。
前提条件
-
Function Compute が有効化されています。
Function Compute プロダクト詳細ページから Function Compute を有効化できます。
-
Function Compute に OSS へのアクセス権限を付与する必要があります。
詳細については、「Function Compute に他の Alibaba Cloud サービスへのアクセス権限を付与する」をご参照ください。
-
バケットとアプリケーション関数は同じリージョンに配置されている必要があります。
-
バケット内の指定ディレクトリに複数のオブジェクトをアップロードしておく必要があります。本チュートリアルでは、中国 (杭州) リージョンの
examplebucketバケット内のdir/ディレクトリを例として使用します。詳細については、「シンプルアップロード」をご参照ください。 -
Function Compute サービス用の RAM ロールを作成し、その ARN を記録しておく必要があります。詳細については、「信頼された Alibaba Cloud アカウント用の RAM ロールを作成する」をご参照ください。
仕組み
OSS から複数のオブジェクト(特に多数の小サイズファイル)を一括でダウンロードすると、処理が遅く不便です。Function Compute を使用することで、まず OSS 上でオブジェクトをパッケージ化し、圧縮済みパッケージをローカルコンピューターにダウンロードしてから展開できます。これにより、一括ダウンロードが高速化されます。Function Compute を使用して OSS オブジェクトをパッケージ化・ダウンロードするワークフローを次の図に示します。
-
ユーザーが関数を呼び出し、圧縮対象のバケットおよびオブジェクトを指定します。
-
Function Compute が OSS から指定されたオブジェクトをダウンロードし、ランダムな名前の ZIP パッケージを生成します。
-
Function Compute が ZIP パッケージを OSS にアップロードします。
-
Function Compute がユーザーに ZIP パッケージのダウンロード URL を返します。
-
ユーザーは返された永続的なダウンロード URL を使用して OSS からファイルをダウンロードします。
注意事項
-
関数の実行環境におけるディスク領域は制限されているため、関数はダウンロードおよびアップロード時にデータをストリーミング処理し、メモリ内に少量のデータのみをキャッシュします。
-
処理を高速化するために、Function Compute は ZIP ファイルを生成しながら OSS にアップロードします。
-
ZIP ファイルを OSS にアップロードする際、関数は OSS のマルチパートアップロード機能を使用して、複数のスレッドでパーツを同時にアップロードします。
-
Function Compute を使用したファイル圧縮の最大処理時間は 24 時間です。(テストデータ:合計サイズ 1.06 GB の 57 個のオブジェクトを 63 秒で処理)
操作手順
この例では、中国 (杭州) リージョンの examplebucket バケット内の dir/ ディレクトリにある複数のオブジェクトを Function Compute を使用してパッケージ化し、ローカルコンピューターにダウンロードする方法について説明します。
-
アプリケーションをデプロイし、パブリックドメイン名を取得します。
ROS によるワンクリック
Resource Orchestration Service (ROS) を使用して、Function Compute アプリケーションをワンクリックでデプロイします。
-
ワンクリック設定テンプレートリンクを開きます。
-
パラメーターの設定タブで、すべてのパラメーターをデフォルトのままにして、次へ:確認をクリックします。
-
チェックと確認タブで、作成をクリックします。
[ステータス]が[スタック情報]タブに[作成中]と表示されます。
-
スタックのステータスがCreate_Successに変化したら、出力タブをクリックしてパブリックドメイン名を確認します。
Serverless Application Center によるワンクリック
-
Serverless Application Centerから start-zip-oss アプリケーションテンプレートをデプロイします。
デプロイタイプとして、直接デプロイを選択します。アプリケーションテンプレートとバケットが同じリージョンにあることを確認し、その他のオプションはデフォルトのままにしてください。構成は次の図のとおりです。

-
パブリックドメイン名を取得します。
-
結果タブをクリックします。
-
トリガーフィールドで、パブリックドメイン名 (urlInternet) を取得します。

-
マニュアル(Serverless Devs CLI を使用)
-
Serverless Devs をインストールします。
npm install -g @serverless-devs/sインストールを確認します。
s -v次の出力が表示されれば、インストールは成功しています。
@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******** --access fc-access次の表はパラメーターの説明です。
パラメーター
説明
--AccessKeyID
Function Compute へのアクセス用 AccessKey ID です。
--AccessKeySecret
Function Compute へのアクセス用 AccessKey Secret です。
--access
認証情報のカスタムエイリアスです。
-
start-zip-oss アプリケーションテンプレートをデプロイします。
-
プロジェクトを初期化します。
-
次の例に基づいて設定項目の値を指定します。
-
プロジェクトディレクトリに移動します。
-
プロジェクトをデプロイします。
-
出力から
system_urlを記録します。
s init start-zip-oss -d start-zip-ossパラメーター
例
アプリケーションの配置リージョン
cn-hangzhou
アプリケーションが属する Function Compute サービス
start-zip-oss
アプリケーションの関数名
zip-oss-func
アプリケーションが属する Function Compute サービス用に設定された RAM ロールの ARN
acs:ram::137918634953****:role/test-role
cd start-zip-osss deploy -yfc-zip-oss-service: region: cn-hangzhou service: name: start-zip-oss function: name: zip-oss-func runtime: python2.7 handler: main.main_handler memorySize: 3072 timeout: 1800 url: system_url: https://zip-oss-func-start-zip-oss-ayouye****.cn-hangzhou.fcapp.run triggers: - type: http name: http-test -
-
-
ご利用のサーバーまたは ECS インスタンス上で、次のコマンドを実行して
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-
oss.zip:ダウンロードされた ZIP パッケージを保存するローカルパスです。説明Windows 標準の解凍ツールで失敗する場合は、7-Zip や WinRAR などのサードパーティ製ツールをご使用ください。
-
https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run:プロジェクトデプロイ時に返されたsystem_urlです。
匿名ではなく認証済みの HTTP 関数として呼び出すには、次のいずれかの SDK を使用します。
-
よくある質問
ウォーターマークの追加
期限付きダウンロード URL
参照
-
Function Compute の特徴および課金に関する詳細については、「Function Compute とは」および「課金概要」をご参照ください。
-
Function Compute と OSS の統合を示すテンプレートおよびサンプルアプリケーションについては、「サンプルコード」をご参照ください。
-
Function Compute と OSS を組み合わせたその他の使用例については、「Function Compute を使用して OSS 内の ZIP ファイルを自動的に展開する」をご参照ください。