
こんにちは、@ketancho です。
3年ほど前に AWS 公式 Web マガジン builders.flash にて、『作りながら学ぶ AWS ドリル』という連載を、1年間やらせていただきました。
このような手を動かしながら学ぶことは個人的にとても好きな学習形式で、楽しく(時には締め切りに涙しながら)連載させていただきました。実は、X(旧 Twitter)の API を利用することがプライベートで稀によくあるので、私自身、今でも頻繁にこの記事を参照しています。
しかしながら、3年も経ってしまうとやはり差分が出てきてしまっており、AWS のマネージメントコンソールもそうですし、Twitter 側の UI にも変更があり、なんなら2023年には Twitter から X にサービス名称も変わってしまいました。そのままご活用いただける部分はあるものの、初見の方だと躓いてしまいそうな画面の差分もそれなりにあり、ちょっとよくないなーと思っていました。
そこで、そのアップデートも含め、2025年最新版 AWS ドリル!と題して、3年ぶりに AWS ドリルシリーズを不定期連載していこうと思います。読者の躓きに繋がる部分への対応だけでなく、当時はなかった(あるいは記事で利用しなかった) AWS サービスを使ったり、新しいアイデアを X Bot に実装したりといったこともしていければと考えています。AWS の勉強や学習の際に役に立つ連載にできればと考えておりますので、ぜひご覧いただければ嬉しいです✨️
▼ この記事の目次
- この記事で行うこと&追加する X Bot の機能
- この記事で利用する AWS サービス
- X アカウントを作成する
- X の API を使う準備をする
- AWS Lambda 関数のひな形を作成する
- X にポストするよう AWS Lambda 関数を実装する
- よくあるエラーの切り分け
- まとめ
この記事で行うこと&追加する X Bot の機能
- X の API を利用するための初期設定を行う
- プログラムから Hello, World する

この記事で利用する AWS サービス
- AWS Lambda
- AWS CloudShell
X アカウントを作成する
既にお持ちのアカウントを使っていただくこともできますが、ここでは新規に X アカウントを作成する方法を記載します。既存のアカウントを使われる場合は、この章はスキップしていただいて OK です。
X の Top ページ にアクセスし、「アカウントを作成」を押してください。

アカウントに関する詳細情報を入力してください。



アイコンを設定される場合はこちらで画像をアップロードしてください。(あとからでも変更可能です。)

ユーザー名を入力してください。こちらは他の方に使われていないユニークなものにする必要があります。

そのあとの入力項目はよしなに設定していただき、アカウントの作成を完了させてください。

X の API を使う準備をする
X Bot にポスト(ツイート)してもらうためには、X の API を使う必要があり、そのセットアップを進めていきましょう。
Developer Platform にアクセスし、Sign Up してください。X は幾つかの API 利用プランを用意しているのですが、この連載では Free プランの範囲の中で実装を進めていきます。


API を利用する理由を記載する箇所があります。私は
I'm developing a useful X Bot that regularly posts my knowledge and tips. I plan to regularly post things like sharing blog information I've written in the past and reminders to establish English vocabulary I've just memorized. To that end, I'd like to use X's API.
と記載し、申請しました。

すると、Developer Portal の Dashboard に遷移するので(遷移しない場合はリンクをクリックしてください)、自動作成されている X App の名前を変更しておきましょう。

続いて、先ほどの X App 画面から "User authentication settings" の横にある Set up をクリックします。

App permissions を Read and write を、Type of App は Web App, ~ を選択してください。

また、Callback URL / Website URL を入力する欄には、適切な URL を入れていただければと思いますが、そのようなものがない場合は、皆さまの X アカウントの URL を入力しておきましょう。(私でいうと "https://x.com/ketancho_bot_25")

その後、Client ID, Client Secret が表示されるのですが、こちらは今回は使用いたしません。(念のため、手元に控えておいてください。)
最後に、プログラムから X API を叩く際に利用する、API Key と Access Token を取得しましょう。下記の4つの情報が必要になりますので、手元のメモに控えておくようにしてください。
- API Key
- API Key Secret
- Access Token
- Access Token Secret
先ほどの X App 画面から Key and tokens をクリックします。

API Key と API Key Secret は、Consumer Keys の "API Key and Secret" から Regenerate をクリック(人によっては Generate かもしれません)し、それぞれの文字列を入手してください。

Access Token と Access Token Secret は、Application Tokens の "Access Token and Secret" から Generate し、それぞれの文字列を入手してください。

以上が X 側の設定となりますので、いよいよ AWS 側の手順に移っていきましょう。
AWS Lambda 関数のひな形を作成する
AWS のマネージメントコンソール画面の上部検索窓に "Lambda" と入力し、AWS Lambda のサービス画面に遷移してください。こちらで「関数の作成」を進めていきます。
関数の「基本的な情報」欄には、
- 関数名 : x-bot-25-hello
- ランタイム : Python 3.13
- アーキテクチャ : x86_64
を設定したのち、右下の "関数の作成" をクリックし、Lambda 関数を作成しましょう。

