Function Computeは、関数の実行をトリガーするイベントソースとしてApplication Load Balancer (ALB) をサポートしています。 Function ComputeをALBのバックエンドサービスとして設定できます。 ALBはリクエストをFunction Computeの関数に転送し、関数の呼び出し結果を同期的に返します。 このトピックでは、関数の実行をトリガーするようにALBトリガーを設定する方法について説明します。
前提条件
Function Compute
Application Load Balancer (ALB)
制限事項
ALBインスタンスと関数は同じリージョンにある必要があります。
ALBのバックエンドサーバーとして関数を指定する場合は、次の制限事項に注意してください。
追加できるのは、HTTPリクエストを処理する関数だけです。
Function Computeに転送されるリクエストには、Dateヘッダーを含める必要があります。 Dateヘッダーは、リクエストが送信される時刻を指定します。
Function Computeタイプの各サーバーグループは、1つの関数のみをサポートします。
ステップ1: 関数コードを記述し、関数をテストする
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで、目的の関数の名前をクリックします。
関数の詳細ページで、コードタブで、コードエディターで関数コードを編集し、デプロイをクリックします。
次のコードは、関数コードを記述する方法の例を示しています。
var getRawBody = require('raw-body'); var getFormBody = require('body/form'); var body = require('body'); /* To enable the initializer feature please implement the initializer function as below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (req, resp, context) => { console.log('hello world'); var params = { path: req.path, queries: req.queries, headers: req.headers, method : req.method, requestURI : req.url, clientIP : req.clientIP, log : ("Hello World.This is FC!"), } getRawBody(req, function(err, body) { for (var key in req.queries) { var value = req.queries[key]; resp.setHeader(key, value); } resp.setHeader("Content-Type", "text/plain"); params.body = body.toString(); resp.send(JSON.stringify(params, null, ' ')); }); /* getFormBody(req, function(err, formBody) { for (var key in req.queries) { var value = req.queries[key]; resp.setHeader(key, value); } params.body = formBody; console.log(formBody); resp.send(JSON.stringify(params)); }); */ }
コードタブで、テスト機能をクリックします。
関数の実行後、[コード] タブで結果を表示できます。
ステップ2: Function Computeタイプのサーバーグループを作成する
ALBコンソールにログインします。
上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
左側のナビゲーションウィンドウで、を選択します。
[サーバーグループ] ページで、[サーバーグループの作成] をクリックし、パラメーターを設定し、[作成] をクリックします。 次の表に、パラメーターを示します。
パラメーター
説明
サーバーグループタイプ
作成するサーバーグループのタイプを選択します。 この例では、Function Computeが選択されています。
サーバーグループ名
サーバーグループのカスタム名を入力します。
バックエンドサーバープロトコル
バックエンドプロトコルを選択します。 この例では、HTTPが選択されています。
リソースグループ
サーバグループが属するリソースグループを選択します。
ヘルスチェックの設定
ヘルスチェックの有効化
ヘルスチェック機能を有効にするかどうかを指定します。 この例では、ヘルスチェックは無効になっています。 デフォルト設定です。
詳細設定
ヘルスチェック機能を有効にすると、ビジネス要件に基づいて [詳細設定] セクションのパラメーターを変更できます。 詳細については、「サーバーグループの作成と管理」をご参照ください。
サーバーグループページで、管理するサーバーグループを見つけて、バックエンドサーバーの変更で、アクション列を作成します。
バックエンドサーバータブで関数の追加をクリックします。
[バックエンドサーバーの追加] パネルで、次のいずれかの方法を使用して関数を追加し、必要なパラメーターを設定し、[OK] をクリックします。 次の表に、パラメーターを示します。
関数を追加するサービスを指定する
パラメーター
説明
設定方法
ドロップダウンリストから [サービス] を選択します。
サービス
関数が属するサービスを選択します。
バージョン
[最新] を選択します。 デフォルトでは、新しいサービスは最新バージョンのみを実行します。
関数
追加する関数を選択します。
説明
カスタム説明を入力します。
関数を追加するためのAlibaba Cloudリソース名 (ARN) の指定
パラメーター
説明
設定方法
ドロップダウンリストから [ARN] を選択します。
ARN
追加する関数のARNを入力します。 関数のARNを取得する方法については、「関数のARNの取得」をご参照ください。
説明
カスタム説明を入力します。
機能を追加すると、[バックエンドサーバーの追加] パネルに [追加] が表示されます。 [閉じる] をクリックします。 設定されたバックエンドサーバーは、[バックエンドサーバー] タブで表示できます。
手順3: ALBインスタンスの作成とリスナーの設定
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
インスタンスページで、ALBの作成をクリックします。
Application Load Balancer購入ページでパラメーターを設定し、[今すぐ購入] をクリックします。
次のセクションでは、このトピックに関連するパラメーターのみについて説明します。 その他のパラメーターの詳細については、「ALBインスタンスの作成」をご参照ください。
リージョン: ALBインスタンスを作成するリージョンです。 この例では、中国 (杭州) が選択されています。
ネットワークタイプ: ALBインスタンスのネットワークタイプ。 この例では、インターネット接続が選択されています。
インスタンスページを検索し、ALB作成したインスタンスをクリックします。リスナーの作成で、アクション列を作成します。
[リスナーの設定] ステップで、パラメーターを設定し、[次へ] をクリックします。 次の表に、パラメーターを示します。
パラメーター
説明
リスナープロトコル
リスニングプロトコルを選択します。 この例では、HTTPが選択されています。
リスナーポート
ALBインスタンスがリッスンするポートを指定します。 ALBインスタンスは、指定されたポートでリクエストをリッスンし、リクエストをバックエンドサーバーに転送します。 有効な値: -1 から 65535 この例では、80が指定されています。
リスナー名
リスナーのカスタム名を入力します。
詳細設定
この例では、デフォルトの詳細設定が使用されます。
[サーバーグループの選択] ステップで、[サーバーグループ] ドロップダウンリストから [Function Compute] を選択し、ステップ2: Function Computeタイプのサーバーグループの作成で作成したサーバーグループを選択し、[次へ] をクリックします。
構成レビューステップで、設定を確認し、送信をクリックします。
ステップ 4:ネットワーク接続のテスト
上記の操作を実行すると、Function ComputeとALBの間に接続が確立されます。 Function ComputeとALB間の接続をテストするには、次の手順を実行します。
コマンドラインインターフェイス (CLI) を開き、
curl -v <ALB instance domain name>
コマンドを実行してDateヘッダーを照会します。Function Computeが処理するHTTPリクエストには、Dateヘッダーを含める必要があります。
curl -H "Date header" <ALB instance domain name>
コマンドを実行し、ALBインスタンスのドメイン名にアクセスします。エコー応答パケットを受信した場合、次の図に示すように、ALBインスタンスがリクエストをFunction Computeに転送して関数を呼び出すことができることを示しています。
関連ドキュメント
Function Computeコンソールに加えて、次の方法を使用してトリガーを設定できます。
Serverless Devsを使用してトリガーを設定します。 詳細については、「Serverless Devs」をご参照ください。
SDKを使用してトリガーを設定します。 詳細は、SDK をご参照ください。
トリガーを変更または削除するには、「トリガーの管理」をご参照ください。