このトピックでは、function Computeの関数をApplication Load Balancer (ALB) のバックエンドサーバーとして指定する方法について説明します。 この関数は、リクエストの配信に使用されます。 ALBインスタンス用にFunction Computeタイプのサーバーグループを作成することもできます。 ALBサーバーグループに関数を追加すると、ALBへのリクエストはfunction Computeに転送され、関数が呼び出されます。 Function Computeが関数を実行した後、応答がリクエスタに返されます。
Function ComputeタイプのALBサーバーグループは、Function Compute 2.0をサポートしています。 Function Compute 3.0はサポートされていません。
このトピックで使用される関数は、Function Compute 2.0のものです。
背景情報
Alibaba Cloud Function Computeは、完全マネージド型のイベント駆動型コンピューティングサービスです。 サーバーなどのインフラストラクチャリソースを管理することなく、コードの作成とアップロードに集中できます。 Function Computeは、コンピューティングリソースを割り当て、柔軟で信頼性の高い方法でコードを実行し、ログクエリ、パフォーマンスモニタリング、アラートなどの機能を提供します。 Function Computeは、サーバーレスアーキテクチャを使用するイベント駆動型コンピューティングサービスです。 Function Computeを使用すると、インフラストラクチャリソースを管理する必要なく、コードを作成およびアップロードできます。 Function Computeを使用すると、あらゆる種類のアプリケーションとサービスをすばやく作成でき、コードの実行時に実際に消費されたリソースに対してのみ料金を支払うことができます。
関数を作成した後、リスナーとサーバーグループを設定することで、ALBのバックエンドサーバーとして関数を指定できます。 ALBがリクエストを受信すると、リクエストはFunction Computeに転送され、関数が呼び出されます。 Function Computeが関数を実行すると、レスポンスがリクエスタに返されます。
Function Computeを使用する前に有効化する必要があります。
制限事項
ALBインスタンスと関数は同じリージョンにある必要があります。
ALBのバックエンドサーバーとして関数を指定する場合は、次の制限事項に注意してください。
追加できるのは、HTTPリクエストを処理する関数だけです。
Function Computeに転送されるリクエストには、Dateヘッダーを含める必要があります。 Dateヘッダーは、リクエストが送信される時刻を指定します。
Function Computeタイプの各サーバーグループは、1つの関数のみをサポートします。
ステップ1: Function Computeサービスの作成
Function Compute コンソールにログインします。
重要Function Compute 3.0のコンソールにリダイレクトされている場合は、左上隅の [Back to Function Compute 2.0] をクリックして、Function Compute 2.0のコンソールに移動します。
左側のナビゲーションウィンドウで、[サービスと関数] をクリックします。
上部のナビゲーションバーで、Function Computeサービスを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
[サービス] ページで、[サービスの作成] をクリックしてサービスを作成します。
[サービスの作成] パネルで、次のパラメーターを設定し、[OK] をクリックします。 次の表に記載されていないパラメーターは、デフォルト値を使用できます。
パラメーター
説明
名前
Function Computeサービスの名前を入力します。
名前は1 ~ 128文字で、英数字、アンダースコア (_) 、ハイフン (-) を使用できます。 数字またはハイフン (-) で始めることはできません。
説明
Function Computeサービスの説明を入力します。
ロギング
ロギング機能を有効にするかどうかを指定します。 この例では、[有効化] が選択されています。
有効にする: ログ機能を有効にすると、Function Computeは自動的にプロジェクトとLogstoreを作成し、関数のログをLogstoreに配信します。
この場合、Function Computeはサービスに
AliyunFCDefaultRole
ロールを付与します。これは、サービスがSimple Log serviceにアクセスするために必要な最小限の権限です。 Function ComputeのRAM (Resource Access Management) ロールの詳細については、「他のAlibaba Cloudサービスへのアクセス権限の付与」をご参照ください。無効化: このオプションを選択した場合、Simple Log Serviceを使用して関数のログを保存またはクエリすることはできません。
説明Simple Log Serviceが有効化されていることを確認します。 それ以外の場合は、ログ機能を有効にできません。
ステップ2: 関数を作成する
サービスページで、管理するサービスを見つけて、関数で、アクション列を作成します。
[関数] ページで、[関数の作成] をクリックします。
[関数の作成] ページで、ビジネス要件に基づいて関数を作成する方法を選択します。
この例では、[組み込みランタイムの使用] が選択されています。
、基本設定,コード、およびトリガー設定セクション、次のパラメーターを設定し、作成をクリックします。
次の表に、主要なパラメーターのみを示します。 他のパラメーターにはデフォルト値を使用します。
パラメーター
説明
基本設定
関数名
関数の名前を入力します。
ハンドラタイプ
ハンドラータイプを選択します。 この例では、HTTPハンドラーが選択されています。
Handler Type: 関数がHTTPリクエストまたはWebSocketリクエストを処理することを指定します。
説明ALBはHTTPハンドラーのみをサポートします。
コード
ランタイム
ランタイム環境を選択します。 この例では、Node.js 14が選択されています。
Function Computeでサポートされているランタイム環境の詳細については、「関数の管理」をご参照ください。
コードのアップロード方法
関数コードをfunction Computeにアップロードする方法を選択します。
この例では、サンプルコードの使用が選択されています。
トリガー設定
トリガータイプ
選択したトリガーのタイプが表示されます。 この例では、HTTPトリガーが使用されています。
トリガーは、関数の呼び出し方法を指定します。
名前
トリガーの名前を入力します。
リクエスト方法
関数の呼び出しに使用できるリクエストメソッドを選択します。 この例では、GETとPOSTが選択されています。
認証方法
この例では、署名認証が選択されています。 詳細については、「署名認証」をご参照ください。
[コード] タブをクリックし、コードエディターでコードを変更します。
次のコードブロックを例として使用します。
varparams={ path : req.path, queries : req.queries, headers : req.headers, method : req.method, requestURI : req.url, clientIP : req.clientIP, log : ("Hello World.This is FC!"), }
コードタブで、左上隅にある配置コードをクリックします。テスト機能をクリックします。
Function Computeが関数を実行した後、[応答] セクションで結果を確認できます。 詳細については、「関数の迅速な作成」をご参照ください。
ステップ3: Functionタイプのサーバーグループを作成する
ALBコンソールにログインします。
上部のナビゲーションバーで、サーバーグループを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
左側のナビゲーションウィンドウで、を選択します。
サーバーグループページで、サーバーグループの作成次のパラメーターを設定し、作成をクリックします。
パラメーター
説明
サーバーグループタイプ
作成するサーバーグループのタイプを選択します。 この例では、Function Computeが選択されています。
サーバーグループ名
サーバーグループの名前を入力します。
ヘルスチェックの設定
ヘルスチェック
ヘルスチェックを有効にするかどうかを指定します。 この例では、ヘルスチェックは無効になっています。 デフォルト設定です。
サーバーグループページで、管理するサーバーグループを見つけて、バックエンドサーバーの変更で、アクション列を作成します。
バックエンドサーバータブで、関数の追加をクリックします。
バックエンドサーバーの追加パネルで、次のいずれかの方法を使用して関数を追加し、OKをクリックします。
サービスを指定して関数を追加する
パラメーター
説明
設定方法
[サービス] を選択します。
サービス
手順1で作成したFunction Computeサービスを選択します。
バージョン
[最新] を選択します。 デフォルトでは、新しく作成されたサービスはLATESTバージョンのみを実行します。
関数
ドロップダウンリストから作成した関数を選択します。 使用できる関数がない場合は、[関数の作成] をクリックして関数を作成します。 詳細については、「関数の管理」をご参照ください。
説明
説明を入力します。
Alibaba Cloudリソース名 (ARN) を指定して関数を追加する
パラメーター
説明
設定方法
ドロップダウンリストから [ARN] を選択します。
ARN
追加する関数のARNを入力します。
function Computeコンソールの関数の詳細ページで、関数のARNをコピーできます。 詳細については、「関数のARNの取得」をご参照ください。
説明
説明を入力します。
手順4: ALBインスタンスの作成とリスナーの設定
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
インスタンスページで、ALBの作成をクリックします。
Application Load Balancer購入ページでパラメーターを設定し、[今すぐ購入] をクリックします。
次のセクションでは、このトピックに関連するパラメーターのみについて説明します。 その他のパラメーターの詳細については、「ALBインスタンスの作成」をご参照ください。
リージョン: ALBインスタンスを作成するリージョンです。 この例では、中国 (杭州) が選択されています。
ネットワークタイプ: ALBインスタンスのネットワークタイプ。 この例では、インターネット接続が選択されています。
インスタンスページを検索し、ALB作成したインスタンスをクリックします。リスナーの作成で、アクション列を作成します。
リスナーの設定ステップ、以下のパラメータを設定し、次へをクリックします。
パラメーター
説明
リスナープロトコルを選択します。
リスナープロトコルを選択します。 この例では、HTTPが選択されています。
リスナーポート
ALBインスタンスがリッスンするポートを入力します。 ALBインスタンスは、指定されたポートでリクエストをリッスンし、リクエストをバックエンドサーバーに転送します。 有効な値: -1 から 65535 この例では、80が使用されます。
リスナー名
リスナーの名前を入力します。
ヘルスチェックの設定
この例では、デフォルトの詳細設定が使用されます。
サーバーグループステップで、選択Function Computeからサーバーグループドロップダウンリストで作成されたバックエンドサーバーグループを選択します。ステップ3をクリックし、次へwクリックします。
構成レビューステップで、設定を確認し、送信をクリックします。
手順 5:ネットワーク接続のテスト
上記の手順を完了すると、ALBはFunction Computeに接続されます。 次の操作を実行して、ALBとFunction Compute間のネットワーク接続をテストできます。
コマンドラインインターフェイス (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 2.0のドキュメント:
Function Computeの詳細については、Function Computeとは
関数を更新する方法の詳細については、「関数の管理」をご参照ください。
関数を削除する方法の詳細については、「関数の管理」をご参照ください。
Function Computeサービスを変更する方法の詳細については、「サービスの更新」をご参照ください。
Function Computeサービスを削除する方法の詳細については、「サービスの管理」をご参照ください。
ALBドキュメント:
ALBインスタンスのリリース方法の詳細については、「ALBインスタンスのリリース」をご参照ください。
ALBサーバーグループを削除する方法の詳細については、「サーバーグループの削除」をご参照ください。