

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon Resource Name (ARNs識別 AWS 資源
<a name="reference-arns"></a>

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

## ARN 格式
<a name="arns-syntax"></a>

以下是 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 一般參考* 中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)。

*account-id*  
擁有資源 AWS 的帳戶 ID，不含連字號。例如 `123456789012`。

*resource-type*  
資源類型。例如，虛擬私有雲端 (VPC) 的 `vpc`。

*resource-id*  
資源識別碼。這是資源名稱、資源 ID 或[資源路徑](#arns-paths)。有些資源識別符包含父資源(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 格式
<a name="supported-arns"></a>

ARN 的確切格式取決於服務和資源類型。有些資源 ARN 可能包含路徑、變數或萬用字元。若要查詢特定 AWS 資源的 ARN 格式，請開啟[服務授權參考](https://docs.aws.amazon.com/service-authorization/latest/reference/)、開啟服務的頁面，然後導覽至資源類型資料表。

## ARN 中的路徑
<a name="arns-paths"></a>

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

### 在路徑中使用萬用字元
<a name="arns-paths-wildcards"></a>

路徑可以包含萬用字元，也就是星號 (`*`)。有些政策元素允許使用萬用字元，有些則不允許。萬用字元可以用於 [Resource](reference_policies_elements_resource.md) 或 [NotResource](reference_policies_elements_notresource.md) 元素，但不能用於 [Principal](reference_policies_elements_principal.md) 或 [NotPrincipal](reference_policies_elements_notprincipal.md) 元素。如需詳細資訊，請參閱[IAM JSON 政策參考](reference_policies.md)。

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

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

也可以將資源名稱以萬用字元結尾。例如，可以指定 **service-\$1** 來表示所有以 `service` 開頭並以 `service-role1` 或 `service-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-test`、`2024-test` 或 `a100-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 會自動將萬用字元 (\$1) 新增至所有缺少的欄位，以完成 ARN。例如，指定 `arn:aws:sqs` 等同於 `arn:aws:sqs:*:*:*`，這會授予所有區域和帳戶所有 Amazon SQS 資源的存取權。不過，傳遞至 AWS STS AssumeRole、AssumeRoleWithWebIdentity 和 AssumeRoleWithSAML 請求的工作階段政策不支援不完整ARNs。在工作階段政策中使用不完整的 ARN 將導致`MalformedPolicyDocumentException`錯誤。

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

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