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