Function Compute は、イベントソースとして Application Load Balancer (ALB) をサポートしています。Function Compute を ALB のバックエンドサービスとして設定できます。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 は、バックエンドサーバーとして 1 つの Function Compute サービスのみをサポートします。
ステップ 1:関数コードの作成とテスト
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[サービス & 関数] をクリックします。
上部のナビゲーションバーでリージョンを選択します。[サービス] ページで、対象のサービスをクリックします。
[関数] ページで、対象の関数の名前をクリックします。
関数詳細ページで、[関数コード] タブをクリックし、コードエディタでコードを作成してから、[コードのデプロイ] をクリックします。
次のコードは一例です。
var getRawBody = require('raw-body'); var getFormBody = require('body/form'); var body = require('body'); /* 初期化機能を有効にするには、 以下のように initializer 関数を実装してください: 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 という 1 つのバージョンしかありません。
機能
対象の関数を選択します。
[備考]
任意。
[ARN を使用]
設定項目
説明
[設定方法]
[ARN で設定] を選択します。
[ARN]
対象の関数の ARN を入力します。関数の ARN を取得する方法の詳細については、「関数の ARN の取得」をご参照ください。
[備考]
任意。
[バックエンドサーバーの追加] パネルに「正常に追加されました!」というメッセージが表示されます。[閉じる] をクリックします。[バックエンドサーバー] タブで、設定したバックエンドサーバーを確認できます。
ステップ 3:ALB インスタンスの作成とリスナーの設定
上部のメニューバーでリージョンを選択します。このトピックでは、例として [中国 (杭州)] を使用します。
[インスタンス] ページで、[Application Load Balancer の作成] をクリックします。
[Application Load Balancer (従量課金)] ページで、パラメーターを設定します。
このセクションでは、このトピックに関連するパラメーターのみを説明します。その他のパラメーターの詳細については、「ALB インスタンスの作成と管理」をご参照ください。
リージョン: [中国 (杭州)] を選択します。
インスタンスネットワークタイプ: [パブリックネットワーク] を選択します。
[インスタンス] ページで、作成した ALB インスタンスを見つけます。[操作] 列で [リスナーの作成] をクリックします。リスナー設定ウィザードが表示されます。
[リスナーの設定] ステップで、次のパラメーターを設定し、[次へ] をクリックします。
設定項目
注意
[負荷分散プロトコルの選択]
リスナープロトコルタイプを選択します。このトピックでは [HTTP] を使用します。
リスナーポート
リクエストを受け入れてバックエンドサーバーに転送するリスナーポートを入力します。ポート範囲は 1~65535 です。このトピックでは、80 と入力します。
[リスナー名]
任意。
[詳細設定]
このトピックでは、デフォルト設定を使用します。
[サーバーグループの選択] 設定ウィザードの [サーバーグループの選択] ドロップダウンリストで [Function Compute タイプ] を選択し、ステップ 2:Function Compute タイプのサーバーグループの作成で作成したバックエンドサーバーグループを選択して、[次へ] をクリックします。
[設定の確認] ステップで、設定を確認して [送信] をクリックします。
ステップ 4:接続性のテスト
上記の操作を完了すると、FC と ALB の間に接続が確立されます。その後、次の操作を実行して、FC と ALB 間の接続性をテストできます。
コマンドラインウィンドウを開き、curl -v コマンドを実行して Date ヘッダーフィールドを取得します。
Function Compute は、HTTP リクエストヘッダーに Date ヘッダーフィールドを含める必要があります。
curl -v <ALB インスタンスのドメイン名>
curl -H コマンドを実行して、ALB インスタンスのドメイン名にアクセスします。
curl -H "Date ヘッダー" <ALB インスタンスのドメイン名>次の図のような応答は、ALB がリクエストを Function Compute に転送して関数を呼び出すことができることを示します。

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