続いて、今回利用する Python モジュールである、
- requests_oauthlib
- tweepy
をインストールしていきます。
これらのモジュールは、標準の Lambda 関数に含まれていないため、コマンドを利用し .zip にまとめ、Lambda 関数にソースコードとしてアップロードしていきます。
今回この作業を AWS CloudShell というサービスを用いて実行します。AWS CloudShell は、マネジメントコンソール右上のコンソールマークから利用できます。

CloudShell のコンソールが起動しましたら、下記のコマンドを実行してください。(最後のエンターを押し忘れがちなのでお気をつけください。)
mkdir x-bot-25-hello cd x-bot-25-hello/ pip3 install -U pip pip install requests_oauthlib -t ./ pip install tweepy -t ./ touch lambda_function.py zip -r x-bot-25-hello.zip ./ aws lambda update-function-code --function-name x-bot-25-hello --zip-file fileb://x-bot-25-hello.zip
最後までコマンドが流れましたら、下記の画面のようになりますので、左下にカーソルをあわせたうえで、"q" + Enter を押していただくと元のターミナル画面に戻ることができます。
以上で、コマンド操作は完了ですので、右上の x ボタンを押し、AWS Lambda の画面に戻っていただければと思います。

Lambda 関数 x-bot-25-hello の画面に戻りましたら、一度ブラウザをリロードしていただくと、エディタの左側に依存パッケージ群が配置され、一番下には lambda_function.py が表示されているはずです。
以上で Lambda 関数のひな形が完成です。
X にポストするよう AWS Lambda 関数を実装する
Lambda 関数が呼び出されると、lambda_function.py に記載したプログラムが実行されるのですが、現時点でこの Python ファイルは空なので、プログラムからツイートできるよう、Python ファイルを修正していきます。今回は先ほどインストールした Tweepy を利用していきます。
(ちなみに、2022年はこの Tweepy は利用していなかったので、この点が 2025 年版最新記事のひとつのアップデートとなります。)
import json import os import tweepy # API Key, Access Token (本来、ハードコーディングするのは望ましくありません。連載の中で修正していきます。) consumer_key = '*Input Your API Key*' client_secret = '*Input Your API Key Secret*' access_token = '*Input Your Access Token*' access_token_secret = '*Input Your Access Token Secret*' def lambda_handler(event, context): """ Hello World するだけ """ tweet_text='これは Lambda からの自動ツイートテストです。' tweepy_client = tweepy.Client( consumer_key=consumer_key, consumer_secret=client_secret, access_token=access_token, access_token_secret=access_token_secret ) tweepy_client.create_tweet( text=tweet_text )

ソースコードを修正したら、左側にある "Deploy" ボタンを押して、Lambda 関数にソースコードをデプロイ(保存 & 実行可能状態にする)しましょう。
デプロイが終わったら "Test" ボタンをクリックし、Lambda 関数を実行していきます。初回実行時に、Lambda にどのような情報を渡すかを設定する画面がでますが、こちらは "Create new test event" としたのち、Event Name だけ Test と入力し、Save を押しましょう。


再度 "Test" ボタンを押し、Output の部分に
Status: Succeeded
Test Event Name: Test
Response:
null
と表示されれば成功です。
最初に作成した X のアカウントを見ると、このようにプログラムからポストされているはずです!🎉

よくあるエラーの切り分け
もし、Lambda の実行がうまくいかない場合は、エラーログを確認して対応していきましょう。
"errorMessage": "401 Unauthorized\nUnauthorized",
といったエラーが出た場合、先ほど作成した API Key や Access Token の情報が誤っている可能性がありますので、X の Developer Portal からこれらを Regenerate していただき、新しいものをソースコードに貼り付けて再度 Lambda 関数の実行をお試しください。
※ 私も今回実装したときに、最初に作成したキーだとうまくいかず、、ということがありました。再作成したらうまくいきました。
"errorMessage": "403 Forbidden\nYou are not allowed to create a Tweet with duplicate content.",
といったエラーであれば、X の仕様として同じ内容のポストを続けられない、というエラーになります。ソースコードの
tweet_text='これは Lambda からの自動ツイートテストです。'
の文言を変更し、再度実行してみてください。
まとめ
X Bot を作りながら学ぶ AWS ドリル の初回として、
- X API 周りの初期設定
- AWS Lambda で Hello World ポスト
をやってみました。次回はまた別の AWS サービスを使って、X Bot を成長させていこうと思います。
このようなハンズオン形式で、実際に動くものを作りながら AWS を学ぶ記事を、今後も不定期連載していこうと思います。もし気に入っていただけましたら こちらからこのブログの読者 になっていただく and/or 私の X(Twitter) をフォロー していただけたら嬉しいです🙌
それでは!