自分LINE -> LINE bot -> AWS API Gateway -> Lambda 関数
という風にしたいので、Lambda関数、API Gateway、botのwebhookの設定をする。
LINE botのwebhook先URLはhttpsでなければいけない。
処理をするのは例えばEC2上にwebサーバ立ててやってもいいのだけれど、手軽にhttps使えるようにしたかったのと、単純にLambdaを使って作ってみたかったので、このような API GatewayとLambdaを使うことにした。
Lambda 関数を作成
API Gateway の設定
叩かれることができるメソッドとURLを作る
- 「API を作成」
- 「HTTP API」を「構築」
こここれじゃなくてもいいのかな - API名だけ適当にいれて作成
- 左メニューの「開発」 の「ルート」を選ぶ
- Create を選び、POSTメソッドを選び作成する
そのURLを叩かれたときに呼ぶ処理を設定する。Lambdaを呼ぶようにする
- 左メニューの「統合」を選ぶ
- 先ほど作ったメソッド名を選ぶ「統合を作成してアタッチ」を選ぶ
- 統合タイプで「Lambda 関数」を選ぶ
- Lambda関数名で先ほど作ったLambda関数名を選ぶ
- 「作成」する
LINE bot のweb hookにAPI GatewayのURLを設定する
- LINE developer コンソールで作ったMessagingAPIのチャネルを選び、Messagind API設定からWebhook設定の編集を押す
- AWS API GatewayのエンドポイントURLを入力し、更新を押す
https://hogehoge123.execute-api.ap-northeast-1.amazonaws.com
みたいなURL
API GatewayでAPI名クリックした後の詳細画面で確認できる - 更新できたら、検証ボタンが出るので押す。成功したらOK。
- もし失敗したら、何か間違ってる。
- 成功したら、Webhookの利用をONにする
確認
- 自分のLINEで、botあてに適当にメッセージを送る。
- 現時点では返答は返ってこない
- Lambdaのログを確認する
- Lambdaで作った関数の画面で、「モニタリング」> 「ClowdWatchのログを表示」
- ログストリームのところにログがあるので選ぶ。複数あるときは最新ぽいのを選ぶ
{'version': '2.0',~~
みたいな行をクリックすると、print(event)
でprintされた内容が見れる。- これはLINE botからAPIGatewayを通してLambdaに送り付けられてきた情報。
- 中に、LINEでbotあてに送ったメッセージが含まれているはず。
body.events[0].text
あたり
次回は、オウム返しするだけの設定。
次々回は、googleカレンダーAPIを叩く & それをLambdaにデプロイする。