SSO環境でもaws loginが便利

開発技術部の柴田です。

皆さんはAWSへのログインにシングルサインオン(SSO)を利用していますか? AWS IAM Identity Center経由でアクセスを一元化すると、一時的なクレデンシャルでAWSを利用できるようになり、セキュリティも高まるので、利用している方も増えてるのではないでしょうか。

「ちょっとだけCLI使いたい」問題

ところでAWSを使っていると、こんな場面がありませんか?

  • S3バケットから大量のログファイルをまとめてダウンロードしたい
  • リソースの一覧を用意したい

普段はマネジメントコンソールで十分なのに、こういうときだけCLIが必要になりCLIを使おうとすると、エラーがでる。

# 2025-04-01がパスに含まれているログだけをカレントディレクトリに同期しようとした例
$ aws s3 cp s3://amzn-s3-demo-bucket/logs/ . --recursive --exclude "*" --include "*2025-04-01*"

Unable to locate credentials. You can configure credentials by running "aws configure".

SSOはセットアップ済みなのでCLIを設定すればよいのですが、これが意外と手間です。 SSOをしているのでaws configure ssoを使わないといけないですし、慣れていないと、SSO Start URLなんだっけ?SSO Regionは?と最初の時点で躓きます。

aws login なら今のコンソールセッションをそのまま使える

AWS CLI v2.32.0以降で使える aws login コマンドは、ブラウザでのマネジメントコンソールへのサインインセッションを利用して、STSから一時クレデンシャルを取得する仕組みです。 つまり、SSOでマネジメントコンソールにログイン済みなら、そのセッションをそのままCLIに持ってこられます。

前提条件

  • AWS CLI v2.32.0以降
aws --version
# aws-cli/2.32.0 以降であればOK

実行手順

aws login

これだけで、ブラウザが自動で開きます。 リージョンが未設定の場合はリージョンの入力を求められますので、CLIを使いたいリージョンを入力しましょう。

AWS Region [us-east-1]: ap-northeast-1

既にマネジメントコンソールにSSOでサインイン済みであれば、アクティブなセッションの一覧が表示されます。 使いたいセッションを選択するだけで、CLIに一時クレデンシャルが設定されます。

動作確認

aws sts get-caller-identity
{
    "UserId": "AROAXXXXXXXXXXXXXXXXX:your-username",
    "Account": "xxxxxxxxxxxx",
    "Arn": "arn:aws:sts::xxxxxxxxxxxx:assumed-role/AWSReservedSSO_xxxxxxxx_xxxxxxxx/your-username"
}

あとは普通にCLIを使うだけです。

aws s3 cp s3://amzn-s3-demo-bucket/logs/ . --recursive --exclude "*" --include "*2025-04-01*".

aws login --profile でプロファイル指定もできる

aws loginはプロファイルを指定できます。

aws login --profile sandbox

これにより、~/.aws/config に最低限の設定を残しておきつつ、認証は aws login で行うという使い方ができます。aws configure sso のような対話的な初期セットアップは不要です。

複数アカウントを使い分ける場合にも、プロファイルごとに aws login できるので便利です。

# 開発環境
aws login --profile dev

# 本番環境(別のSSOセッションで)
aws login --profile prod

SwitchRole環境ではどうする?

企業のマルチアカウント構成では、踏み台アカウントにログインしてから、各環境アカウントにSwitchRoleするパターンもあると思います。 実は、マネジメントコンソール上でSwitchRoleした状態で aws login を実行した場合は、SwitchRole先のセッションでクレデンシャルが取得できます。

SwitchRoleした後のセッションも選択できます

この図では同じAWSアカウント上で、SSOした後にDeveloperというRoleに変更した状態で、aws loginを実行したときのセッション選択画面です。

aws configure ssoaws login の使い分け

観点 aws configure sso aws login
初期セットアップ 対話形式で設定が必要 不要(ブラウザでログインするだけ)
認証の流れ aws sso login → トークンキャッシュ aws login → コンソールセッション利用
向いている人 頻繁にCLIを使う人 たまにCLIを使う人
プロファイル管理 設定ファイルで一元管理 必要に応じて --profile で指定

CLIの利用頻度に応じて使い分ければ良いと思います。

まとめ

aws loginでは、現在ログインしているセッションを利用して一時的なクレデンシャルを払い出すので、 SSO導入済みの企業環境でも、普段はマネジメントコンソール、たまにCLIという使い方なら aws login で十分だと思います。

CLIのセットアップが面倒で、結局マネジメントコンソールでポチポチやってしまうという人は、ぜひ aws login を試してみてください。