un tronc
Claude Code

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コード

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つ、スキルにしてみてください。

最後まで読んでくださりありがとうございました!

コメント