0
0

More than 3 years have passed since last update.

AWS lambda を使ってTwitterに定期投稿しよう!

Posted at

概要

AWSのLambdaを使ってTwitterに定期投稿できればいろいろ応用できそうで便利だなと思ったのでまとめてみました。
スクリーンショット 2020-10-16 23.34.23.png

作成手順

作成の流れ

  1. Dockerで環境構築
  2. 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 式を使う場合は時差に気をつける
公式ドキュメント ルールのスケジュール式

感想・今後・・・

・ 他の流れに取り込みたい。

0
0
0

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
0
0