このセクションでは API Gateway + LambdaからAPI経由でLex Chatボットを呼び出す 方式を試してみます。
CloudFormationスタックを使って、Chatボットアプリを構成する ①API Gateway、②Lambda、③S3リソースがセットアップされていますので、それぞれ確認していきます。
上部の検索窓に “api g..“と入力して、”API Gateway”を選択して下さい。
API “LexPutTextApi” をクリックして詳細画面を表示します。
Lex APIを呼び出すAPI [POST] と 静的コンテンツ(Chat機能を提供するHTML + JavaScript)[GET]のためのリソースが登録されています。
リソースの POST をクリックします。
統合リクエスト をクリックします。
このPOSTメソッドがLambda関数と統合されている事が分かります。
続いて、リソースの GETをクリックします。
統合リクエスト をクリックします。
このGETメソッドはS3と連携してバケット内のコンテンツを返却します。S3バケットを直接公開せずに、API Gateway経由で静的コンテンツを公開することができます。
次はLambda関数を見ていきましょう。 再度、リソースの POST をクリックして、右端のLambda関数 「LexPutText」 をクリックして下さい。
別タブでLambda関数 LexPutText が開きます。コードソースセクションにあるLambda関数の本体であるpythonコード index.py をダブルクリックしてファイルを開きます。
環境変数から ボットID と エイリアスID を取得するように記述されていますので、環境変数に先ほどメモしておいた値を設定します。
設定 タブをクリックします。
環境変数 をクリックします。
環境変数が2つ登録されていますが値が dummy ですので変更します。右上の 編集 ボタンをクリックします。
2つの環境変数の値を変更して、[保存] ボタンをクリックします。
これでLambda関数の設定は完了です。続いてS3バケットのデータを確認します。
上部の検索窓に “cloudf”と入力して、”cloudformation”を選択して下さい。
スタックの一覧から一番下のスタック(説明が put text message**となっているもの)の”名前”をクリックして詳細を表示します。
[リソース] タブを選択して、リソース一覧から [Bucket] の物理IDにあるS3バケットへのリンクをクリックします。
別タブでS3バケットの内容が表示され、API Gateway経由で公開される静的コンテンツが格納されていることが分かります。