⁉️

AWSアカウントを指す識別子は5種類あり、外部からAPI呼び出しできないケースがある

2025/02/07に公開

この記事

最近フォロワーから教えてもらったのだが、AWSアカウントのID/Nameを指す概念がどうも5つある。Perplexityに聞いてもどうにも曖昧だし、用語がかみ合わない。可能な限りこの記事にまとめて理解を図る。

ID

AWS Account ID

AWS アカウントを一意に識別する 12 桁の番号を指す。ARNにも記載されており、AWS利用者のほとんどは知っているだろう。

https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html

APIでの取得

STS APIで取得できる。

$ aws sts get-caller-identity \
    --query Account \
    --output text
123456789012

Canonical user ID

AWS アカウント ID の難読化された形式の識別子。S3バケットのクロスアカウント時に使う識別子。

https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html

APIでの取得

S3 APIからOwner.IDとして取得できる。

aws s3api list-buckets \
    --max-items 10 \
    --page-size 10 \
    --query Owner.ID \
    --output text
249fa2f1dc32c330EXAMPLE91b2778fcc65f980f9172f9cb9a5f50ccbEXAMPLE

Name

Account Alias

これをAWSアカウントの名前と呼ぶ人がいる。
AWS Account IDと1:1対応する文字列をエイリアスとして設定できる。

APIでの取得

IAM APIで取得できる。

aws iam list-account-aliases \
    --query AccountAliases \
    --output text
examplecorp

AWS Account Name(Organizations)

こちらは、AWS Organizationsに属するアカウントとしての名前を指す。

APIでの取得

Organizations APIで取得できる。

aws organizations describe-account \
    --account-id 123456789012 \
    --query Account.Name
hogehoge

AWS Account Name(Billing and Cost Management)

こちらは、AWSアカウントの請求情報上の名前を指す。具体的にはAccountMetaDataのAccountNameを指す。

https://docs.aws.amazon.com/ja_jp/aws-cost-management/latest/APIReference/API_taxSettings_AccountMetaData.html

APIでの取得

名前を取得する操作はIAMのActionのaccount:GetAccountInformationに相当する。この操作はコンソールからのみ実行でき、AWS CLIやAWS SDKからは取得できない。

ちなみにこの名前を変更する操作はiam:UpdateAccountName権限が該当する。

こちらもコンソールからのみ実行でき、APIからのアクセスはできないと公式ドキュメントに書かれている。
https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-root-user.html

本操作に関しては該当アカウントのルートユーザのみが実行できる。AWS管理アカウント不可)
https://repost.aws/knowledge-center/change-organizations-name

なにそれ

変なことを書いているが、そうとしか言えない、らしい。

Organizations上で名前をつける機能はあるし、請求情報の名前をルートユーザ、契約者以外が変更できる必要はなく、今回挙げた識別子のいずれかで代替すれば良い。という判断になっていると想像できる。

Discussion