0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AI × AWS】aws login 超入門 ─ AIにAWSを任せる前に知っておきたい認証の話

0
Posted at

🤖 【AI × AWS】aws login 超入門 ─ AIにAWSを任せる前に知っておきたい認証の話

最近では、Claude Code をはじめとしたAIエージェントにCLI操作を任せる場面が増えてきました。
便利な一方で、AWSのような「実行=即お金や本番環境に直結」する世界では、認証情報(クレデンシャル)の整理が甘いと、AIが意図しない環境を勝手に操作してしまうリスクがあります。

この記事では、AWS CLI v2.32.0 から導入された aws login コマンドの基本と、AIに作業を任せる前にハマりやすいポイントを、AWS CLI初心者向けにまとめます。

なお、本記事を読み進める前に、default プロファイルが整理されていない方は、まず以下の関連記事をご覧いただくことをおすすめします。

🔗 関連記事:【AWS CLI】意図せず設定したdefaultプロファイルを削除・リセットする手順


🔰 前提:AWS CLIのプロファイルとは

AWS CLIは、認証情報や接続先リージョンを プロファイル(設定の塊)として保持します。プロファイルは2つのファイルに分かれて保存されます。

ファイル 役割
~/.aws/credentials アクセスキーなど 認証情報
~/.aws/config リージョンや出力形式など 設定情報

それぞれのファイル内に [プロファイル名] 単位でブロックが並びます。

# ~/.aws/credentials の例
[default]
aws_access_key_id = ...
aws_secret_access_key = ...

[my-dev-profile]
aws_access_key_id = ...
aws_secret_access_key = ...

aws s3 ls のように プロファイル指定なし でコマンドを実行すると、default が暗黙的に使われます。
つまり、default の中身がそのまま「自分の操作対象のAWS環境」になります。ここが今回の話の出発点です。


🆕 aws login とは

aws login は、AWS CLI v2.32.0 以降で利用できる、ブラウザベースの認証コマンドです。
IAMユーザー、ルートユーザー、IAMフェデレーションIDのコンソール認証情報を使って、CLI用の一時認証情報をローカルに取得します。

主な特徴

  • 実行するとブラウザが立ち上がり、AWSマネジメントコンソール経由でサインインする
  • 認証成功後、最大12時間有効な一時認証情報が取得される
  • 認証情報はローカルにキャッシュされる
    • Windows: %USERPROFILE%\.aws\login\cache
    • Linux/macOS: ~/.aws/login/cache

実行例

# default プロファイルとしてログイン
aws login

# プロファイル指定でログイン
aws login --profile my-dev-profile

ブラウザで認証が完了すると、ターミナルに次のようなメッセージが表示されます。

Logged in with role `arn:aws:sts::012345678910:user/iam-user`,
and configured profile `default` to use `us-east-1`.
This session will expire on October 14, 2025 at 2:04 PST.
After this time, you can renew your session with `aws login`.

従来の認証コマンドとの違い

aws で始まるサインイン系コマンドはいくつかあり、用途が混ざりやすいので整理します。

コマンド 用途 主な対象
aws configure 静的なアクセスキーを保存する IAMユーザーの長期キー(最近は非推奨傾向)
aws sso login IAM Identity Center でサインインする 組織でSSOを使っている環境
aws login コンソール認証情報でブラウザ経由サインインする ローカル開発の手軽な選択肢(v2.32.0以降)

📝 Memo: aws sso login との混同に注意

IAM Identity Center(旧 AWS SSO)を使っている環境では、引き続き aws sso login を使います。
aws login とは別物なので、組織の運用ルールに合わせて使い分けてください。


⚠️ aws logindefault プロファイルの関係

ここからが、AIに作業を任せるときに最も気をつけたいポイントです。
aws loginプロファイル指定なし で実行すると、default プロファイルにログインセッション情報が書き込まれます。

1. 既存セッションがある場合は上書き確認プロンプトが出る

default別のログインセッション が設定済みの状態で aws login を実行すると、以下のような上書き確認プロンプトが表示されます。

Profile signin is already configured to use session arn:aws:iam::0123456789012:user/ReadOnly.
Do you want to overwrite it to use arn:aws:iam::0123456789012:user/Admin instead? (y/n):

別ID/別ロールで default を上書きしてしまわないためのストッパーです。
ただし、default がまったくの未設定や、後述するように静的キーのみが設定されている状態では、このプロンプトは出ずに default が作成・更新されます。

2. 落とし穴:静的キーが残っていると aws login が黙って無視される

ここが本記事のいちばん大事な部分です。

