ここまでは、AWSの管理コンソール上のテスト機能を使って、開発したLex Chatボットを使用してみました。実際のアプリケーションからLex Chatボットの機能を利用するためにはAPI経由でLexの機能を呼び出す必要があります。外部からLex APIを呼び出す方法は下記の2つの方法が考えられます。
1: Lex Chatボットを直接 REST API経由で呼び出す
Lexはボットを操作するためのAPIを公開していますので、これらのAPIをブラウザから直接呼び出すことが可能です。注意点としては、APIを直接呼び出すためにはIAM権限が必要となるため、リクエストに署名 V4形式で認証情報を付与する必要があります。Cognitoユーザープールを使う方法が最もシンプルでしょう。また、Lex はVPC Endpointをサポートしていないため、APIはインターネット経由で呼び出す必要があります。
2: API Gateway + LambdaからAPI経由でLex Chatボットを呼び出す
セキュリティ上の理由からインターネット経由での接続が許容できない場合は、API Gateway + Lambda を利用してLex Chatボットに対してAPI呼出を行う方法が考えられます。この方式では、PrivateサブネットからVPC Endpoint経由でAPI Gatewayにアクセスすることでインターネットを経由せずにLex APIを呼び出すことができます。
本構成でもAmazon Lex自体はインターネット経由でAPIを呼び出す事が可能ですが、認証を制御することで実質的にLambda経由のアクセスのみに限定させることが可能です。
LexはV1とV2でAPIが異なります。本ハンズオンではV2 APIを使用しています。APIの詳細については下記サイトを参照下さい。 - Lex Runtime V2 - Python boto3 Lex runtime V2