すべてのプロダクト
Search
ドキュメントセンター

Function Compute:ALBトリガー

最終更新日:Sep 09, 2024

Function Computeは、関数の実行をトリガーするイベントソースとしてApplication Load Balancer (ALB) をサポートしています。 Function ComputeをALBのバックエンドサービスとして設定できます。 ALBはリクエストをFunction Computeの関数に転送し、関数の呼び出し結果を同期的に返します。 このトピックでは、関数の実行をトリガーするようにALBトリガーを設定する方法について説明します。

前提条件

制限事項

  • ALBインスタンスと関数は同じリージョンにある必要があります。

  • ALBのバックエンドサーバーとして関数を指定する場合は、次の制限事項に注意してください。

    • 追加できるのは、HTTPリクエストを処理する関数だけです。

    • Function Computeに転送されるリクエストには、Dateヘッダーを含める必要があります。 Dateヘッダーは、リクエストが送信される時刻を指定します。

  • Function Computeタイプの各サーバーグループは、1つの関数のみをサポートします。

ステップ1: 関数コードを記述し、関数をテストする

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。

  3. [関数] ページで、目的の関数の名前をクリックします。

  4. 関数の詳細ページで、コードタブで、コードエディターで関数コードを編集し、デプロイをクリックします。

    次のコードは、関数コードを記述する方法の例を示しています。

    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));
        });
        */
    }
  5. コードタブで、テスト機能をクリックします。

    関数の実行後、[コード] タブで結果を表示できます。

ステップ2: Function Computeタイプのサーバーグループを作成する

  1. ALBコンソールにログインします。

  2. 上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。

  3. 左側のナビゲーションウィンドウで、ALB > サーバーグループを選択します。

  4. [サーバーグループ] ページで、[サーバーグループの作成] をクリックし、パラメーターを設定し、[作成] をクリックします。 次の表に、パラメーターを示します。

    Server group of the Function Compute type

    パラメーター

    説明

    サーバーグループタイプ

    作成するサーバーグループのタイプを選択します。 この例では、Function Computeが選択されています。

    サーバーグループ名

    サーバーグループのカスタム名を入力します。

    バックエンドサーバープロトコル

    バックエンドプロトコルを選択します。 この例では、HTTPが選択されています。

    リソースグループ

    サーバグループが属するリソースグループを選択します。

    ヘルスチェックの設定

    ヘルスチェックの有効化

    ヘルスチェック機能を有効にするかどうかを指定します。 この例では、ヘルスチェックは無効になっています。 デフォルト設定です。

    詳細設定

    ヘルスチェック機能を有効にすると、ビジネス要件に基づいて [詳細設定] セクションのパラメーターを変更できます。 詳細については、「サーバーグループの作成と管理」をご参照ください。

  5. サーバーグループページで、管理するサーバーグループを見つけて、バックエンドサーバーの変更で、アクション列を作成します。

  6. バックエンドサーバータブで関数の追加をクリックします。

  7. [バックエンドサーバーの追加] パネルで、次のいずれかの方法を使用して関数を追加し、必要なパラメーターを設定し、[OK] をクリックします。 次の表に、パラメーターを示します。

    • 関数を追加するサービスを指定する

      パラメーター

      説明

      設定方法

      ドロップダウンリストから [サービス] を選択します。

      サービス

      関数が属するサービスを選択します。

      バージョン

      [最新] を選択します。 デフォルトでは、新しいサービスは最新バージョンのみを実行します。

      関数

      追加する関数を選択します。

      説明

      カスタム説明を入力します。

    • 関数を追加するためのAlibaba Cloudリソース名 (ARN) の指定

      パラメーター

      説明

      設定方法

      ドロップダウンリストから [ARN] を選択します。

      ARN

      追加する関数のARNを入力します。 関数のARNを取得する方法については、「関数のARNの取得」をご参照ください。

      説明

      カスタム説明を入力します。

    機能を追加すると、[バックエンドサーバーの追加] パネルに [追加] が表示されます。 [閉じる] をクリックします。 設定されたバックエンドサーバーは、[バックエンドサーバー] タブで表示できます。

手順3: ALBインスタンスの作成とリスナーの設定

  1. ALBコンソールにログインします。

  2. 上部のナビゲーションバーで、ALBインスタンスを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。

  3. インスタンスページで、ALBの作成をクリックします。

  4. Application Load Balancer購入ページでパラメーターを設定し、[今すぐ購入] をクリックします。

    次のセクションでは、このトピックに関連するパラメーターのみについて説明します。 その他のパラメーターの詳細については、「ALBインスタンスの作成」をご参照ください。

    • リージョン: ALBインスタンスを作成するリージョンです。 この例では、中国 (杭州) が選択されています。

    • ネットワークタイプ: ALBインスタンスのネットワークタイプ。 この例では、インターネット接続が選択されています。

  5. インスタンスページを検索し、ALB作成したインスタンスをクリックします。リスナーの作成で、アクション列を作成します。

  6. [リスナーの設定] ステップで、パラメーターを設定し、[次へ] をクリックします。 次の表に、パラメーターを示します。

    パラメーター

    説明

    リスナープロトコル

    リスニングプロトコルを選択します。 この例では、HTTPが選択されています。

    リスナーポート

    ALBインスタンスがリッスンするポートを指定します。 ALBインスタンスは、指定されたポートでリクエストをリッスンし、リクエストをバックエンドサーバーに転送します。 有効な値: -1 から 65535 この例では、80が指定されています。

    リスナー名

    リスナーのカスタム名を入力します。

    詳細設定

    この例では、デフォルトの詳細設定が使用されます。

  7. [サーバーグループの選択] ステップで、[サーバーグループ] ドロップダウンリストから [Function Compute] を選択し、ステップ2: Function Computeタイプのサーバーグループの作成で作成したサーバーグループを選択し、[次へ] をクリックします。

  8. 構成レビューステップ、設定を確認し、送信をクリックします。

ステップ 4:ネットワーク接続のテスト

上記の操作を実行すると、Function ComputeとALBの間に接続が確立されます。 Function ComputeとALB間の接続をテストするには、次の手順を実行します。

  1. コマンドラインインターフェイス (CLI) を開き、curl -v <ALB instance domain name> コマンドを実行してDateヘッダーを照会します。

    Function Computeが処理するHTTPリクエストには、Dateヘッダーを含める必要があります。

    image.png

  2. curl -H "Date header" <ALB instance domain name> コマンドを実行し、ALBインスタンスのドメイン名にアクセスします。

    エコー応答パケットを受信した場合、次の図に示すように、ALBインスタンスがリクエストをFunction Computeに転送して関数を呼び出すことができることを示しています。ALB支持函数计算验证结果

関連ドキュメント

Function Computeコンソールに加えて、次の方法を使用してトリガーを設定できます。

  • Serverless Devsを使用してトリガーを設定します。 詳細については、「Serverless Devs」をご参照ください。

  • SDKを使用してトリガーを設定します。 詳細は、SDK をご参照ください。

トリガーを変更または削除するには、「トリガーの管理」をご参照ください。