

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

# IAM JSON 政策元素：Resource
<a name="reference_policies_elements_resource"></a>

IAM 政策陳述式中的 `Resource` 元素可指定套用該陳述式的一個或多個物件。陳述式必須包含 `Resource` 或 `NotResource` 元素。

您可以使用 Amazon Resource Name (ARN) 來指定資源。ARN 的格式取決於您參考的 AWS 服務 和特定資源。雖然 ARN 格式不同，但務必使用 ARN 來識別資源。如需有關 ARN 格式的詳細資訊，請參閱 [IAM ARN](reference_identifiers.md#identifiers-arns)。如需有關如何指定資源的詳細資訊，請參閱您要撰寫陳述式的服務文件。

**注意**  
有些 AWS 服務 不允許您指定個別資源的動作。在這些情況下，您在 `Action` 或 `NotAction` 元素中列出的任何動作都會套用至該服務中的所有資源。在這種情況下，您可以在 `Resource` 元素中使用萬用字元 (`*`)。

以下範例參考特定的 Amazon SQS 佇列。

```
"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"
```

以下範例參考 AWS 帳戶中名為 `Bob` 的 IAM 使用者。

**注意**  
在 `Resource` 元素中，IAM 使用者名稱區分大小寫。

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob"
```

## 在資源 ARN 中使用萬用字元
<a name="reference_policies_elements_resource_wildcards"></a>

可以在 ARN 的個別區段內 (各部分以冒號分隔) 使用萬用字元 (`*` 和 `?`)。
+ 字元的任意組合 (`*`)
+ 任何單一字元 (`?`)

您可以在每個區段中使用多個 `*` 或 `?` 字元。如果萬用字元 `*` 是資源 ARN 區段的最後一個字元，則其可以展開，以符合冒號界限以外的內容。我們建議您在由冒號分隔的 ARN 區段內使用萬用字元 (`*` 和 `?`)。

**注意**  
您無法在識別 AWS 產品的服務區段中使用萬用字元。如需 ARN 客群的詳細資訊，請參閱 [使用 Amazon Resource Name (ARNs識別 AWS 資源](reference-arns.md)。

以下範例參考路徑為 `/accounting` 的所有 IAM 使用者。

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"
```

以下範例參考特定 Amazon S3 儲存貯體中的所有項目。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
```

星號 (`*`) 字元可以展開以取代區段內的所有項目，包括如正斜線 (`/`) 等字元，這些字元可能會顯示為指定服務命名空間內的分隔符號。例如，假設下列 Amazon S3 ARN，因為相同的萬用字元擴充邏輯適用於所有服務。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
```

ARN 中的萬用字元適用於儲存貯體中的所有以下物件，而不僅僅是列出的第一個物件。

```
amzn-s3-demo-bucket/1/test/object.jpg
amzn-s3-demo-bucket/1/2/test/object.jpg
amzn-s3-demo-bucket/1/2/test/3/object.jpg 
amzn-s3-demo-bucket/1/2/3/test/4/object.jpg
amzn-s3-demo-bucket/1///test///object.jpg
amzn-s3-demo-bucket/1/test/.jpg
amzn-s3-demo-bucket//test/object.jpg
amzn-s3-demo-bucket/1/test/
```

考慮上一個清單中的最後兩個物件。Amazon S3 物件名稱可以傳統分隔符號正斜線 (`/`) 字元開頭或結尾。雖然 `/` 作為分隔符，但在資源 ARN 中使用此字元時卻沒有特定的意義。它被視為與任何其他有效字元相同。ARN 不符合下列物件：

```
amzn-s3-demo-bucket/1-test/object.jpg
amzn-s3-demo-bucket/test/object.jpg
amzn-s3-demo-bucket/1/2/test.jpg
```

## 指定多個資源
<a name="reference_policies_elements_resource_multiple-resources"></a>

您可以使用 ARNs 陣列，在 `Resource` 元素中指定多個資源。以下範例參考兩個 DynamoDB 資料表。

```
"Resource": [
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/books_table",
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/magazines_table"
]
```

## 在資源 ARN 中使用政策變數
<a name="reference_policies_elements_resource_policy-variables"></a>

在 `Resource` 元素中，您可以在 ARN 中用於識別特定資源 (即 ARN 的尾隨部分) 的部分中使用 JSON [政策變數](reference_policies_variables.md)。例如，您可以使用索引鍵 `{aws:username}` 做為資源 ARN 的一部分，以表示目前使用者的名稱應做為資源名稱的一部分包含在內。以下範例顯示如何在 `{aws:username}` 元素中使用 `Resource` 索引鍵。此政策允許存取與目前使用者名稱符合的 Amazon DynamoDB 資料表。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "dynamodb:*",
        "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/${aws:username}"
    }
}
```

------

如需有關 JSON 政策變數的詳細資訊，請參閱 [IAM 政策元素：變數與標籤](reference_policies_variables.md)。