概要
AWSのLambdaを使ってTwitterに定期投稿できればいろいろ応用できそうで便利だなと思ったのでまとめてみました。
作成手順
作成の流れ
- Dockerで環境構築
- PythonからTwitter投稿
詳細
1.DockerでLambdaの環境構築
lambadaで標準以外のライブラリーを使うためにDocker を使いました。
lambdaでdockerを使うにはlambci/docker-lambda使うと便利です。
こちらの記事が参考になりました。
AWS Lambda x Pythonでのローカル開発環境の再現について
Dockerfile
FROM lambci/lambda:build-python3.8
ENV AWS_DEFAULT_REGION ap-northeast-1
ADD . .
CMD pip3 install -r requirements.txt -t /var/task && \
zip -9 deploy_package.zip lambda_function.py && \
zip -r9 deploy_package.zip *
zip -9
のオプションはよくわからないです。
requirements.txt
twitter
2.Twitter投稿
こちらsixohsix/twitterのライブラリを使えば簡単にツイートできます。
参考にさせていただいた記事
・Python3で簡単にtwitterに投稿する
lambda_funcyion.py
import twitter
def lambda_handler(event, context):
auth = twitter.OAuth(
token="トークン",
token_secret="トークンシークレット",
consumer_key="キー",
consumer_secret="シークレット"
)
context = '今日も頑張った!'
t = twitter.Twitter(auth=auth)
t.statuses.update(status=context)
3.ローカルでのデバック
いちいちlambdaにあげて確認するとめんどくさいので、ローカルで確認します。
$ docker run -v "$PWD":/var/task lambci/lambda:python3.8 lambda_function.lambda_handler [event]
これで投稿させているはずです。
4.デプロイ
まずはzipファイルにまとめます。
$ docker build -t mylambda .
$ docker run -v "$PWD":/var/task mylambda
次にAWSのコンソールからlambda関数を作成。
zipファイルをアップロード
環境変数を登録
定期実行の時間を登録できればOK!
参考
・Amazon CloudWatch Events で cron 式を使う場合は時差に気をつける
・公式ドキュメント ルールのスケジュール式
感想・今後・・・
・ 他の流れに取り込みたい。