はじめに
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 は region
も account-id
も空欄であり、アカウントに紐づかずグローバルに管理されるということがわかります。(バケット名がグローバルにユニークでなければならないのはこのため。)
arn:aws:s3:::my_corporate_bucket/*
以上