ちょっと話題の記事

【小ネタ】AWS CLIでAWS Account IDが取れるようになりました!

2016.04.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

西澤です。みんな大好きAWS CLIで地味に嬉しいアップデートがあったのでご紹介します。

意外に取りづらかった自分のAWS Account ID

これまでAWS Account IDを取得する方法って確立された方法がありませんでした。下記記事のように皆さん工夫していたのが実情かと思います。

意外にわかりづらかった今使用しているプロファイル

特に複数アカウントを切り替えて利用する環境では、今AWS CLIで使っているprofile情報が何なのか非常にわかりづらかったと思います。aws configure listで切り分けをして確認する方法を以前にご紹介しました。

GetCallerIdentityって何だ?

GetCallerIdentityって何だかわからなかったのですが、公式ドキュメントを見てもオプションもほとんど無いようなので、早速バージョンを1.10.18に上げて、コマンドを叩いてみました。

$ aws --version
aws-cli/1.10.18 Python/2.7.10 Darwin/14.5.0 botocore/1.4.9

$ aws sts get-caller-identity
{
    "Account": "123456789012", 
    "UserId": "AIDAXXXXXXXXXXXXXXXXX", 
    "Arn": "arn:aws:iam::123456789012:user/cm-nishizawa.tetsunori"
}

おお!AWS Account IDも利用しているユーザもばっちりわかりますね!

AssumeRoleしている環境ではどうなるでしょうか?

$ aws sts get-caller-identity --profile assumed
{
    "Account": "123456789012", 
    "UserId": "AROAXXXXXXXXXXXXXXXXX:AWS-CLI-session-1459933035", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/cm-nishizawa.tetsunori/AWS-CLI-session-1459933035"
}

こちらも一目了然ですね!これで今作業中のプロファイルが何なのか迷うことも無くなりそうです!

GetCallerIdentityするのに権限は要らないのか?

IAM権限を何も付与していない新規のIAMユーザでも試してみました。

$ export AWS_ACCESS_KEY_ID=AKIAXXXXXXXXXXXXXXXX
$ export AWS_SECRET_ACCESS_KEY=jE3Yxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************XXEQ              env    
secret_key     ****************xpsL              env    
    region                <not set>             None    None
$ ls -ld ~/.aws
ls: /home/ec2-user/.aws にアクセスできません: そのようなファイルやディレクトリはありません

$ aws sts get-caller-identity
{
    "Account": "123456789012",
    "UserId": "AIDAXXXXXXXXXXXXXXXXX",
    "Arn": "arn:aws:iam::123456789012:user/newuser"
}

Region指定すら不要でした。STSはグローバルエンドポイントがあるのでそこを見に行ってくれるみたいです。

AWS Security Token Service のデフォルトエンドポイントは https://sts.amazonaws.com であり、世界中のすべてのリクエストに対応します。 AWS のリージョンとエンドポイント - アマゾン ウェブ サービス

とにかくGetCallerIdentityは追加でIAM権限を付与することなく利用することができました。

まとめ

地味に嬉しいアップデートだと思いましたのでご紹介しました。どこかの誰かのお役に立てば嬉しいです。