ヤマムギ

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入門ガイド」という本を書きました。

 - AWS , , ,

ad

ad

  関連記事

「re:CAP ~サーバーワークス re:Invent 2018 報告会~」でre:Invent2018について思われたことを聞かせていただいた

サーバーワークスさんのre:Invent re:CAPにおじゃましました。 re …

AWS CDK とにかくサンプルでやってみる

Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …

CUSTOMINEを使ってkintoneからAWS Lambdaを実行する(Cognito認証付き)

先日の記事「kintoneのカスタマイズ開発を超速にするCUSTOMINE」で書 …

AWS Step Functions まずはパラレルでLambdaを並列実行してみました

複数のlambdaの実行制御をLambdaでやってましたが、その部分をStep …

AWS Cloud9でJavaサンプルを実行する

リモートで共有開発ができるCloud9便利ですね。 Cloud9でJavaのサン …

特定AWSアカウント特定リージョンのCloud9環境を削除するLambda(Python)

やりたいこと 特定アカウント内特定リージョン内のCloud9環境を全部削除したい …

AWSアカウント内特定リージョン内のDynamoDBテーブルを全削除するLambda(Python)

やりたいこと タイトル通りですが、特定アカウントの特定リージョン内のDynamo …

EC2 Amazon LinuxのNginx+RDS MySQLにレンタルWebサーバーからWordPressを移設する(手順整理版)

ブログサイト(WordPress)をレンタルWebサーバーからAWSに移設する事 …

WordPressをAmazon CloudFrontで配信してついでにACM(AWS Certificate Manager)を使って常時SSL化する

当サイトの500と502の発生状況がドイヒーであるとの苦情をいただきまして、Am …

AWSアカウント ルートユーザーのMFAが使えなくなったので復旧

AWSのルートユーザーどころか、MFAが使えるログインすべてが使えなくなって焦り …