ヤマムギ

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認定 デベロッパーアソシエイト」という本を書きました。

 - AWS , , ,

ad

ad

  関連記事

Amazon Linux2(EC2)にEC-CUBE 4をインストール

こちらのHOMEお知らせ・コラムAmazon Linux2にEC-CUBE4.0 …

RDS + VPC + Lambda + API Gateway + CloudFront + WAF + ACMでAPIを構築する

RDSのMySQLの情報を与えられたリクエストをキーにしてjsonで返すAPIを …

Amazon CloudWatch Anomaly Detectionをダッシュボードに設定

Amazon CloudWatch クロスリージョンクロスアカウントダッシュボー …

AWS Well-Architected フレームワークによるクラウド ベスト プラクティスのセッションを聞いたので自アカウントの環境を確認してみる

AWS Summit Tokyo 2017で「AWS Well-Architec …

ALBのヘルスチェックでPHPとMySQL接続をチェック

当ブログで504エラーが発生して、オートスケーリングにより自動でインスタンスが置 …

EC2 Global Viewで不要なインスタンスを見つけて4つほど終了しました

EC2 Global Viewという機能がリリースされました。 EC2コンソール …

ヤマムギ vol.10 (AWS)EC2モニタリングハンズオン 手順

このブログは2020/5/6に開催しました、「ヤマムギ vol.10 (AWS) …

Well-Architected Tool レンズヴァージョンアップ

当ブログのWell-Architectedレビューを久しぶりにやろうと思い、We …

iPad ProのWorking CopyでAWS CodeCommitのリポジトリを使う

iPad Proを導入しましたので、原稿執筆や校正でフル活用しようと思いまして。 …

AWSのサービス数を数えてみました(2020/5/23)

何をもってサービスという単位にするかというのはあるかもしれませんが、とりあえず情 …