今日やったこと

  • AWS CLI で現在使用している認証情報を確認する方法を整理した
  • aws sts get-caller-identity を使うと、現在どのAWSアカウント・IAMユーザー・IAMロールとして操作しているのか確認できることを知った
  • --profile を指定して、特定のプロファイルで認証情報を確認する方法を確認した
  • AWS CLI で作業する前に、自分がどの認証情報を使っているのか確認することが大事だと分かった
aws sts get-caller-identity \
  --profile reotech-dev

実行すると、以下のような情報が表示される。

{
  "UserId": "AIDAXXXXXXXXXXXXXXXXX",
  "Account": "123456789012",
  "Arn": "arn:aws:iam::123456789012:user/example-user"
}

学んだこと

aws sts get-caller-identity とは

aws sts get-caller-identity は、現在のAWS CLIがどの認証情報を使ってAWS APIを呼び出しているのか確認するためのコマンド。

AWS CLIで作業するときに、

  • どのAWSアカウントを操作しているのか
  • どのIAMユーザーとして操作しているのか
  • どのIAMロールとして操作しているのか
  • 想定したprofileが使われているのか

を確認できる。

特に複数のAWSアカウントやprofileを使い分けている場合は、作業前に確認しておくと事故を防ぎやすい。

基本コマンド

default profile の認証情報を確認する場合は、以下のように実行する。

aws sts get-caller-identity

特定のprofileを指定する場合は、--profile を付ける。

aws sts get-caller-identity \
  --profile reotech-dev

AWS CLIでは、--profile を指定することで、default とは別の認証情報や設定を使ってコマンドを実行できる。

出力される項目

aws sts get-caller-identity の出力には、主に以下の3つが含まれる。

{
  "UserId": "AIDAXXXXXXXXXXXXXXXXX",
  "Account": "123456789012",
  "Arn": "arn:aws:iam::123456789012:user/example-user"
}

UserId

AWS内部で使われる識別子。

IAMユーザーやIAMロールなど、現在の認証主体を識別するためのID。

普段の作業では、UserId よりも AccountArn を見ることの方が多そう。

Account

現在操作しているAWSアカウントのID。

"Account": "123456789012"

複数のAWSアカウントを扱っている場合、この値を見れば、今どのAWSアカウントに対して操作しているのか確認できる。

CloudFormation や S3 などを操作する前に、意図したAWSアカウントになっているか確認しておくと安心。

Arn

現在の認証主体を表すARN。

"Arn": "arn:aws:iam::123456789012:user/example-user"

IAMユーザーで操作している場合は、以下のような形式になる。

arn:aws:iam::123456789012:user/example-user

IAMロールで操作している場合は、以下のような形式になる。

arn:aws:sts::123456789012:assumed-role/example-role/example-session

Arn を見ることで、IAMユーザーとして操作しているのか、IAMロールを引き受けて操作しているのかを確認できる。

aws login 後の確認にも使える

前回、AWS CLI の認証方法として aws login を使う方法を整理した。

aws login \
  --profile reotech-dev \
  --region ap-northeast-1 \
  --remote

ログイン後に、以下のコマンドを実行することで、reotech-dev profile で正しく認証できているか確認できる。

aws sts get-caller-identity \
  --profile reotech-dev

ログインできたかどうかだけでなく、実際にどのAWSアカウント・IAMユーザー・IAMロールとして操作しているのか確認できるのが便利。

作業前に確認するとよさそう

AWS CLIでは、コマンドによっては実際のAWSリソースを作成・変更・削除する。

たとえば、CloudFormation のスタックを操作する場合は、意図しないAWSアカウントやprofileで実行すると危険。

aws cloudformation list-stacks \
  --profile reotech-dev \
  --region ap-northeast-1

このような操作をする前に、まず以下を実行しておくと安全。

aws sts get-caller-identity \
  --profile reotech-dev

AWS CLIで作業するときは、

まず aws sts get-caller-identity で現在の認証情報を確認する

という習慣をつけておくとよさそう。

次にやること

  • AWS CLI の profile / config / credentials の関係を整理する
  • ~/.aws/config~/.aws/credentials の違いを確認する
  • --profile を指定したときに、どの設定ファイルが参照されるのか整理する
  • aws loginaws sso login の違いを整理する