Claude CodeでAWSのアプリログを調べる流れと、MFAの入力を減らした改善

こんにちは!アントロンのNaokoです。
Claude CodeにAWSのログを調べてもらうたびに、MFAコードを入力していませんか?
私は、アプリの不具合を調べるときに、Claude CodeにAWSのアプリログの調査を頼んでいます。この記事では、Claude Codeが実際にどう調べていたか(改善前)と、Codexに出してもらった改善案のうち取り入れたもの(改善後)を書きます。
AWSにつなぐのは端末BのClaude Codeです。改善案は、別の端末(端末A)のCodexに出してもらいました。端末Bの設定を私が確かめて、端末Aに伝えています。
改善前:Claude Codeがシェルを作って調べていた
前提として、ローカル環境にはAWS CLIが入り、接続元の認証情報も設定済みです。Claude CodeがAWSへ直接つながるのではなく、手元のAWS CLIを操作して調べます。
流れは次のとおりです。
1. 接続元と調査先でロールが違うため、Claude CodeがGit Bash用のシェルを作る
2. 私がClaude Codeの対話画面で6桁のMFAコードを伝えると、シェルが aws sts assume-role を実行する(AWS STS公式)
3. 返ってきた一時認証情報3つを、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN としてBashのプロセス内に設定する
4. 同じシェルから aws logs filter-log-events(AWS CLI公式)やCloudWatch Logs Insightsを実行し、結果をlogsフォルダへ保存する
5. Claude Codeが保存したファイルを読み、ロググループ・時間帯・検索条件を変えて追加で調べる
PowerShellでは文字化けのおそれがあったため、ログの取得はGit Bashに寄せていました。
特別な連携機能ではなく、MFA付きのロールの切り替えとAWS CLIの操作を、Claude Codeがシェルにまとめて実行していた形です。手間だったのは、調べるたびに6桁のMFAコードを伝え、シェルも作り直していたことです。

AWSのMFAコードは、スマートフォンの認証アプリに6桁で表示されます(アカウント名とコードは塗りつぶしています)。
Codexに出してもらった改善案3つ
端末AのCodexに「楽になる方法3つ提案して」と頼みました。

1つ目は、AWSプロファイルでロールを切り替える方法です。~/.aws/config に、接続先のロールを名前付きプロファイルとして登録します。
[profile app-logs]
role_arn = 接続先ロール
source_profile = 接続元プロファイル
mfa_serial = MFAデバイスこのプロファイルを指定してAWS CLIを実行すると、AWS CLIがMFAコードの入力を求め、ロールの切り替えと一時認証情報の保存を行います。Claude Codeが環境変数3つを毎回設定する必要がなくなります(AWS CLIでIAMロールを使う)。
2つ目は、ログ調査をClaude Codeのスキルにする方法です。確認済みのシェルと調査手順を .claude/skills/ に登録し、次のことを決めておきます。
- 使うAWSプロファイル
- 実行してよいログ取得コマンド
- 時間帯と検索条件の指定方法
- logsへの保存方法
- 認証情報を保存しないルール
スキルにすると、次からは「/スキル名」で呼び出せます(Claude Code公式)。
3つ目は、IAM Identity Centerへ移行し、aws sso login を使う方法です。一度認証すると、AWS CLIが一時認証情報の取得と更新を管理します(AWS公式)。ただし、AWSの管理者の対応が必要です。
取り入れたのは1つ目と2つ目
1つ目と2つ目を取り入れました。3つ目は私に権限が無いため、試していません。
あわせて、MFA認証のあとに受け取る一時認証情報を、36時間使える構成に変えました。その間は、ログを調べるたびにMFAコードを入力しなくても、ロールを切り替えられます。これは上のプロファイル登録とは別の設定で、上の設定例だけでは36時間にはなりません。
AWSの公式ドキュメントでは、MFA認証に使う GetSessionToken の一時認証情報は、IAMユーザーなら最長129,600秒(36時間)です(GetSessionToken)。一方、切り替え先のロールのセッションは別の設定で、既定は1時間、最長はロールの設定で1〜12時間です(AssumeRole)。36時間使えるのは入口の認証情報で、ロールのセッションが36時間続くわけではありません。
料金について
CloudWatch Logsは、ログの取り込み・保存・Logs Insightsで調べたデータ量に応じて料金がかかります。無料利用枠は、ログのデータで月5GBです(CloudWatch の料金)。
同じ手順を毎回頼んでいるなら
Claude Codeに同じ手順を何度も頼んでいるなら、確認済みの手順を1つ、スキルにしてみてください。
最後まで読んでくださりありがとうございました!




コメント