おれさまラボ

実際に手を動かして理解を深めるブログ。

IAM ARN に空白があるのはなぜか

はじめに

IAM の勉強をしているときにふと疑問に思ったことを調べてみました。

疑問点

Amazon リソースネーム (ARN) 形式は、コロン(:)区切りで表記され、AWS が管理するリソースを同定することができます。

たとえば、IAM ポリシーで IAMReadOnlyAccess の ARN は以下のように表されます。

arn:aws:iam::aws:policy/IAMReadOnlyAccess

ここで、コロンが2つ連続している箇所があることに気づきます。いったいこれはどういうことなのでしょうか。

答え

AWS の公式ドキュメントに答えが書かれていました。

IAM および AWS STS ARN は、次の構文を使用して指定できます。IAM リソースはグローバルに識別されるため、ARN のリージョンの割り当ては空白です。

引用:IAM ARN

ARN は以下の構文で表されます。

arn:partition:service:region:account:resource

IAM のようなグローバルサービスは、この region 部分が空欄となるそうです。

補足

ARN を見れば、そのサービスの設計が見えてくるとも言えます。

IAM であれば region が空欄なことで aws パーティション内でグローバルなサービスであると言えますし、以下の例のように S3 は regionaccount-id も空欄であり、アカウントに紐づかずグローバルに管理されるということがわかります。(バケット名がグローバルにユニークでなければならないのはこのため。)

arn:aws:s3:::my_corporate_bucket/*

引用:Amazon リソースネーム (ARN)

以上