ヤマムギ

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: ログレベル

できました!


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

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

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

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

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

 - AWS , , ,

ad

ad

  関連記事

API GatewayのアクセスログをCloudWatchに記録する

Amazon API GatewayのアクセスログをCloudWatchに記録で …

AWS Transfer Family S3向けのSFTP対応サーバーをVPCで作成してEIPをアタッチ

EIPの作成 同じリージョンでEIPを作成しておきます。 SFTP対応サーバーの …

ブラウザからJavaScript SDKを使ってAmazon S3 への写真のアップロードチュートリアルをやってみました

ブラウザから Amazon S3 への写真のアップロードをやってみました。 HT …

API Gateway 作成済REST APIの定義をSwaggerの形式でエクスポート

SAMで似たようなAPIを作りたくて、エクスポートしました。 Swaggerは、 …

Organizations対応のAWS CloudTrailのAthenaテーブルでPartition Projectionを使用しました

パーティション向けのAlterテーブルの定期実行が面倒だと思っていたら、Part …

ParquetフォーマットのデータにS3 Select SQLを実行する

RDSスナップショットのS3エクスポート結果確認で出力したデータが、S3にPar …

AWS Application Discovery Serviceのエージェントを実行

本来はオンプレミスのサーバーにエージェントをインストールして、自動でアプリケーシ …

EC2スポットインスタンスの中断通知を受ける

オートスケーリンググループでEC2インスタンスをスポットインスタンスで使用してい …

東京リージョンの1つのAZ(apne1-az2)でt3.nanoスポットインスタンスが拒否されちゃいました

拒否されちゃいました ちょっとした検証をしようとしてて、t3.nanoのスポット …

S3に置いたMP3ファイルをTwilioから電話再生する(AWS Lambda Python)

Google Calendar Twilio ReminderのTwilioを使 …