Serverless Cloud Function(SCF)の作成によってバックエンドWebサービスを実装後、CLBを使用してSCFをバインドし、外部にサービスを提供することができます。
背景情報
Serverless Cloud Function(SCF)はTencent Cloudが企業および開発者向けにご提供するサーバーレスな実行環境であり、これによってサーバーを購入および管理することなくコードを実行できます。SCFを作成すると、CLBトリガーを作成することでSCFとイベントを関連付けることができます。CLBトリガーはリクエスト内容をパラメータ形式でSCFに伝達し、SCFからの戻り値をレスポンスとしてリクエスト側に返します。 ユースケース
一般的な HTTP/HTTPS 接続
eコマース、ソーシャルネットワーキング、ツールなどのAppアプリケーション、個人ブログ、イベントページなどのWebアプリケーションのシーンなどに適しています。方法のフローは次のとおりです。
1. App、ブラウザ、H5、ミニプログラムなどからHTTP/HTTPSリクエストを送信し、CLBを介してSCFにアクセスします。
2. CLBによって証明書をアンインストールします。SCFはHTTPサービスの提供のみ必要です。
3. リクエストをSCFに転送し、続いてクラウドデータベースへの書き込みやその他のAPIの呼び出しなど、その後の処理を行います。
CVM/SCF のスムーズな切り替え
HTTP/HTTPSサービスをCVMからSCFに移行するシーン、CVM(SCF)サービスに問題が生じた場合にSCF(CVM)にスピーディーに移行するフェイルオーバーのシーンに適しています。方法のフローは次のとおりです。
1. App、ブラウザ、H5、ミニプログラムなどからHTTP/HTTPSリクエストを送信します。
2. DNS解決によって、リクエストをCLBのVIPに解決します。
3. 1台のCLBからはリクエストをCVMに転送し、もう1台のCLBからはリクエストをSCFに転送します。
4. クライアントに影響することなく、CVMとSCFとの間でバックエンドサービスをスムーズに切り替えることができます。
CVM/SCF 業務分離
タイムセール、買い占めなどのシーンに適しています。高い弾力性が求められるサービスの処理にはSCFを、日常業務の処理にはCVMを使用します。
1. DNS解決によって、ドメイン名Aを1台のCLBのVIPに、ドメイン名Bをもう1台のCLBのVIPに、それぞれ解決します。
2. このうち1台のCLBからはリクエストをCVMに転送し、もう1台のCLBからはリクエストをSCFに転送します。
制限事項
SCFのバインドは広州、上海、北京、成都、中国香港、シンガポール、ムンバイ、東京、シリコンバレーリージョンでのみサポートしています。
SCFのバインドは標準アカウントタイプのみサポートしており、従来型アカウントタイプではサポートしていません。標準アカウントタイプへのアップグレードをお勧めします。詳細については、アカウントタイプアップグレードの説明をご参照ください。 SCFのバインドは基幹ネットワークタイプではサポートしていません。
CLBは同一リージョン下のすべてのSCFのバインドをデフォルトでサポートしています。異なるVPC間でのSCFバインドはサポート可能ですが、異なるリージョン間でのバインドはサポートしていません。
現在はIPv4、IPv6 NAT64バージョンのCLBのみSCFのバインドをサポートしています。IPv6バージョンは現時点ではサポートしていません。
SCFのバインドはレイヤー7(HTTP、HTTPS)リスナーのみサポートしており、レイヤー4(TCP、UDP、TCP SSL)リスナーおよびレイヤー7 QUICリスナーではサポートしていません。
CLBのSCFバインドは「Event関数」タイプのSCFのみサポートしています。
前提条件
操作手順
ステップ1:SCFの作成
1. SCFコンソールにログインし、左側のナビゲーションバーで【関数サービス】をクリックします。 2. 「関数サービス」ページで、【新規作成】をクリックします。
3. 関数サービスの「新規作成」ページで、作成方法は「カスタム作成」を選択し、関数名を入力し、リージョンはCLBインスタンスと同一のリージョンを、実行環境は「Python3.6」をそれぞれ選択します。関数コード入力ボックスに次のコードを入力し(ここではHello CLBを例とします)、【完了】をクリックします。
注意:
CLBにSCFをバインドする際は、特定のレスポンス統合形式によって返す必要があります。詳細については、統合レスポンスをご参照ください。 # -*- coding: utf8 -*-
import json
def main_handler(event, context):
return {
"isBase64Encoded": False,
"statusCode": 200,
"headers": {"Content-Type":"text/html"},
"body": "<html><body><h1>Hello CLB</h1></body></html>"
}
ステップ2:SCFのデプロイ
1. 「関数サービス」ページのリストで、先ほど作成した関数名をクリックします。
2. 「関数管理」ページで、【関数コード】タブをクリックし、タブの下にある【デプロイ】をクリックします。
ステップ3:SCFのバインド
1. CLBコンソールにログインし、左側のナビゲーションバーで【インスタンス管理】をクリックします。 2. 「インスタンス管理」ページの「CLB」タブで、目的のインスタンスの右側にある「操作」列の【リスナーの設定】をクリックします。
3. HTTP/HTTPSリスナーリストで、SCFをバインドしたいリスナーを選択し、目的のリスナーの左側の【+】および表示されたドメイン名の左側の【+】をそれぞれクリックし、表示されたURLパスを選択して【バインド】をクリックします。
4. ポップアップした「バックエンドサービスのバインド」ダイアログボックスで、ターゲットタイプに「SCF」を選択し、ネームスペース、関数名およびバージョン/エイリアスを選択し、重みを設定して【確定】をクリックします。
5. 「リスナーの管理」タブに戻り、「転送ルールの詳細」エリアでCLBにバインド済みのSCF、すなわち作成済みのCLBトリガーを表示します。
説明:
1. SCFコンソールでCLBトリガーを作成し、CLBとSCFをバインドする方法も選択できます。詳細については、トリガーの作成をご参照ください。 2. SCFをバインドする際、レスポンスボディは128kbに制限されています。制限を超えると、CLBはクライアントに403エラーコードを返します。
結果の検証
1. SCFコンソールにログインし、左側のナビゲーションバーで【関数サービス】をクリックします。 2. 「関数サービス」ページのリストで、先ほど作成した関数名をクリックします。
3. 関数のページで、左側のリストの【トリガーの管理】をクリックします。
4. 「トリガーの管理」ページのトリガーで、アクセスパスをクリックします。
5. ブラウザでこのアクセスパスを開き、「Hello CLB」が表示された場合、関数のデプロイは成功です。
関連ドキュメント