AWS - ARN
Is ARN similar to URN?
ARN (Amazon Resource Name) is very much like a URN (Uniform Resource Name). In fact, you can think of an ARN as Amazon's proprietary version of a URN.
An ARN follows a strict, colon-delimited format:
arn:partition:service:region:account-id:resource-type/resource-id
Why does AWS use arn: instead of urn:?
When AWS was building their infrastructure, they had two choices:
- Register a formal URN namespace (like urn:aws:...).
-
Create their own URI scheme (arn:).
They chose the latter. By using
arn:, AWS doesn't have to follow the strict global registration rules of the IETF. It gave them the freedom to define their own syntax (using colons for regions and account IDs) without asking for permission.
The "Double Slash" Difference
Google uses slashes (like principal://) while URNs and ARNs use colons. This is a subtle but massive hint about their "philosophy":
- URNs/ARNs (
urn:,arn:): These are flat names. They don't have an "authority" (a server) that you can go talk to. You just look them up in a database. - URLs/URIs (
https://,principal://): The//indicates an Authority. Inprincipal://iam.googleapis.com/..., the authority is Google’s IAM service.
Google chose the // format because they want their identifiers to look like web addresses that their own APIs can "resolve" or "look up" in real-time.