概要
Clovaスキルを制作するにあたって、Clovaから送られてくるRequestを処理しResponseを返すwebhook部分をAWSのLambdaで実装する方法を記載したいと思います。
Clovaスキルのロジック処理だけでなく、LINE Messaging APIのロジック処理をLambdaで実装する方法を数回に分けて説明したいと思います。
今回は、ClovaスキルからアクセスするAWSのLambda、API Gatewayの設定を説明したいと思います。
今回行うこと
- AWSの設定
- Lambdaの設定
- API Gatewayの設定
AWSの設定
Lambdaの設定
AWSデベロッパーコンソールにログインして、AWS Lambdaのページを開きます。
作成するLambdaのリージョンを指定する必要があるので、今回は「東京(ap-northeast-1)」を選択します。
「関数の作成」をクリックして新規のLambda関数を作成します。
「一から作成」を選択
- 関数名:「myClovaTest」
- ランタイム:「Node.js 8.10」
- 実行ロールの選択または作成:「基本的なLambdaアクセス権限で新しくロールを作成」
※ 実行ロールは、実際には使用用途によって事前にIAMなどから制作して該当のロール指定する様にしたほうが良いですが、今回は割愛します。
※ ランタイムはasync/awaitを使用したいのでNode.js 8.10を指定します。
上記、設定をして「関数の作成」をクリックします。
「myClovaTest」という名前のLambda関数が作成されました。画面左上のARNがこのLambda関数にアクセスするためのアドレスになります。(※Alexaスキルなどの場合はこのARNをwebhookに指定しますが、今回はClovaスキルからのアクセスになるので、以下で説明しますがAPI Gatewayを介して作成したLambdaにアクセスすることになります。)
Clovaスキルからアクセスするためには、今回作成したLambdaに直接アクセスするのではなく、AWS API Gatewayを介してLambdaにアクセスします。ではAPI Gatewayの設定に移っていきます。
API Gatewayの設定
AWSデベロッパーコンソールの「サービス」から「API Gateway」を入力し「API Gateway」のページを開きます。
作成したLambdaのリージョンと合わせて、こちらもリージョンを「東京(ap-northeast-1)」が選択されているか確認します。
「APIの作成」をクリックして新規のLambda関数を作成します。
APIの作成
APIの各項目を設定してAPIを作成します。
- Choose the protocol:「RESET」
- 新しいAPIの作成:「新しいAPI」
- 名前と説明
- API名:「myClovaTestAPI」※わかりやすい任意のAPIの名前
- 説明:このAPIの任意の説明
- エンドポイントタイプ:「リージョン」
「APIの作成」をクリック
リソースの作成
「アクション」>「リソースを作成」
- プロキシリソースとして設定: チェックしない
- リソース名:api
- リソースパス:/api
- API Gateway CORSを有効にする:チェック
「リソースの作成」をクリック
メソッドの作成
「/api」を選択して「アクション」>「メソッドを作成」
- プルダウン:POST(を選択して有効化)
/api - POST セットアップ
- 統合タイプ:Lambda関数
- Lambda プロキシ統合の使用:チェック
- Lambda リージョン:ap-northeast-1(※上記で作成したLambdaのリージョンを指定)
- Lambda 関数:myClovaTest (※上記で作ったLambda関数の名前)
- デフォルトのタイムアウトの使用:チェック
「保存」をクリック
「API Gatewayに、Lambda関数を呼び出す権限を与えようとしています」とのウィンドウが表示されるので「OK」をクリック。
ステージの作成とAPIのデプロイ
リソースメニューの「/api」>「POST」を選択「アクション」>「APIのデプロイ」をクリック
■ ステージの作成
- デプロイされるステージ:「新しいステージ」
- ステージ名:「production」※任意の名前
- ステージの説明:ステージの説明
- デプロイメントの説明:デプロイメントの説明
「デプロイ」をクリック
ステージエディターにURLが表示されます
以下の様に作成したproductionステージの画面に遷移します。
URLの呼び出し:https://xxxxxxxxxxxxxxxx.ap-northeast-1.amazonaws.com/production
という様に表示されています。
実際にClovaからアクセスするアドレスは「メソッドの作成」で作成した「/api」にPOSTアクセスするのでhttps://xxxxxxxxxxxxxxx.ap-northeast-1.amazonaws.com/production/api
というようにメソッドを設定した「api」を末尾につけて上げる必要があります。
「ステージ」>「production」クリック > 「/api」>「POST」をクリックして、URLの呼び出しを確認してみます。
URLの呼び出しが https://xxxxxxxxxxxxxxx.ap-northeast-1.amazonaws.com/production/api
になって、作成した「/api」がついたURL担っています。後術するClovaスキルの設定で「ExtensionサーバーのURL」には、このURLをしてするので、メモしておきましょう。
LambdaがAPI Gatewayと連携できているかの確認
以上でLambdaとAPI Gatewayの設定が完了しました。実際にLambdaとAPI Gatewayが連携できているか、作成した「myClovaTest」のLamdbaのコンソールページに移って確認してみます。
以下の様の、「myClovaTest」に「API Gateway」が追加されていれば無事連携出来ています。
まとめ
ClovaスキルからアクセスするAWSのLambdaとAPI Gatewayの設定を説明させていただきました。次回のClova Skill開発 with AWS Lambda: その2 Clovaスキルの設定編でClovaスキルから今回設定したLambdaにAPI Gatewayを介してアクセスするClovaスキル設定について書きたいと思います。