LoginSignup
6
5

More than 5 years have passed since last update.

AWS CLIでアカウントIDを取得する

Posted at

シェルスクリプトで何かしたいとき、アカウントIDがさくっととれると助かる場合がありますよね :relaxed:
以下で取得可能です。

$ ACCOUNT_ID=`aws sts get-caller-identity --query 'Account' --output text`;
$ echo $ACCOUNT_ID;
123456789012

補足

aws sts get-caller-identity は、APIの呼び出しを行った IAM Identity の情報を返却します。
これを使うことで、どのアカウントで呼び出しがされたものかがわかるので、複数アカウントを使い分けているようなプロジェクトでも認証情報を別に管理する必要がなくなります。

IAM User

<GetCallerIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
  <GetCallerIdentityResult>
    <Arn>arn:aws:iam::123456789012:user/Alice</Arn>
    <UserId>AKIAI44QH8DHBEXAMPLE</UserId>
    <Account>123456789012</Account>
  </GetCallerIdentityResult>
  <ResponseMetadata>
    <RequestId>01234567-89ab-cdef-0123-456789abcdef</RequestId>
  </ResponseMetadata>
</GetCallerIdentityResponse>

AssumeRoleで取得したセッション場合

別のアカウントからAssumeRoleした場合は、Roleを引き受けた先のアカウントとなります。また、ARNではロール名、セッション名が含まれます。

<GetCallerIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
  <GetCallerIdentityResult>
     <Arn>arn:aws:sts::123456789012:assumed-role/my-role-name/my-role-session-name</Arn>
    <UserId>AKIAI44QH8DHBEXAMPLE:my-role-session-name</UserId>
    <Account>123456789012</Account>
  </GetCallerIdentityResult>
  <ResponseMetadata>
    <RequestId>01234567-89ab-cdef-0123-456789abcdef</RequestId>
  </ResponseMetadata>
</GetCallerIdentityResponse>

GetFederationTokenで取得したセッションの場合

<GetCallerIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
  <GetCallerIdentityResult>
    <Arn>arn:aws:sts::123456789012:federated-user/my-federated-user-name</Arn>
    <UserId>123456789012:my-federated-user-name</UserId>
    <Account>123456789012</Account>
  </GetCallerIdentityResult>
  <ResponseMetadata>
    <RequestId>01234567-89ab-cdef-0123-456789abcdef</RequestId>
  </ResponseMetadata>
</GetCallerIdentityResponse>

Ref

6
5
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
6
5