ヤマムギ

growing hard days.

*

AWS Lambda(Python)からTwitterに投稿する

   

GoogleフォームからAPI Gatewayで作成したREST APIにPOSTリクエストする」の続きです。

この部分を作ります。

PythonでTwitter API を利用していろいろ遊んでみる」を参考にさせていただきました。

Twitterアプリケーション(認証情報)の取得

対象アカウントでTwitterにログインして、こちらhttps://developer.twitter.com/en/appsにアクセスしました。

[Create an app]を押下しました。

なんで使うんだ?と聞かれたようなので、「趣味でボット作成」としました。

電話番号の紐付けが必要なようですので、紐付けして画面更新して、下の方で国を選択して、[Next]ボタンを押下しました。

Twitter APIを使う理由を200文字以上で英語で書いて、とありましたので、Google翻訳に頼って書きました。

The specifics(詳細)セクションは1つだけYesでした。
「ツイート機能を使いますか?使うならどう使いますか?」と来たので、上記と同じことを書きました。

申請が終わったようです。
メールが届いて、[Confirm]しました。

もう一度、https://developer.twitter.com/en/appsにアクセスして、[Create an app]ボタンを押下しました。

アプリ名、内容、URLが必須でした。

あと、使い方も必須でした。

[Keys and tokens]タブに、API keyとAPI secret keyがありました。
[Generate]ボタンで、Access token とAccess token secretも発行しました。

AWS Secrets Mangerの準備

Twitter APIの4つの認証情報は、AWS Secrets Managerで管理することにしました。

[新しいシークレットを保存する]ボタンを押下しました。

シークレットの種類は、「その他のシークレット(APIキーなど)」を選択しました。

Twitter API の4つのキーをキーバリューで入力します。
暗号化キーはデフォルトのままにしておきました。

名前とタグを設定しました。

ローテーションは無効にしました。
そのうち、トークンの再発行をするLambdaとかを動かすかもですが。

できました。
サンプルコード付きです。
親切です。

AWS Lambda Layersの準備

requests とrequests-oauthlib のLayersがあると便利そうなので、まとめて作りました。

開発環境のmacで作業しました。

pythonディレクトリごと、zipにして、Layersにアップロードしました。

IAMロール

Lambda用のIAMロールとして、AWSLambdaBasicExecutionRoleと、以下のインラインポリシーを設定しました。

SecretsManagerから認証情報を取得するためのポリシー

SQSキューをトリガーとして設定するためのポリシー

Amazon SNS

SNSのサブスクリプションのSQSは、raw メッセージ配信を有効にしました。

AWS Lambda

事前に準備した、Layers、 IAMロールを設定して、トリガーはSQSにしました。

環境変数は2つ作成しました。
* SECRET_NAME: Secrets Mangerのシークレット名
* LOG_LEVEL: ログレベル

できました!


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , , ,

ad

ad

  関連記事

AWS Secrets Manager交代ユーザーローテーション

AWS Secrets Managerの交代ユーザーローテーションを確認してみま …

Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証

Quantum Ledger Database(QLDB)を触ったことなかったの …

AWS License ManagerでAMIからインスタンスの起動を制御

EC2 Image BuilderでRocket.ChatのAMIを作って起動テ …

Amazon Linux にnodejsとmongoDBをインストールする

EPEL リポジトリを利用してnodejsとnpmをインストールする [bash …

EC2 VyOSで/etc/resolv.confを設定しました

EC2でVyOSを起動してSSHで接続して確認していたところ、どうもVyOSから …

AWS Toolkit for Eclipseをセットアップ(2021年版)

AWS Toolkit for Eclipseをセットアップするで6年前に書いて …

Windows EC2インスタンスでEBSとインスタンスストアを使用する

Amazon EBS基本のデモ(「AWS認定試験テキスト AWS認定 クラウドプ …

CloudFormation StackSetsでOrganizations組織のアカウントに一気にIAMロールを作成した

Organizationsで管理している各アカウントにIAMロールを作成したい場 …

Rocket.ChatからOut Going Webhookを設定してみる

API GatewayとLambda とりあえず、どんなデータが飛んでくるのか見 …

AWS Systems Manager Fleet Manager Windows RDP Connectを試してみました

AWS Systems Manager Fleet Manager Window …