LoginSignup
2
2

More than 1 year has passed since last update.

Lambdaからツイートしたい(Twitter API V2対応)

Last updated at Posted at 2021-12-31

Lambdaを使って、今日の天気を定期ツイートするためにTwitterAPIを使うことにしました。
しかし、TwitterAPIが1ヶ月ほど前にバージョンアップしており、ネット上のソースコードをコピペしても上手くいきませんでした・・
数少ない情報を元になんとかツイートまでいけたのでメモ!

環境

デプロイ環境
AWS Lambda
Python 3.9
ローカル環境
MAC
Python 3.9.6

開発準備

以下の順序で進めます。
①Twitter APIアカウント登録
②Twitter API認証設定
③python3インストール
④tweepyインストール

Twitter APIアカウント登録

まず、PCで自分のTwitterアカウントにログインしときます。
(注)電話番号の登録をしていない場合は必ずしてください!
その後、Twitter Developerサイトで利用登録します。
image.png
登録画面の以下を入力してNext。
image.png
以下のポリシーに同意しSubmit。
image.png
電話番号が登録されていないと「There was a problem completing your request」のエラーが発生。
image.png
成功すると以下の画面に飛び、メールが送信されるのでメール認証をすると登録完了です!
image.png
image.png

Twitter API認証設定

アカウント登録が完了すると、アプリ設定が始まります。
image.png
アプリ名を入力し、GetKeysでAPI認証情報が表示されます(後でどうせ変えるのでコピーはどっちでもOK)
image.png
「Skip to dashboard」でダッシュボードを表示すると一番下に認証設定メニューがあるので「Set up」を選択します。
image.png
以下のように設定します。
image.png
デフォルトでは読み込みしかできないので、書き込みもできる設定に変更します。
image.png
以下は入力しないと保存できないので、何かしら入力しておきます。(私はTwitterアカウントのURLを入れときました)
入力完了したらセーブして完了です!
image.png

python3インストール

簡単なのでbrewでインストールします。
※brewが入っていない場合はbrewをインストールしてください

$ brew install python3
$ python3 --version
Python 3.9.6
$ pip3 --version
pip 21.3.1

tweepyインストール

最後にpythonでツイートするためのライブラリtweepyのインストールです。
今回はLambda上で実行したいため、モジュール化するためにフォルダを指定してインストールします。

$ pip3 install tweepy -t (保存したいディレクトリパス名)

ソースコード

以下ソースコード。

lambda_function.py
import sys
# tweepyをインストールしたディレクトリ相対パスを指定する
sys.path.append('python_package')
# coding: UTF-8
import json
import tweepy

def lambda_handler(event, context):
    # 設定ファイル読み込み
    config = json.load(open('config.json', 'r'))
    # Twitterオブジェクト設定
    client = tweepy.Client(config['twitter']['bearerToken'], config['twitter']['consumerKey'],
                           config['twitter']['consumerSecret'], config['twitter']['accessToken'], config['twitter']['accessTokenSecret'])
    # ツイート
    client.create_tweet(text="Lambdaからテストツイート")

設定情報は外部ファイルから読み込むようにしている。
先程のTwitter APIダッシュボードからキーを生成し、config.jsonに設定する。
image.png

config.json
{
  "twitter": {
    "consumerKey": "上記で生成したConsumerKey",
    "consumerSecret": "上記で生成したConsumerSecret",
    "bearerToken": "上記で生成したBearerToken",
    "accessToken": "上記で生成したAccessToken",
    "accessTokenSecret": "上記で生成したAccessTokenSecret"
  }
}

Lambdaデプロイ

Lambdaへのデプロイは、ソースコード&ライブラリをまとめてzipファイルにし、それを作成したLambda関数へアップロードする。

関数作成

まずLambdaで関数を作成する。
関数名とランタイムのみ設定し、他はデフォルトのまま。
image.png

アップロード

lambda_function.py,config.json,tweepyライブライディレクトリが含まれたフォルダをzipファイルにする。

zip -r (Lambda関数名).zip (ディレクトリパス)

関数メニュー→コードタブ→アップロード元→.zipファイルを選択。
image.png
ここで先程作成したzipファイルを選択し、保存する。
image.png

実行

テストタブから実行していきます!
image.png
成功!
image.png
Twitterの方でもツイートが確認できました。
image.png

終わりに

ほんとツイートできるまでが長かったです^^;
今日のお天気をツイートするところまで引き続き頑張ります!
→ ※追記 今日のお天気ツイート完成

参考

https://torutsume.net/openweathermap/
https://qiita.com/penguinprogrammer/items/b220be0c203eaaad015a
https://blog.denet.co.jp/lambda-python-zip/
https://www.delftstack.com/ja/howto/python/python-install-pip3-mac/
https://research-labo.com/howto-twitterapi-getkeys/#toc5

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