~/.aws/credentials[default]静的アクセスキーaws_access_key_id 等)が残ったまま aws login を実行すると、ターミナル上は次のような 成功メッセージ が表示されます。

Updated profile default to use arn:aws:sts::xxxxxxxxxxxx:assumed-role/RoleName/username credentials.

しかし、AWS CLIの認証情報の優先順位ルールにより、静的キーが優先されて使われ続けます。
つまり、見た目上は新しいIDでログインしたつもりが、実際の操作は古い静的キーで実行される、という危険な状態になります。

確認方法は aws configure listTYPE 列です。

❌ 静的キーが優先されている状態(aws login が効いていない)

> aws configure list
      NAME           : VALUE                : TYPE                    : LOCATION
   profile           : <not set>            : None                    : None
access_key           : ****************LIHG : shared-credentials-file : ...
secret_key           : ****************d6gd : shared-credentials-file : ...
    region           : ap-northeast-1       : config-file             : ~/.aws/config

✅ aws login の認証情報が正しく使われている状態

> aws configure list
      NAME           : VALUE                : TYPE        : LOCATION
   profile           : <not set>            : None        : None
access_key           : ****************XXXX : login       : ...
secret_key           : ****************YYYY : login       : ...
    region           : ap-northeast-1       : config-file : ~/.aws/config

TYPE 列が login になっていれば正しく aws login の認証情報が使われています。
shared-credentials-file のままだった場合は、関連記事の手順で default の静的キーを削除してください。

🔗 関連記事:【AWS CLI】意図せず設定したdefaultプロファイルを削除・リセットする手順

⚠️注意:成功メッセージは「実際に使われている」ことを保証しない

aws login の成功メッセージは、あくまで「設定ファイルへの書き込みが成功した」というだけで、その認証情報が実際に使われていることまでは保証しません。
aws login 後は 必ず aws configure listTYPE 列を確認する 習慣をおすすめします。


🤖 AIエージェントにAWSを任せるときの注意点

ここまでの話を踏まえて、AI(Claude Codeなど)にAWS関連コマンドを任せる際の実践的なコツをまとめます。

コツ1. プロンプトで --profile の明示を強制する

AIは省略可能なオプションを省きがちです。指示する側で明示しましょう。

これ以降のAWS CLIコマンドは、必ず --profile dev-sandbox を付けて実行してください。
プロファイル指定を省略しないでください。

コツ2. 作業前に aws configure list を実行させる

実行直前に状況を確認させることで、想定外のプロファイルで動き出す事故を防げます。

コマンドを実行する前に、毎回 aws configure list --profile dev-sandbox を実行してください。
TYPE 列が login になっていることを確認してから次に進んでください。

コツ3. 強い権限のキーを default に置かない

default には極力、何も設定しないか、参照系の限定権限のみに留めるのが安全です。
本番環境への接続情報は、必ず名前付きプロファイル(例: honban-prd)に分離します。

これは、AIが --profile を省略してしまった場合の 被害最小化策 にもなります。

コツ4. 破壊的な操作の前に必ず確認ステップを挟ませる

delete / terminate / put / update 系のコマンドは、AIに勝手に実行させないようにします。

削除や変更を伴うコマンドを実行する前に、必ず実行予定の完全なコマンドを提示し、
私からの「OK」を受け取ってから実行してください。dry-run オプションが利用できる場合は先に dry-run で実行してください。

⚠️注意:default が汚れたままAIにAWSを任せるのは危険

default に強い権限のキーが残った状態でAIに --profile 省略の余地を与えると、本番環境に対して破壊的な操作が走るリスクがあります。
AIに任せる前に、まず default のクリーンアップから始めることを強く推奨します。


✅ まとめ

  • aws login は、AWS CLI v2.32.0以降で使える ブラウザベースの認証コマンド
  • プロファイル指定なしで実行すると default に書き込まれる
  • default に静的キーが残っていると、aws login の認証情報は 黙って無視 される
  • 設定後は 必ず aws configure listTYPE 列を確認 する
  • AIにAWSを任せるときは、--profile 明示・事前確認・default分離・破壊操作の確認、をプロンプトに盛り込む

aws login を活かすには、まず default プロファイルをきれいにしておくことが第一歩です。
未整理の方は、関連記事をあわせてご覧ください。

🔗 関連記事:【AWS CLI】意図せず設定したdefaultプロファイルを削除・リセットする手順


最後に、GMOコネクトでは研究開発や国際標準化に関する支援や技術検証をはじめ、幅広い支援を行っておりますので、何かありましたらお気軽にお問合せください。

お問合せ: https://gmo-connect.jp/contactus/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?