API Gateway + AWS Lambdaで遊ぶために、LINE BOTを作っていたので紹介。
LINE BOTの作り方とかは、公式のドキュメントやPythonのSDKが充実しているので省きます。
ソースコードは、Githubで公開してるのでよければ参考にしてください。
機能一覧
実装済みの機能
news
と weather
コマンドは話のネタにいいらしく、知り合いが実際にグループで使ってくれているらしい。
あと意外と choice
コマンドも結構使われている。
機能 | 様子 |
---|---|
Greeting | |
Choice | |
Shuffle | |
Weather | |
News |
ニュースは最初Yahoo NEWSのRSSからとっていたのですが、Google NEWSはサムネイル画像がとれるものがあったため、置き換えました。
やってみたいこと
- 呼ばれた回数とかも、記録して可視化できると面白いかも
-
日報をLINEで管理してみたい
- Slackよりもスマホからサッと開ける
- これもどこかで見れるといいかも
こういうのあれば、便利そうっていうのがあれば、コメントとかお待ちしてます。
PythonのServerless Framework
ここからはちょっと技術的な話。
Lambdaだけならフレームワークは使わなくてもAWS CLIから簡単に扱えるのですが、API Gatewayの方はAWS CLIで操作するのがかなり大変です。まだブラウザでAWSのWebサイトを開いて手動で操作したほうが簡単かなという印象でした。
エンドポイントが増えてくると、API Gatewayの設定をうまくやってくれるフレームワークが無いと厳しいです。
調べてみたら、Pythonで人気のServerless Frameworkは2つあります。
Zappa
最初はZappaのコードを見てみたのですが、API GatewayからLambdaに渡されるEventをWSGI Environに変換していて、FlaskやDjangoのようなWSGIフレームワークが動かせます。あとはデプロイ時に各フレームワークのURL定義からAWS CloudFormation用のファイルを生成して、API Gatewayの設定をやってくれているみたいです。
Chalice
Chaliceの方はZappaとは違ってWSGIに変換せず、API Gatewayに特化しています。 無駄なことしていないだけあって、ソースコードも分かりやすいですね。 Zappaの場合は、Flaskの機能でもAPI Gatewayを通して本当に動くのか考えないといけませんが、chaliceのドキュメンテーションに書いてある機能はちゃんと動く安心感もありますね。
今回はChaliceを採用してみましたが、こちらはコードもシンプルでかなり扱いやすいです。
まとめ
- LINE BOTつくってみた
- LINE BOTの機能、こういうのあれば便利そうとかあればコメントとかください
- chaliceとてもいい
- API GatewayもJSONのWeb APIとかならサッと作れたりする
- リクエストやレスポンスのpayloadが10MBまでという制約があるのでファイル・画像のアップロードとかしたい場合は気をつけてください
おわり