y.takky てくめも

web技術について勉強会の参加メモだったり、本を読んだメモだったりを載せる予定

AWS lambdaとAPI GatewayでLine Botを使う

今年のAWS summitではAWS lambdaを使ってマイクロサービスを実現する。という発表が多かった。

 

そういうこともあり、lambdaをちょっと触ってみた。

lambdaを使う時のネタとして、Linebotがちょうどよかったので、Linebotを使ってみた。

 

あとは、ちょうど身内でミニ四駆をやるときに作るミニ四駆のシャーシおみくじを作ってくれとのことで、

AWS lambda + API Gateway + Line Botでシャーシおみくじを作った。

この記事ではLine Botの使い方 というよりは、

AWSアーキテクチャの使い方周りの紹介をする。

 

# Line developersに登録

Line botを作成するためにはLine developersに登録が必要なので登録しておく。

登録して、Channel ID等をメモっておく。

 

# Lambdaの準備

AWSのコンソールにはいってLambda Management Consoleを開く

f:id:ytacky:20160625175648p:plain

Create a Lambda functionからSelect Blue Printの画面に行く。

他になにか作るときはここから雛形を使えるっぽい。

今回は空で作りたいのでSkipを選択

 

Step2:Configure functionで各種設定をする。

とりあえず、 NameとRuntimeを適当に設定する。

RoleはAWSconfig roleあたりで作っておく。

 

そしてNextをクリック

CodeにCodeを作っておく。

今回はgithubにあげといた。

github.com

# API endpointを当てる

Add API endpointからAPI Gatewayを選択してAPI endpointを作る。

f:id:ytacky:20160625181545p:plain

 

ここで注意したいのは、LineBotでは MethodがPOSTでくるので、

API GatewayでもMethodをPostにしておく。

 

API Endpointを作成したらLineDevelopersのCallback URLにそのURLを登録しておく。

注意点としては、LineBotでは443ポートを作るようなので443を指定しておくこと。

 

https://{awsapi.execute-api}.us-west-2.amazonaws.com:443 こんなかんじで

 

# テスト
API EndpointがVeryifyしたら、LinedevelopersにあるQRコードを読むと友達にbotを追加できるので追加する。

上のコードのサンプルでは、

1行目におみくじとして引くシャーシを,区切りで。

2行目にユーザを,区切りで入力する。

 

すると、ユーザに対してそのユーザが使うシャーシが選択される。

 

テストの際は、CloudWatchのログを見るといい。

今回はLineからの送信データをダンプしてるので、誰がどんなテキストで送ってきたかがわかる。