最近Pythonで遊びはじめたので手始めにTwiiterBotを作りたい気持ちになった。
しかしただBotを動かすだけのためにサーバーとか管理するのはだるすぎるのでAWS Lambdaで作れるようにするやつを作った。
$ tree .
.
├── README.md
├── deploy.py
├── event.json
├── lambda.json
├── lib
│ └── __init__.py
├── mezamashidokei_character.png
├── requirements.txt
├── setup.py
└── tweet.py
これを使うと、Hello Worldがてら30分置きに現在時刻をつぶやくTwitterBotを作成してくれる。
アップロードからスケジューリングの設定まで1コマンドでしてくれるようにしたので、いわゆるboilderplateみたいな感じ。
とりあえずこれをいじってればLambda+PythonでのBotの開発のいろはは学べるはず。
使い方
とりあえず一番面倒なのは最初のセットアップ。
- virtualenvで仮想環境作る
- IAM作成(AWSLambdaBasicExecutionRoleを持ったやつ)
- Twitter App作成
- aws cli設定
これらは残念ながら手作業でやらないといけない。ただ、AWSやVirtualEnvの設定とかはすでにやってる人多いと思うから実質TwitterAppのとこだけかな。
まあだるいが各種リンクを見ながらやってもらうことにして、そこで得たIDやアクセストークンなどを.envファイルに設定する。
- .envの例
# AWS settings
AWS_ACCOUNT_ID=12345678910
AWS_IAM_ROLE_NAME=lambda_basic_execution
AWS_REGION_NAME=ap-northeast-1
# Twitter account name
TWITTER_ACCOUNT_NAME=yamadatarou01234
# Twitter app consumer key, consumer secret
CONSUMER_KEY=hogehoge01234
CONSUMER_SECRET=fugafuga01234
# Twitter account tokens
ACCESS_TOKEN=nyannyan01234
ACCESS_TOKEN_SECRET=wanwan01234
# [Options] Virtualenv path
# ここは空でも良い
CUSTOM_VENV_PATH=
あとは,依存関係のinstallをやる。
$ pip install -q -t ./lib -r ./requirements.txt
ここまでくればあとはセットアップコマンドを打って、
$ python setup.py
デプロイしておしまい。
$ python deploy.py
Upload?(y/n):y
Shedule?(y/n):y
晴れてこんな感じのアカウントが作成される。
この後
最初のデプロイまで終わればあとはこれを改造しながら開発するのみ。
ローカルで開発するときは、下記のコマンドを打てばローカルでもlambdaと同様の環境の実行ができる。
$ python-lambda-local -f lambda_handler ./tweet.py ./event.json
また、再度デプロイしたいときはdeployコマンドを打てば簡単にアップロードされる。
$ python deploy.py
Account Name:your_twitter_bot_name
Upload?(y/n):y
Shedule?(y/n):n
ライブラリはTweepyを使ってるのでAPI Referenceを読みながらBot作成に集中すると良い。
尚、Tweet・Retweet・Favorite・Refollowを行う機能についてはtweet.pyに関数を追加しておいたので参考までに。
デプロイとか各種設定で本来のやりたいことに集中できないのは良くないのでこういう簡単なスクリプトを書いて開発すると捗っていいかんじになる。