使用 Amazon Resource Name (ARN) 識別 AWS 資源 - AWS Identity and Access Management

使用 Amazon Resource Name (ARN) 識別 AWS 資源

Amazon Resource Name (ARN) 唯一識別 AWS 資源。當您需要在所有 AWS 之間明確指定某個資源,例如 IAM 政策、Amazon Relational Database Service (Amazon RDS) 標籤和 API 呼叫,我們會要求 ARN。儘管 ARN 與任何識別資訊一樣,應該謹慎使用和共用,但不應將其視為秘密、敏感或機密資訊。

ARN 格式

以下是 ARN 的一般格式。特定格式視資源而定。若要使用 ARN,請以資源特定資訊取代斜體文字。請注意,有些資源的 ARN 會省略區域、帳戶 ID 或同時省略區域和帳戶 ID。

arn:partition:service:region:account-id:resource-id arn:partition:service:region:account-id:resource-type/resource-id arn:partition:service:region:account-id:resource-type:resource-id
partition

資源所在的分割區。分割區是一組 AWS 區域。每個 AWS 帳戶的範圍都限定在一個分割區。

以下是支援的分割區:

  • aws - AWS 區域

  • aws-cn - 中國區域

  • aws-us-gov - AWS GovCloud (US) 區域

service

識別 AWS 產品的服務命名空間。

region

區域代碼。例如,請為美國東部 (俄亥俄) 指定 us-east-2。如需區域代碼清單,請參閱 AWS 一般參考 中的區域端點

account-id

擁有資源的 AWS 帳戶 ID,不含連字號。例如 123456789012

resource-type

資源類型。例如,虛擬私有雲端 (VPC) 的 vpc

resource-id

資源識別碼。這是資源名稱、資源 ID 或資源路徑。有些資源識別符包含父資源(sub-resource-type/parent-resource/sub-resource) 或限定詞,例如版本 (resource-type:resource-name:qualifier)。

範例
IAM 使用者

arn:aws:iam::123456789012:user/john

SNS 主題

arn:aws:sns:us-east-1:123456789012:example-sns-topic-name

VPC

arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE

查詢資源的 ARN 格式

ARN 的確切格式取決於服務和資源類型。有些資源 ARN 可能包含路徑、變數或萬用字元。若要查詢特定 AWS 資源的 ARN 格式,請開啟服務授權參考,開啟該服務的頁面,並瀏覽至資源類型表格。

ARN 中的路徑

資源 ARN 可以包含路徑。例如,在 Amazon S3 中,資源識別符是物件名稱,其中包含正斜線 (/) 來形成路徑。同樣地,IAM 使用者名稱和群組名稱可以包含路徑。IAM 路徑僅允許包含英數字元和下列字元:正斜線 (/)、加號 (+)、等號 (=)、逗號 (,)、句點 (.)、at 符號 (@)、底線 (_) 和連字號 (-)。

在路徑中使用萬用字元

路徑可以包含萬用字元,也就是星號 (*)。有些政策元素允許使用萬用字元,有些則不允許。萬用字元可以用於 ResourceNotResource 元素,但不能用於 PrincipalNotPrincipal 元素。如需更多詳細資訊,請參閱 IAM JSON 政策參考

您可以指定 role/* 來表示帳戶 123456789012 中的所有角色,如下列範例所示:

arn:aws:iam::123456789012:role/*

也可以將資源名稱以萬用字元結尾。例如,可以指定 service-* 來表示所有以 service 開頭並以 service-role1service-test 等不同字元結尾的角色:

arn:aws:iam::123456789012:role/service-*

下列範例展示了 Amazon S3 儲存貯體中物件的 ARN,其中資源名稱包含路徑。ARN arn:aws:s3:::amzn-s3-demo-bucket/* 適用於該儲存貯體中的所有物件,無論字首為何。ARN arn:aws:s3:::amzn-s3-demo-bucket/Development/* 則適用於在 /Development/ 字首內建立的所有物件。

您也可以使用 ? 萬用字元來指定 ARN 中的一個字元。例如,您可以將下列 ARN 用於名為 amzn-s3-demo-bucket 的 S3 貯體中,所有以四個字元開頭並以 -test 結尾的資料夾。某些資料夾符合此要求,包括 1234-test2024-testa100-test

arn:aws:s3:::amzn-s3-demo-bucket/????-test

您也可以在 ARN 的不同區段中使用萬用字元,各區段以冒號 “:” 分隔。在下列範例中,使用了兩個萬用字元來比對帳戶 123456789012 所有區域中的所有 Amazon Q 應用程式及應用程式內的資源:

arn:aws:qbusiness:*:123456789012:*

同樣地,下列範例比對了帳戶 123456789012 所有區域中的所有 Amazon VPC:

arn:aws:ec2:*:123456789012:vpc/*

下列範例比對了帳戶 123456789012 所有區域中的所有 Amazon EBS 磁碟區:

arn:aws:ec2:*:123456789012:volume/*
ARN 內萬用字元用途限制

您無法使用 ARN 部分中指定資源類型的萬用字元。下列在資源類型內包含萬用字元的範例 ARN 無效:

arn:aws:lambda:us-east-2:123456789012:functi*:my-function <== not allowed 
注意

當您在身分型政策中指定不完整的 ARN (少於標準六個欄位) 時,AWS 會自動將萬用字元 (*) 新增至所有遺失的欄位以完成 ARN。例如,指定 arn:aws:sqs 等同於 arn:aws:sqs:*:*:*,這會授予所有區域和帳戶所有 Amazon SQS 資源的存取權。

您也無法在字首 ARN 中使用萬用字元,或在 ARN 的分區區段中使用萬用字元。

arn:aws:redshift:us-east-1:123456789012:? <== not allowed