Function Compute は、Application Load Balancer (ALB) をイベントソースとしてサポートしています。ALB のバックエンドサービスとして Function Compute を設定できます。ALB は、Function Compute 内の関数にリクエストを転送し、関数呼び出し結果を同期的に返します。このトピックでは、関数を実行するための ALB トリガーの設定方法について説明します。
前提条件
Function Compute
Application Load Balancer (ALB)
制限事項
ALB インスタンスと Function Compute サービスは、同じリージョンに存在する必要があります。
Function Compute を ALB のバックエンドサーバーとして使用する場合、次の制限が適用されます。
HTTP リクエストによってトリガーされる関数のみがサポートされます。
Function Compute では、関数がアクセスされる際に、クライアントからの HTTP リクエストヘッダーに Date フィールドが含まれている必要があります。Date フィールドは、メッセージが送信された時刻を示します。
Function Compute を ALB とともに使用する場合、次の制限が適用されます。
ALB では、サーバーグループタイプを Function Compute に設定する必要があります。バックエンドサーバーグループとリスナーは HTTP プロトコルを使用する必要があります。
ALB は、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 コンソールにログインします。
ALB コンソールに移動し、左側のナビゲーションウィンドウで [サーバーグループ] を選択します。上部のナビゲーションバーで、作成済みの関数と同じリージョンを選択し、サーバーグループの作成 をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
「[サーバーグループ]」ページで、[サーバーグループの作成] をクリックし、以下の設定を完了してから、[作成] をクリックします。

設定項目
説明
サーバーグループタイプ
サーバーグループのタイプを選択します。この例では、[Function Compute タイプ] を選択します。
サーバーグループ名
カスタム
バックエンドプロトコル
バックエンドプロトコルを選択します。この例では、HTTP を選択します。
リソースグループの選択
サーバーグループが属するリソースグループを選択します。
ヘルスチェックの設定
ヘルスチェックを有効にする
ヘルスチェックを有効または無効にします。この例では、ヘルスチェックを無効にするデフォルト設定が使用されます。
詳細設定
ヘルスチェックを有効にするには、必要に応じて詳細設定を変更します。詳細については、「サーバーグループの作成と管理」をご参照ください。
表示されるメッセージで、[バックエンドサーバーの追加] をクリックします。
[バックエンドサーバー] タブで、[Function Compute の設定] をクリックします。
[バックエンドサーバーの追加] パネルで、以下のいずれかの方法を使用して構成を完了し、その後 [OK] をクリックします。
リソースの選択
設定項目
説明
設定方法
[リソースの選択] を選択します。
サービス
ターゲット関数が属するサービスを選択します。
バージョン
[LATEST] を選択します。新しく作成されたサービスには、デフォルトで LATEST バージョンのみが存在します。
関数
ターゲット関数を選択します。
説明
カスタム
ARN を使用
設定項目
説明
設定方法
[ARN を使用] を選択します。
ARN
ターゲット関数の ARN を入力します。関数の ARN を取得する方法の詳細については、「関数の ARN を取得」をご参照ください。
注:
カスタム
「[バックエンドサーバーの追加]」パネルには、サーバーが正常に追加されましたというメッセージが表示されます。「[閉じる]」をクリックします。「[バックエンドサーバー]」タブで、設定済みのバックエンドサーバーを表示できます。
ステップ 3: ALB インスタンスの作成とリスナーの設定
Application Load Balancer (ALB) コンソールにログインします。
上部のメニューバーでリージョンを選択します。この例では、中国 (杭州) が選択されています。
「インスタンス」ページで、[Application Load Balancer の作成] をクリックします。
「[Application Load Balancer (Pay-As-You-Go)]」購入ページで、パラメータ設定を完了します。
このセクションでは、このトピックに関連するパラメータのみをリストします。その他のパラメータについては、「ALB インスタンスの作成と管理」をご参照ください。
リージョン: この例では、中国 (杭州) を選択します。
ネットワークタイプ: この例では、インターネット を選択します。
[インスタンス] ページで、作成した ALB インスタンスを見つけ、インスタンスの [アクション] 列で [リスナーの作成] をクリックしてリスナー設定ウィザードを開きます。
「[リスナーの設定]」ウィザードで、以下の設定を完了し、[次へ] をクリックします。
設定項目
説明
リスナープロトコル
リスナーのプロトコルを選択します。この例では、HTTP を選択します。
リスナーポート
リクエストを受信し、バックエンドサーバーに転送するリスナーポートを入力します。ポート範囲は 1 ~ 65535 です。この例では、80 を入力します。
リスナー名
カスタム
詳細設定
この例では、デフォルト設定が使用されます。
[サーバーグループの選択] ウィザードで、[サーバーグループの選択] ドロップダウンリストから [Function Compute タイプ] を選択します。手順 2: Function Compute のサーバーグループを作成する で作成したバックエンドサーバーグループを選択し、[次へ] をクリックします。
[設定の確認] ウィザードで設定を確認し、[送信] をクリックします。
ステップ 4: 接続のテスト
前述の手順を完了すると、Function Compute と ALB の間で接続が確立されます。 Function Compute と ALB の間の接続をテストするには、以下の操作を行います。
コマンドラインウィンドウを開き、curl -v コマンドを実行して Date ヘッダーフィールドを取得します。
Function Compute では、HTTP リクエストヘッダーに Date フィールドが含まれている必要があります。
curl -v <ALB instance domain name>
「curl -H」コマンドを実行して、ALB インスタンスのドメイン名にアクセスします。
curl -H "Date header field" <ALB instance domain name>次の図に示すような応答メッセージを受信した場合、ALB が Function Compute にリクエストを転送し、関数を呼び出すことができることを示しています。

詳細情報
- Serverless Devs を使用してトリガーを設定します。詳細については、「Serverless Devs」をご参照ください。
- SDK を使用してトリガーを設定します。詳細については、「SDK」をご参照ください。
作成したトリガーを変更または削除するには、「トリガーの管理」をご参照ください。