LoginSignup
13
13

More than 5 years have passed since last update.

AWS Lambda+Python 2.7でサクッとTwitter Botの開発環境をつくるスクリプトを書いた

Last updated at Posted at 2017-01-30

最近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の開発のいろはは学べるはず。

使い方

とりあえず一番面倒なのは最初のセットアップ。

これらは残念ながら手作業でやらないといけない。ただ、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

晴れてこんな感じのアカウントが作成される。

kako-cWQSOOdiY3DhN8yM.png

この後

最初のデプロイまで終わればあとはこれを改造しながら開発するのみ。

ローカルで開発するときは、下記のコマンドを打てばローカルでも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に関数を追加しておいたので参考までに。

デプロイとか各種設定で本来のやりたいことに集中できないのは良くないのでこういう簡単なスクリプトを書いて開発すると捗っていいかんじになる。

13
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13