

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

# IAM JSON 政策元素：Condition
<a name="reference_policies_elements_condition"></a>

`Condition` 元素 (或 `Condition` 區塊**) 可讓您於政策生效時指定條件。`Condition` 元素是選用的。在 `Condition` 元素中，您所建置的表達式使用[條件運算子](reference_policies_elements_condition_operators.md) (等於、小於等等) 來比對政策中的內容索引鍵和值，以及請求內容中的索引鍵和值。若要進一步了解請求內容，請參閱 [請求的元件](intro-structure.md#intro-structure-request)。

```
"Condition" : { "{condition-operator}" : { "{condition-key}" : "{condition-value}" }}
```

您在政策條件中指定的內容索引鍵可以是[全域條件內容索引鍵](reference_policies_condition-keys.md)或服務特定的內容索引鍵。全域條件內容索引鍵包含 `aws:` 字首。服務特定的內容索引鍵包含服務的字首。例如，Amazon EC2 可讓您使用 `ec2:InstanceType` 內容索引鍵撰寫條件，此索引鍵對於該服務是唯一的。若要檢視包含 `iam:` 字首的服務特定的 IAM 內容索引鍵，請參閱 [IAM 和 AWS STS 條件內容索引鍵](reference_policies_iam-condition-keys.md)。

內容索引鍵*名稱*不區分大小寫。例如，包括 `aws:SourceIP` 內容索引鍵等同於對 `AWS:SourceIp` 的測試。內容索引鍵*值*是否區分大小寫取決於您使用的[條件運算子](reference_policies_elements_condition_operators.md)。例如，下列條件包含 `StringEquals` 運算子，以確保僅 `john` 所做的請求會相符。使用者指定的 `John` 會受到存取遭拒。

```
"Condition" : { "StringEquals" : { "aws:username" : "john" }}
```

以下條件使用 [`StringEqualsIgnoreCase`](reference_policies_elements_condition_operators.md#Conditions_String) 運算子，以符合使用者指定的 `john` 或 `John`。

```
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "john" }}
```

部分內容索引鍵支援索引鍵值對，可允許您指定部分索引鍵名稱。範例包括[`aws:RequestTag/tag-key`](reference_policies_condition-keys.md#condition-keys-requesttag)內容索引鍵、 AWS KMS [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context)和多個 服務支援[`ResourceTag/tag-key`](reference_policies_condition-keys.md#condition-keys-resourcetag)的內容索引鍵。
+ 如果您對 [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#amazon-ec2-keys) 之類的服務使用 `ResourceTag/tag-key` 內容索引鍵，則必須為 `tag-key` 指定索引鍵名稱。
+ **金鑰名稱不區分大小寫。**這表示如果您在政策的條件元素中指定 `"aws:ResourceTag/TagKey1": "Value1"`，則該條件會符合名為 `TagKey1` 或 `tagkey1` 的資源標籤鍵 (但不會同時符合兩者)。
+ AWS 支援這些屬性的 服務可能允許您建立多個金鑰名稱，這些名稱僅因案例而異。例如，可能使用 `ec2=test1` 和 `EC2=test2` 標記 Amazon EC2 執行個體。當您使用條件 (例如，`"aws:ResourceTag/EC2": "test1"`) 以允許對該資源的存取，則金鑰名稱同時符合兩個標籤，但只有一個值符合。這會導致意外的條件失敗。

**重要**  
根據最佳實務，確保帳戶成員在命名鍵值對屬性時遵守一致的命名慣例。範例包括標籤或 AWS KMS 加密內容。您可以使用[`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys)內容金鑰進行標記，或使用 [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys)進行 AWS KMS 加密內容。
+ 如需所有條件運算子的清單及其運作方式的描述，請參閱[條件運算子](reference_policies_elements_condition_operators.md)。
+ 除非另有說明，否則，所有內容索引鍵都可以具有多個值。如需有關如何處理具有多個值的內容索引鍵的描述，請參閱 [用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)
+ 如需有關所有全域可用內容索引鍵的清單，請參閱 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md)。
+ 如需每個服務定義的條件內容金鑰，請參閱 [AWS 服務的動作、資源和條件金鑰](reference_policies_actions-resources-contextkeys.html)。

## 請求內容
<a name="AccessPolicyLanguage_RequestContext"></a>

當[委託](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal)人向 提出[請求](intro-structure.md#intro-structure-request)時 AWS， 會將請求資訊 AWS 收集到請求內容中。請求內容包含有關主體、資源、動作和其他環境屬性的資訊。政策評估會將政策中的屬性與請求中傳送的屬性比對，以評估和授權可在 AWS中執行的動作。

您可以使用 JSON 政策的 `Condition` 元素來針對請求內容測試特定內容索引鍵。例如，您可以建立使用 [aws:CurrentTime](reference_policies_condition-keys.md#condition-keys-currenttime) 內容索引鍵的政策，來[僅允許使用者在特定日期範圍內執行動作](reference_policies_examples_aws-dates.md)。

下列範例展示了當 Martha Rivera 傳送請求以停用其 MFA 裝置時的請求內容表示。

```
Principal: AROA123456789EXAMPLE
Action: iam:DeactivateMFADevice
Resource: arn:aws:iam::user/martha
Context:
  – aws:UserId=AROA123456789EXAMPLE:martha
  – aws:PrincipalAccount=1123456789012
  – aws:PrincipalOrgId=o-example
  – aws:PrincipalARN=arn:aws:iam::1123456789012:assumed-role/TestAR
  – aws:MultiFactorAuthPresent=true
  – aws:MultiFactorAuthAge=2800
  – aws:CurrentTime=...
  – aws:EpochTime=...
  – aws:SourceIp=...
```

該請求內容與一項政策相符，該政策允許使用者移除自己的多重要素驗證 (MFA) 裝置，但前提是他們必須在過去一小時 (3,600 秒) 內使用 MFA 登入過。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowRemoveMfaOnlyIfRecentMfa",
        "Effect": "Allow",
        "Action": [
            "iam:DeactivateMFADevice"
        ],
        "Resource": "arn:aws:iam::*:user/${aws:username}",
        "Condition": {
            "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "3600"}
        }
    }
}
```

------

在此範例中，政策與請求內容相符：動作相同，資源與 "\$1" 萬用字元相符，且 `aws:MultiFactorAuthAge` 的值為 2800，小於 3600，因此政策允許此授權請求。

AWS 會評估政策中的每個內容索引鍵，並傳回 *true* 或 *false* 的值。請求中不存在的內容索引鍵視為不相符。

請求內容可傳回下列值：
+ **True** (真) – 若申請者在過去一個小時或一個小時內使用 MFA 登入，條件便會傳回 *true*。
+ **False** (偽) – 若申請者在過去超過一個小時中使用 MFA 登入，條件便會傳回 *false*。
  + **不存在** – 如果請求者在 AWS CLI 或 AWS API 中使用其 IAM 使用者存取金鑰提出請求，則金鑰不存在。在此情況下，由於索引鍵不存在，因此不會相符。

**注意**  
在某些情況下，當條件索引鍵值不存在時，條件仍然可以傳回 true。例如，如果新增 `ForAllValues` 限定詞，則當請求中不存在內容索引鍵時，請求會傳回 true。若要防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true，您可以在政策中包含值為 `false` 的 [Null 條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)，以檢查內容索引鍵是否存在且其值不為 Null。

## 條件區塊
<a name="AccessPolicyLanguage_ConditionBlock"></a>

以下範例顯示 `Condition` 元素的基本格式：

```
"Condition": {"StringLike": {"s3:prefix": ["jane/*"]}}
```

來自請求的值由內容索引鍵表示，在本例中為 `s3:prefix`。內容金鑰值會與您指定為常值的值進行比較，例如 `jane/*`。要進行的比較類型由 [條件運算子](reference_policies_elements_condition_operators.md) (在這裡為`StringLike`) 指定。您可以使用典型的布林比較 (例如，等於、大於和小於) 來建立比較字串、日期、數字等條件。當您使用[字串運算子](reference_policies_elements_condition_operators.md#Conditions_String)或 [ARN 運算子](reference_policies_elements_condition_operators.md#Conditions_ARN)時，您也可以在內容索引鍵值中使用[政策變數](reference_policies_variables.md)。下列範例包含 `aws:username` 變數。

```
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
```

在某些情況下，內容索引鍵可以包含多個值。例如，對 Amazon DynamoDB 的請求可能會要求從資料表中傳回或更新多個屬性。用於存取 DynamoDB 資料表的政策可以包括 `dynamodb:Attributes` 內容索引鍵，其包含請求中列出的所有屬性。您可以使用 `Condition` 元素中的設定運算子，根據政策中允許的屬性清單測試請求中的多個屬性。如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

在請求期間評估政策時， 會將金鑰 AWS 取代為請求中的對應值。（在此範例中， AWS 將使用請求的日期和時間。) 負責評估條件，以傳回 true 或 false，然後將該因素考慮為整個政策是否允許或拒絕請求。

### 條件中的多個值
<a name="Condition-multiple-conditions"></a>

`Condition` 元素可以包含多個條件運算子，而且每個條件運算子都可以包含多個內容索引鍵值對。下圖說明了這一點。

![\[兩個條件運算子區塊圖。第一個區塊包含兩個內容金鑰預留位置，每個預留位置都有多個值。第二個條件區塊包含一個內容索引鍵，其中包含多個值。\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block.diagram.png)


如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

# IAM JSON 政策元素：條件運算子
<a name="reference_policies_elements_condition_operators"></a>

<a name="topiclist"></a>

在 `Condition` 元素中使用條件運算子來將政策中的條件鍵和值與請求內容中的值進行比對。如需有關 `Condition` 元素的詳細資訊，請參閱 [IAM JSON 政策元素：Condition](reference_policies_elements_condition.md)。

您可以在政策中使用的條件運算子取決於您選擇的條件索引鍵。您可以選擇全域條件索引鍵或服務限定條件索引鍵。若要了解針對全域條件索引鍵您可以使用的條件運算子，請參閱 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md)。若要了解您可以用於服務特定條件金鑰的條件運算子，請參閱 [AWS 服務的動作、資源和條件金鑰](reference_policies_actions-resources-contextkeys.html)，然後選擇您要檢視的服務。

**重要**  
如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符且條件為 *false*。如果政策條件要求索引鍵為*不*相符，例如 `StringNotLike` 或 `ArnNotLike`，並且正確的索引鍵不存在，則條件為 *true*。除了 [...IfExist](#Conditions_IfExists) 和 [Null 檢查](#Conditions_Null)以外，此邏輯適用於所有條件運算子。這些運算子測試索引鍵是否存在於請求內容中。

條件運算子可分成以下幾種類別：
+ [：字串](#Conditions_String)
+ [數值](#Conditions_Numeric)
+ [日期和時間](#Conditions_Date)
+ [：布林值](#Conditions_Boolean)
+ [：二進位](#Conditions_BinaryEquals)
+ [IP 地址](#Conditions_IPAddress)
+ [Amazon Resource Name (ARN)](#Conditions_ARN) (僅可用於部分服務。)
+ [...IfExists](#Conditions_IfExists) (檢查鍵值是否做為另一檢查的一部分存在)
+ [Null 檢查](#Conditions_Null) (檢查鍵值是否做為獨立檢查存在)

## 字串條件運算子
<a name="Conditions_String"></a>

運用字串條件運算子，您可以建構以索引鍵與字串值的對比為基礎來限制存取的 `Condition` 元素。
+  **政策變數** – [支援](reference_policies_variables.md)
+ **萬用字元** – [支援](#Conditions_String-wildcard)


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `StringEquals`   |  完全相符，區分大小寫  | 
|   `StringNotEquals`   |  否定相符  | 
|   `StringEqualsIgnoreCase`   |  完全相符，不區分大小寫  | 
|   `StringNotEqualsIgnoreCase`   |  否定相符，不區分大小寫  | 
|   `StringLike`   | 大小寫相符。值可以在字串的任何位置包含多字元比對萬用字元 (\$1) 和單一字元比對萬用字元 (?)。您必須指定萬用字元才能達到部分字串相符。  如果索引鍵包含多個值，`StringLike` 可使用集合運算子限定 `ForAllValues:StringLike` 和 `ForAnyValue:StringLike`. 如需詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。  | 
|   `StringNotLike`   |  否定大小寫相符。值可以在字串的任何位置包含多字元比對萬用字元 (\$1) 或單一字元比對萬用字元 (?)。  | 

**Example 字串條件運算子**  
例如，下列陳述式包含的 `Condition` 元素使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) 索引鍵，以指定提出請求的主體必須以 `iamuser-admin` 任務類別標記。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalTag/job-category": "iamuser-admin"
            }
        }
    }
}
```
如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。在此範例中，如果主體使用的 IAM 使用者已連接標籤，則 `aws:PrincipalTag/job-category` 索引鍵存在於請求內容中。如果主體使用的 IAM 角色有連接的標籤或工作階段標籤，則也包含此索引鍵。如果不具有標籤的使用者嘗試檢視或編輯存取金鑰，此條件會傳回 `false`，且此陳述式會隱含拒絕請求。  
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – iamuser-admin</pre>  |  匹配 | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – dev-ops</pre>  | 無相符項目 | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  |  請求內容中沒有 `aws:PrincipalTag/job-category`。  | 無相符項目 | 

**Example 將政策變數與字串條件運算子搭配使用**  
下列範例使用 `StringLike` 條件運算子執行與[政策變數](reference_policies_variables.md)的字串配對來建立政策，該政策允許 IAM 使用者使用 Amazon S3 主控台管理其 Amazon S3 儲存貯體中的「主目錄」。該政策允許對 S3 儲存貯體執行指定操作，前提是 `s3:prefix` 與任一指定模式相符。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "",
            "home/",
            "home/${aws:username}/"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
      ]
    }
  ]
}
```
下表顯示 如何根據請求內容中的[aws:username](reference_policies_condition-keys.md#condition-keys-username)值，評估不同使用者的 AWS 此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  | <pre>aws:username:<br />  – martha_rivera</pre>  | <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/martha_rivera/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  <pre>aws:username:<br />  – nikki_wolf</pre>  |  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/nikki_wolf/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:username`。  | 無相符項目 | 
如需關於如何使用 `Condition` 元素根據 OIDC 聯合身分的應用程式 ID 和使用者 ID 來限制存取資源的政策範例，請參閱 [Amazon S3：可讓 Amazon Cognito 使用者存取其儲存貯體中的物件](reference_policies_examples_s3_cognito-bucket.md)。

### 多值字串條件運算子
<a name="conditions_string_multivalued"></a>

如果請求中的索引鍵包含多個值，則可以使用集運算子 `ForAllValues` 和 `ForAnyValue` 來限定字串運算子。如需有關多個內容索引鍵或值之評估邏輯的詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。


| 條件運算子 | Description | 
| --- | --- | 
|  `ForAllValues:StringEquals` `ForAllValues:StringEqualsIgnoreCase`  |  請求中條件索引鍵的所有值都必須與政策中的至少一個值相符。  | 
|  `ForAnyValue:StringEquals` `ForAnyValue:StringEqualsIgnoreCase`  |  請求中至少有一個條件索引鍵值必須與政策中的其中一個值相符。  | 
|  `ForAllValues:StringNotEquals` `ForAllValues:StringNotEqualsIgnoreCase`  |  否定相符。 請求中內容索引鍵的所有值都不與政策中的任何內容索引鍵值相符。  | 
|  `ForAnyValue:StringNotEquals` `ForAnyValue:StringNotEqualsIgnoreCase`  |  否定相符。 請求中至少有一個內容索引鍵值不得與政策中內容索引鍵中的任何值相符。  | 
|  `ForAllValues:StringLike`  |  請求中條件索引鍵的所有值都必須與政策中的至少一個值相符。  | 
|  `ForAnyValue:StringLike`  |  請求中至少有一個條件索引鍵值必須與政策中的其中一個值相符。  | 
|  `ForAllValues:StringNotLike`  |  否定相符。 請求中內容索引鍵的所有值都不與政策中的任何內容索引鍵值相符。  | 
|  `ForAnyValue:StringNotLike`  |  否定相符。 請求中至少有一個內容索引鍵值不得與政策中內容索引鍵中的任何值相符。  | 

**Example 將 `ForAnyValue` 與字串條件運算子搭配使用**  
此範例會示範如何建立身分型政策，它允許使用 Amazon EC2 `CreateTags` 動作以將標籤連接至執行個體。使用 `StringEqualsIgnoreCase` 時，僅當標籤包含 `environment` 鍵且值為 `preprod` 或 `storage` 時，您才能連接標籤。將 `IgnoreCase` 附加至運算子時，可以允許任何現有的標籤值大寫 (例如 `preprod`、`Preprod` 和 `PreProd`) 都解析為 true。  
將 `ForAnyValue` 修飾詞與 [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 條件索引鍵搭配使用時，請求中至少有一個標籤索引鍵值必須與值 `environment` 相符。`ForAnyValue` 比較會區分大小寫，這可以阻止使用者使用錯誤大小寫的標籤索引鍵，例如使用 `Environment` 而不是 `environment`。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "StringEqualsIgnoreCase": {
        "aws:RequestTag/environment": [
          "preprod",
          "storage"
        ]
      },
      "ForAnyValue:StringEquals": {
        "aws:TagKeys": "environment"
      }
    }
  }
}
```
 下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />aws:RequestTag/environment:<br />  – preprod</pre>  | 匹配  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – costcenter<br />aws:RequestTag/environment:<br />  – PreProd</pre>  | 匹配  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – Environment<br />aws:RequestTag/Environment:<br />  – preprod</pre>  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – costcenter<br />aws:RequestTag/environment:<br />  – preprod</pre>  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。 <pre>aws:RequestTag/environment:<br />  – storage</pre>  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre> 請求內容中沒有 `aws:RequestTag/environment`。  | 無相符項目  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。 請求內容中沒有 `aws:RequestTag/environment`。  | 無相符項目  | 

### 萬用字元比對
<a name="Conditions_String-wildcard"></a>

字串條件運算子會執行不強制執行預先定義格式的無模式比對。ARN 和 Date 條件運算子是字串運算子的子集，它們會對條件索引鍵值強制執行一種結構。

建議使用與索引鍵要比較的值對應的條件運算子。例如，將索引鍵與字串值進行比較時，應該使用 [字串條件運算子](#Conditions_String)。同樣地，將索引鍵與 ARN 值進行比較時，應該使用 [Amazon Resource Name (ARN) 條件運算子](#Conditions_ARN)。

**Example**  
此範例說明如何圍繞組織中的資源建立邊界。此政策中的條件將拒絕存取 Amazon S3 動作，除非正在存取的資源位於 AWS Organizations中的一組特定組織單位中。 AWS Organizations 路徑是組織實體結構的文字表示。  
條件要求 `aws:ResourceOrgPaths` 包含任何列出的組織單位路徑。由於 `aws:ResourceOrgPaths` 是多值條件，因此政策會使用 `ForAllValues:StringNotLike` 運算子來比較 `aws:ResourceOrgPaths` 的值與政策中的組織單位清單。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyS3AccessOutsideMyBoundary",
      "Effect": "Deny",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:ResourceOrgPaths": [
            "o-acorg/r-acroot/ou-acroot-mediaou/",
            "o-acorg/r-acroot/ou-acroot-sportsou/*"
          ] 
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-sportsou/costcenter/</pre>  | 匹配 | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-mediaou/costcenter/</pre>  | 無相符項目 | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  |  請求中沒有 `aws:ResourceOrgPaths:`。  | 無相符項目 | 

## 數位條件運算子
<a name="Conditions_Numeric"></a>

利用數位條件運算子，您可以建構以索引鍵與整數或小數值的對比來限制存取的 `Condition` 元素。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `NumericEquals`   |  相符  | 
|   `NumericNotEquals`   |  否定相符  | 
|   `NumericLessThan`   |  「小於」相符  | 
|   `NumericLessThanEquals`   |  「小於或等於」相符  | 
|   `NumericGreaterThan`   |  「大於」相符  | 
|   `NumericGreaterThanEquals`   |  「大於或等於」相符  | 

例如，下列聲明包含一個 `Condition` 元素，該元素使用 `NumericLessThanEquals` 條件運算子與 `s3:max-keys` 金鑰來指定申請者一次「最多」**可在 `amzn-s3-demo-bucket` 內列出 10 個物件。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {"NumericLessThanEquals": {"s3:max-keys": "10"}}
  }
}
```

------

如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。在此範例中，當您執行 `s3:max-keys` 操作時，`ListBucket` 索引鍵永遠存在於請求中。如果此政策允許所有 Amazon S3 操作，則只有包含 `max-keys` 內容索引鍵且值小於或等於 10 的操作，才允許執行。

## 日期條件運算子
<a name="Conditions_Date"></a>

運用日期條件運算子，您可以建構以索引鍵與日期/時間值的對比為基礎來限制存取的 `Condition` 元素。您同時使用這些條件運算子與 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime) 索引鍵或 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime) 索引鍵。您必須指定日期/時間值，且其中一個 [W3C 實作要採用 ISO 8601 日期格式](http://www.w3.org/TR/NOTE-datetime)或 epoch (UNIX) 時間格式。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `DateEquals`   |  符合特定日期  | 
|   `DateNotEquals`   |  否定相符  | 
|   `DateLessThan`   |  在特定日期與時間前相符  | 
|   `DateLessThanEquals`   |  在特定日期與時間時或之前相符  | 
|   `DateGreaterThan`   |  在特定日期與時間後相符  | 
|   `DateGreaterThanEquals`   |  在特定日期與時間時或之後相符  | 

例如，下列陳述式包含的 `Condition` 元素將 `DateGreaterThan` 條件運算子與 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime) 索引鍵搭配使用。此條件指定用來提出請求的臨時安全憑證已於 2020 年發行。此政策可以每天以程式設計方式更新，以確保帳戶成員使用全新的憑證。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "DateGreaterThan": {
                "aws:TokenIssueTime": "2020-01-01T00:00:01Z"
            }
        }
    }
}
```

------

如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。只有在主體使用臨時憑證發出請求時，`aws:TokenIssueTime` 索引鍵才存在於請求內容中。金鑰不存在於使用存取金鑰提出的 AWS CLI API AWS 或 AWS SDK 請求中。在此範例中，如果 IAM 使用者嘗試檢視或編輯存取金鑰，則會拒絕請求。

## 布林值條件運算子
<a name="Conditions_Boolean"></a>

運用布林值條件，您可以建構 `Condition` 元素，這些元素會根據將索引鍵與 `true` 或 `false` 進行比較的結果來限制存取權。

如果索引鍵包含多個值，布林運算子可以使用集運算子 `ForAllValues` 和 `ForAnyValue` 進行限定。如需有關多個內容索引鍵或值之評估邏輯的詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。
+  **政策變數** – [支援](reference_policies_variables.md)
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `Bool`   |  布林值相符  | 
|   `ForAllValues:Bool`   |  與 Array of Bool 資料類型搭配使用。內容索引鍵值中的所有布林值必須與政策中的布林值相符。 若要防止 `ForAllValues` 運算子將遺失內容索引鍵或具有空值的內容索引鍵評估為「已允許」，您可以在政策中包含 [Null 條件運算子](#Conditions_Null)。  | 
|   `ForAnyValue:Bool`   |  與 Array of Bool 資料類型搭配使用。內容索引鍵值中至少有一個布林值必須與政策中的布林值相符。  | 

**Example 布林值條件運算子**  
下列身分型政策透過將 `Bool` 條件運算子和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) 索引鍵搭配使用，拒絕當請求不在 SSL 上時，將物件和物件標籤複寫至目的地儲存貯體及其內容。  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "BooleanExample",
      "Action": "s3:ReplicateObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket",
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – false</pre>  | 匹配 | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – true</pre>  | 無相符項目 | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  |  請求內容中沒有 `aws:SecureTransport`。  | 無相符項目 | 

## 二進位條件運算子
<a name="Conditions_BinaryEquals"></a>

運用 `BinaryEquals` 條件運算子，您可以建構用於測試二進位格式索引鍵值的 `Condition` 元素。它會比較指定金鑰位元組的值與政策中 [base-64](https://en.wikipedia.org/wiki/Base64) 編碼表示的二進位值。如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援

```
"Condition" : {
  "BinaryEquals": {
    "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="
  }
}
```


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – QmluYXJ5VmFsdWVJbkJhc2U2NA==</pre>  | 匹配 | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – ASIAIOSFODNN7EXAMPLE</pre>  | 無相符項目 | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  |  請求內容中沒有 `key`。  | 無相符項目 | 

## IP 地址條件運算子
<a name="Conditions_IPAddress"></a>

運用 IP 地址條件運算子，您可以建構 `Condition` 元素，它們會以索引鍵與 IPv4 或 IPv6 地址或 IP 地址範圍的對比來限制存取。您可以搭配 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) 索引鍵來使用這些運算子。該值必須採用標準的 CIDR 格式 (例如 203.0.113.0/24 或 2001:DB8:1234:5678::/64)。如果您指定的 IP 地址沒有關聯的路由字首，IAM 將使用 `/32` 做為預設字首值。

有些 AWS 服務支援 IPv6，使用 ：： 代表 0 的範圍。若要了解某項服務是否支援 IPv6，請參閱該服務的文件。
+  **政策變數** – 不支援
+ **萬用字元** – 不支援


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `IpAddress`   |  指定的 IP 地址或範圍  | 
|   `NotIpAddress`   |  除指定 IP 地址或範圍外的所有 IP 地址  | 

**Example IP 位址條件運算子**  
下列陳述式將 `IpAddress` 條件運算子與 `aws:SourceIp` 索引鍵搭配使用，來指定請求必須來自 IP 範圍 203.0.113.0 至 203.0.113.255。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "203.0.113.0/24"
            }
        }
    }
}
```
`aws:SourceIp` 條件索引鍵解析為發出請求的 IP 地址。如果請求源自 Amazon EC2 執行個體，則 `aws:SourceIp` 計算為執行個體的公有 IP 地址。  
如果您在政策條件中指定的索引鍵不存在於請求內容中，則值不相符。`aws:SourceIp` 索引鍵永遠存在於請求內容中，但請求者使用 VPC 端點提出請求時為例外。在此情況下，此條件會傳回 `false`，且此陳述式會隱含拒絕請求。  
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 203.0.113.1</pre>  | 匹配 | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 198.51.100.1</pre>  | 無相符項目 | 
以下範例顯示如何混合使用 IPv4 與 IPv6 地址，以涵蓋您組織的所有有效 IP 地址。建議您使用您的 IPv6 地址範圍以及已擁有的 IPv4 範圍來更新組織的政策，以確保政策在您過渡到 IPv6 時繼續有效。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "someservice:*",
    "Resource": "*",
    "Condition": {
      "IpAddress": {
        "aws:SourceIp": [
          "203.0.113.0/24",
          "2001:DB8:1234:5678::/64"
        ]
      }
    }
  }
}
```
如果以使用者身分直接呼叫測試的 API，`aws:SourceIp` 條件索引鍵僅在 JSON 政策中有效。如果改為使用服務代表您呼叫目標服務，則目標服務看到的是進行呼叫的服務的 IP 地址而不是來源使用者的 IP 地址。例如，如果使用 AWS CloudFormation 呼叫 Amazon EC2 來建構執行個體，則會發生這種情況。目前，無法透過進行呼叫的服務將來源 IP 地址傳遞給目標服務以在 JSON 政策中進行評估。對於這些服務 API 呼叫類型，請勿使用 `aws:SourceIp` 條件索引鍵。

## Amazon Resource Name (ARN) 條件運算子
<a name="Conditions_ARN"></a>

運用 Amazon Resource Name (ARN) 條件運算子，您可以建構以索引鍵與 ARN 的對比為基礎來限制存取的 `Condition` 元素。ARN 被視為一個字串。
+  **政策變數** – [支援](reference_policies_variables.md)
+ **萬用字元** – [支援](reference_policies_elements_resource.md#reference_policies_elements_resource_wildcards)


****  

| 條件運算子 | 描述 | 
| --- | --- | 
|   `ArnEquals`, `ArnLike`  |  ARN 大小寫相符。ARN 的六個由冒號分隔開的部分都要單獨檢查，每一個部分都可包括一個多字元比對萬用字元 (\$1) 或一個單字元比對萬用字元 (?)。`ArnEquals` 和 `ArnLike` 條件運算子的行為完全相同。  | 
|   `ArnNotEquals`, `ArnNotLike`  |  ARN 否定相符。`ArnNotEquals` 和 `ArnNotLike` 條件運算子的行為完全相同。  | 

**Example ARN 條件運算子**  
下列以資源為基礎的政策範例顯示連接至 Amazon SQS 佇列的政策 (您想要將 SNS 訊息傳送到此佇列)。它授予 Amazon SNS 將訊息傳送到所選佇列的許可，但僅在該服務代表特定 Amazon SNS 主題傳送這些訊息時才授予此許可。您在 `Resource` 欄位中指定佇列，Amazon SNS 主題則作為 `SourceArn` 索引鍵的值。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "sns.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "arn:aws:sqs:us-east-1:123456789012:QUEUE-ID",
        "Condition": {
            "ArnEquals": {
                "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:TOPIC-ID"
            }
        }
    }
}
```
僅當資源觸發服務代表資源擁有者呼叫另一項服務時，請求內容中才存在 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 索引鍵。如果 IAM 使用者嘗試直接執行此操作，此條件會傳回 `false`，且此陳述式會隱含拒絕請求。  
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:123456789012:TOPIC-ID</pre>  | 匹配 | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:777788889999:TOPIC-ID</pre>  | 無相符項目 | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  |  請求內容中沒有 `aws:SourceArn`。  | 無相符項目 | 

### 多值 ARN 條件運算子
<a name="conditions_arn_multivalued"></a>

如果請求中的索引鍵包含多個值，則可以使用集運算子 `ForAllValues` 和 `ForAnyValue` 來限定 ARN 運算子。如需有關多個內容索引鍵或值之評估邏輯的詳細資訊，請參閱[用於多值內容索引鍵的集運算子](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。


| 條件運算子 | Description | 
| --- | --- | 
|  `ForAllValues:ArnEquals` `ForAllValues:ArnLike`  |  請求內容中的所有 ARN 都必須與政策中的至少一個 ARN 模式相符。  | 
|  `ForAnyValue:ArnEquals` `ForAnyValue:ArnLike`  |  請求內容中至少有一個 ARN 必須與政策中的其中一個 ARN 模式相符。  | 
|  `ForAllValues:ArnNotEquals` `ForAllValues:ArnNotLike`  |  否定相符。 請求內容中的所有 ARN 都不與政策中的任何字串 ARN 模式相符。  | 
|  `ForAnyValue:ArnNotEquals` `ForAnyValue:ArnNotLike`  |  否定相符。 請求內容中必須至少有一個 ARN 不得與政策中的任何 ARN 模式相符。  | 

**Example 將 `ForAllValues` 與 ARN 條件運算子搭配使用**  
下列範例使用 `ForAllValues:ArnLike` 來建立或更新 Amazon CloudWatch Logs 日誌的邏輯交付來源。條件區塊包含條件索引鍵 [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys)，用於篩選請求中傳遞的日誌產生資源 ARN。使用此條件運算子，請求中的所有 ARN 都必須與政策中的至少一個 ARN 相符。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "logs:PutDeliverySource",
            "Resource": "arn:aws:logs:us-east-1:123456789012:delivery-source:*",
            "Condition": {
                "ForAllValues:ArnLike": {
                    "logs:LogGeneratingResourceArns": [
                        "arn:aws:cloudfront::123456789012:distribution/*",
                        "arn:aws:cloudfront::123456789012:distribution/support*"
                    ]
                }
            }
        }
    ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter</pre>  | 匹配 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/support2025</pre>  | 匹配 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/admin</pre>  | 無相符項目 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:777788889999:distribution/costcenter</pre>  | 無相符項目 | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  |  請求內容中沒有 `logs:LogGeneratingResourceArns`。  | 匹配  | 
如果請求中沒有內容索引鍵，或內容索引鍵值解析為 Null 資料集 (例如空白字串)，則 `ForAllValues` 限定詞會傳回 true。若要防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true，您可以在政策中包含值為 `false` 的 [Null 條件運算子](#Conditions_Null)，以檢查內容索引鍵是否存在且其值不為 Null。

## ...IfExists 條件運算子
<a name="Conditions_IfExists"></a>

除 `IfExists` 條件外，您可在任何條件運算子名稱的尾端加入 `Null`，例如 `StringLikeIfExists`。執行此操作，並表明如果請求的內容中存在條件索引鍵，則依照政策所述來處理索引鍵。如果該索引鍵不存在，則評估條件元素為 true。」 陳述式中其他條件因素仍然可以導致不相符，但使用 `...IfExists` 檢查時並非使用遺失索引鍵。如果使用 `"Effect": "Deny"` 元素搭配否定條件運算子，例如 `StringNotEqualsIfExists`，即使條件索引鍵不存在，仍然會拒絕請求。

**使用 `IfExists` 的範例**

許多條件索引鍵描述有關特定類型的資源的資訊，僅當存取該類型的資源時才存在。這些條件索引鍵在其他類型的資源上不存在。當政策陳述式僅適用於一種類型的資源時，這不會導致問題。但是，有時單一陳述式可以適用於多種類型的資源，例如當政策陳述式從多個服務引用操作時，或是當服務中的給定操作存取同一服務中的多種不同資源類型時。在這種情況下，在政策陳述式中包含僅適用於一種資源的條件索引鍵可能會導致政策陳述式中的 `Condition` 元素失敗，從而使陳述式的 `"Effect"` 不適用。

例如，請設想以下政策範例：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "THISPOLICYDOESNOTWORK",
    "Effect": "Allow",
    "Action": "ec2:RunInstances",
    "Resource": "*",
    "Condition": {"StringLike": {"ec2:InstanceType": [
      "t1.*",
      "t2.*",
      "m3.*"
    ]}}
  }
}
```

------

上述政策的*意圖*是讓使用者可以啟動類型為 `t1`、`t2` 或 `m3` 的任何執行個體。但是，啟動執行個體要求存取除了執行個體本身之外的許多資源；例如映射、金鑰對、安全群組等。會針對啟動執行個體所需的每個資源來評估整個陳述式。這些其他資源沒有 `ec2:InstanceType` 條件金鑰，因此 `StringLike` 檢查會失敗，並且不會向使用者授予啟動「任何」**執行個體類型的能力。

若要解決此問題，請改用 `StringLikeIfExists` 條件運算子。如此一來，僅有在條件索引鍵存在時才會進行測試。您會讀到以下政策：「如果正在檢查的資源有 "`ec2:InstanceType`" 條件索引鍵，那麼只會在鍵值以 `t1.`、`t2.` 或 `m3.` 開頭時才允許該動作。如果正在檢查的資源沒有該條件索引鍵，則無需擔心它。』 與 `StringLikeIfExists` 條件運算子搭配使用時，條件索引鍵值中的星號 (\$1) 會被解譯為萬用字元，以實現部分字串相符。`DescribeActions` 陳述式包含在主控台檢視執行個體所需的動作。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RunInstance",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
        "StringLikeIfExists": {
          "ec2:InstanceType": [
            "t1.*",
            "t2.*",
            "m3.*"
          ]
        }
      }
    },
    {
      "Sid": "DescribeActions",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeVpcs",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – t1.micro</pre>  | 匹配 | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – m2.micro</pre>  | 無相符項目 | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  |  請求內容中沒有 `ec2:InstanceType`。  | 匹配 | 

## 用於檢查條件索引鍵是否存在的條件運算子
<a name="Conditions_Null"></a>

使用 `Null` 條件運算子檢查授權時是否沒有條件索引鍵。在政策陳述式中使用 `true` (索引鍵不存在 - 為 null) 或 `false` (索引鍵存在且值不為 null)。

您不可使用[政策變數](reference_policies_variables.md)與 `Null` 條件運算子。

例如，您可以使用此條件運算子來確定使用者使用的是臨時憑證還是自己的憑證來發出請求。如果使用者使用的是臨時憑證，則索引鍵 `aws:TokenIssueTime` 存在並具有一個值。下列範例展示了一個條件，該條件規定使用者必須使用臨時憑證 (必須存在索引鍵) 才能使用 Amazon EC2 API。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"ec2:*",
      "Effect":"Allow",
      "Resource":"*",
      "Condition":{"Null":{"aws:TokenIssueTime":"false"}}
  }
}
```

------

# 具有多個內容索引鍵或值的條件
<a name="reference_policies_condition-logic-multiple-context-keys-or-values"></a>

您可以使用政策的 `Condition` 元素來測試請求中單一內容索引鍵的多個內容索引鍵或多個值。當您以程式設計方式或透過 提出請求時 AWS， AWS 管理主控台您的請求會包含有關委託人、操作、標籤等資訊。您可以使用內容索引鍵來測試請求中相符的內容索引鍵的值，以及政策條件中指定的內容索引鍵。若要了解請求中包含的資訊和資料，請參閱 [請求內容](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext)。

**Topics**
+ [多個內容索引鍵或值的評估邏輯](#reference_policies_multiple-conditions-eval)
+ [否定相符條件運算子的評估邏輯](#reference_policies_multiple-conditions-negated-matching-eval)

## 多個內容索引鍵或值的評估邏輯
<a name="reference_policies_multiple-conditions-eval"></a>

`Condition` 元素可以包含多個條件運算子，而且每個條件運算子都可以包含多個內容索引鍵值對。除非另有指定，否則大多數內容索引鍵都支援使用多個值。
+ 如果您的政策陳述式有多個[條件運算子](reference_policies_elements_condition_operators.md)，則使用邏輯 `AND` 評估條件運算子。
+ 如果您的政策陳述式已將多個內容索引鍵連接至單一條件運算子，則使用邏輯 `AND` 評估內容索引鍵。
+ 如果單一條件運算子包含一個內容索引鍵的多個值，則使用邏輯 `OR` 評估這些值。
+ 如果單一否定相符條件運算子包含一個內容索引鍵的多個值，則使用邏輯 `NOR` 評估這些值。

條件元素區塊中的所有內容索引鍵都必須解析為 true 才能調用所需的 `Allow` 或 `Deny` 效果。下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。

![\[條件區塊顯示如何將 AND 和 OR 套用到多個內容索引鍵和值\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_2.diagram.png)


例如，下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 `StringEquals` 和 `ArnLike`，以及內容索引鍵 `aws:PrincipalTag` 和 `aws:PrincipalArn`。若要調用所需的 `Allow` 或 `Deny` 效果，條件區塊中的所有內容索引鍵都必須解析為 true。發出請求的用戶必須同時具有*部門*和*角色*這兩個主體標籤索引鍵，其中包含政策中指定的其中一個標籤索引鍵值。此外，發出請求之使用者的主體 ARN 必須符合政策中指定的其中一個 `aws:PrincipalArn` 值才會評估為 true。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn: <br />  arn:aws:iam::222222222222:user/Mary</pre>  |  **相符** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:PrincipalTag/role`。 <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目**  | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | 請求內容中沒有 `aws:PrincipalTag`。 <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目**  | 

## 否定相符條件運算子的評估邏輯
<a name="reference_policies_multiple-conditions-negated-matching-eval"></a>

部分[條件運算子](reference_policies_elements_condition_operators.md) (例如 `StringNotEquals` 或 `ArnNotLike`) 使用否定相符將政策中的內容索引鍵值對與請求中的內容金鑰值對進行比較。使用否定相符條件運算子為政策中的單一內容索引鍵指定多個值時，有效許可的工作方式類似於邏輯 `NOR`。在否定相符中，僅當所有值都評估為 false 時，邏輯 `NOR` 或 `NOT OR` 才傳回 true。

下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。此圖包含內容索引鍵 3 的否定相符條件運算子。

![\[條件區塊顯示在使用否定相符條件運算子時如何將 AND 和 OR 套用到多個內容索引鍵和值\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_Negated_NOR_2.diagram.png)


例如，下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 `StringEquals` 和 `ArnNotLike`，以及內容索引鍵 `aws:PrincipalTag` 和 `aws:PrincipalArn`。若要調用所需的 `Allow` 或 `Deny` 效果，條件區塊中的所有內容索引鍵都必須解析為 true。發出請求的用戶必須同時具有*部門*和*角色*這兩個主體標籤索引鍵，其中包含政策中指定的其中一個標籤索引鍵值。由於 `ArnNotLike` 條件運算子使用否定相符，因此發出請求的使用者的主體 ARN 必須符合要評估為 true 的政策中指定的任何 `aws:PrincipalArn` 值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki<br /></pre>  |  **相符** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | >請求內容中沒有 `aws:PrincipalTag/role`。 <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | 請求內容中沒有 `aws:PrincipalTag`。 <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **沒有相符項目**  | 

# 單值與多值的內容索引鍵
<a name="reference_policies_condition-single-vs-multi-valued-context-keys"></a>

單值與多值內容索引鍵之間的差異在於[請求內容](intro-structure.md#intro-structure-request)中值的數目，而非政策條件中值的數目。
+ *單值*條件內容索引鍵在請求內容中最多有一個值。例如，當您在 中標記資源時 AWS，每個資源標籤都會儲存為索引鍵/值對。由於資源標籤金鑰只能有單一標籤值，因此 [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) 是單值內容索引鍵。請勿使用具有單值內容索引鍵的條件集運算子。
+ *多值*條件內容索引鍵在請求內容中可以擁有多個值。例如，當您在 中標記資源時 AWS，您可以在單一請求中包含多個標籤鍵/值對。因此，[aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 是多值內容索引鍵。多值內容索引鍵需要條件集運算子。

例如，請求可以來自最多一個 VPC 端點，因此 [aws:SourceVpce](reference_policies_condition-keys.md#condition-keys-sourcevpce) 是單值內容索引鍵。由於服務可以有多個屬於該服務的服務主體名稱，因此 [aws:PrincipalServiceNamesList](reference_policies_condition-keys.md#condition-keys-principalservicenameslist) 是多值內容索引鍵。

**重要**  
單值與多值內容索引鍵之間的差異取決於請求內容中值的數目，而非政策條件中值的數目。

## 重點
<a name="reference_policies_condition-key-points"></a>
+ *單值*和*多值*分類包含在 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md) 主題中作為*值類型*的每個條件內容索引鍵的描述中。
+ [Service Authorization Reference](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) 中的多值內容索引鍵使用 `ArrayOf` 字首，後接條件運算子類別類型 (例如 `ArrayOfString` 或 `ArrayOfARN`)，表示請求可能包含條件內容索引鍵的多個值。
+ 可以使用任何可用的單值內容索引鍵作為政策變數，但不能使用多值內容金鑰作為政策變數。如需有關政策變數的詳細資訊，請參閱 [IAM 政策元素：變數與標籤](reference_policies_variables.md)。
+ 使用包含金鑰/值對的內容索引鍵時，請務必注意，即使可以有多個標籤鍵值，每個 `tag-key` 只能有一個值。
  + [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag)、[aws:RequestTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-requesttag) 和 [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) 是單值內容索引鍵。
  + [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 定義了請求中允許的標籤索引鍵，但不包含標籤索引鍵值。由於您可以在請求中包含多個標籤索引鍵值對，因此 `aws:TagKeys` 是多值內容索引鍵。
+ 多值內容索引鍵需要條件集運算子。請勿將條件集運算子 `ForAllValues` 或 `ForAnyValue` 與單值內容索引鍵搭配使用。使用條件集運算子搭配單值內容索引鍵可能會導致過度寬鬆的政策。

## 用於多值內容索引鍵的集運算子
<a name="reference_policies_condition-multi-valued-context-keys"></a>

若要將您的條件內容索引鍵與具有多值的[請求內容](intro-structure.md#intro-structure-request)索引鍵進行比較，您必須使用 `ForAllValues` 或 `ForAnyValue` 集運算子。這些集運算子用於比較兩組值，例如請求中的標籤集和政策條件中的標籤集。

`ForAllValues` 和 `ForAnyValue` 限定詞將集操作功能新增到了條件運算子，允許您針對政策條件中的多內容索引鍵值來測試具有多值的請求內容索引鍵。此外，如果您在政策中使用萬用字元或變數包含多值字串內容索引鍵，您也必須使用 `StringLike` [條件運算子](reference_policies_elements_condition_operators.md#Conditions_String)。多個條件索引鍵值必須像[陣列](reference_policies_grammar.md#policies-grammar-json)那樣用方括號括住，例如 `"Key2":["Value2A", "Value2B"]`。

### ForAllValues
<a name="reference_policies_condition-forallvalues"></a>

`ForAllValues` 限定詞會測試請求內容中每個成員的值是否與限定詞後面的條件運算子相符。如果請求中每個內容索引鍵值都與政策中的內容索引鍵值相符，則條件會傳回 `true`。如果請求中沒有內容索引鍵，也會傳回 `true`。

**重要**  
如果將 `ForAllValues` 與 `Allow` 效果搭配使用，請務必小心，因為如果請求內容中意外出現遺失內容索引鍵，則可能導致政策過度寬鬆。您應該始終在政策中包含具有 `false` 值的 [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) 條件運算子，以檢查內容索引鍵是否存在且其值不為 Null。如需範例，請參閱 [根據標籤索引鍵控制存取權限](access_tags.md#access_tags_control-tag-keys)。

#### ForAllValues 集運算子範例
<a name="reference_policies_condition-forallvalues-example"></a>

在下列範例中，ForAllValues 會與 aws:TagKeys 搭配使用，以允許使用者刪除指派給 EC2 執行個體的特定標籤。此政策僅允許使用者刪除 `environment` 和 `cost-center` 標籤。您可以將其單獨刪除，也可以同時刪除。請求中的標籤索引鍵必須與政策中指定的索引鍵完全相符。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                },
                "Null": {
                    "aws:TagKeys": "false"
                }
            }
        }
    ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **相符**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **沒有相符項目**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。  |  **沒有相符項目**  | 

請注意，在最後一個範例中，結果為「無相符項目」，因為 Null 條件檢查會在遺失內容索引鍵時防止相符。這是避免政策過度寬鬆的最佳實務。

### ForAnyValue
<a name="reference_policies_condition-foranyvalue"></a>

`ForAnyValue` 限定詞會測試這組請求內容索引鍵值是否至少有一個成員與政策條件中這組內容索引鍵值的至少一個成員相符。如果請求中任一內容索引鍵值與政策中的任一內容索引鍵值相符，則條件會傳回 `true`。如果沒有相符的內容索引鍵，或者如果索引鍵不存在，則條件會傳回 `false`。

**重要**  
將 `ForAnyValue` 與 `Deny` 效果搭配使用時，如果請求中不存在內容索引鍵，政策會評估為**無相符項目**。為實現一致的行為，請在政策中新增明確的 [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null) 條件檢查，以驗證內容索引鍵是否存在。如需詳細資訊，請參閱[用於檢查條件索引鍵是否存在的條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)。

#### ForAnyValue 集運算子範例
<a name="reference_policies_condition-foranyvalue-example"></a>

在下列範例中，ForAnyValue 會與 aws:TagKeys 搭配使用，以允許使用者刪除指派給 EC2 執行個體的特定標籤。如果請求中指定的標籤索引鍵包含 `environment` 或 `cost-center`，則此政策允許使用者刪除執行個體的標籤。請求可以包含政策中指定標籤索引鍵之外的其他標籤索引鍵，但必須包含至少一個指定索引鍵以符合條件。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                }
            }
        }
    ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **相符**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – dept</pre>  |  **沒有相符項目**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:TagKeys`。  |  **沒有相符項目**  | 

# 條件政策範例
<a name="reference_policies_condition_examples"></a>

在 IAM 政策中，您可以為單值和多值內容索引鍵指定多個值，以便與請求內容進行比較。下列一組政策範例示範具有多個內容索引鍵和值的政策條件。

**注意**  
如果您想提交要包含在本參考指南中的政策，請使用此頁面底部的 **Feedback (意見回饋)** 按鈕。如需以身分為基礎的 IAM 政策範例，請參閱 [以身分為基礎的 IAM 政策範例](access_policies_examples.md)。

## 條件政策範例：單值內容索引鍵
<a name="reference_policies_condition_example_library_single-valued"></a>
+ 具有單值內容索引鍵的多個條件區塊。([檢視此範例](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-1)。)
+ 具有多個單值內容索引鍵和值的一個條件區塊。([檢視此範例](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-2)。)

## 條件政策範例：多值內容索引鍵
<a name="reference_policies_condition_example_library_multi-valued"></a>
+ 使用條件集運算子 `ForAllValues` 的拒絕政策。([檢視此範例](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-1)。)
+ 使用條件集運算子 `ForAnyValue` 的拒絕政策。([檢視此範例](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-2)。)

# 多值內容索引鍵範例
<a name="reference_policies_condition_examples-multi-valued-context-keys"></a>

下列一組政策範例示範如何使用多值內容索引鍵建立政策條件。

## 範例：使用條件集運算子 ForAllValues 的拒絕政策
<a name="reference_policies_condition_examples-multi-valued-context-keys-1"></a>

下列範例說明如何使用身分型政策，在請求中包含特定標籤索引鍵字首時，拒絕使用 IAM 標記動作。[`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) 的值包含用於部分字串比對的萬用字元 (\$1)。此政策包含具有內容索引鍵 `aws:TagKeys` 的 `ForAllValues` 集運算子，因為請求內容索引鍵可以包含多值。為了使內容索引鍵 `aws:TagKeys` 符合，請求內容中的每個值都必須與政策中的至少一個值相符。

如果請求中沒有內容索引鍵，`ForAllValues` 集運算子也會傳回 true。

您可以透過在政策中包含一個值為 `false` 的 `Null` 條件運算子，來檢查請求中的內容索引鍵是否存在且其值不為 Null，從而防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true。如需詳細資訊，請參閱[用於檢查條件索引鍵是否存在的條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)。

**重要**  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。

**Example 拒絕多值內容索引鍵的單一政策條件值**  
在下列範例中，該政策會拒絕請求，其中請求中的 `aws:TagKeys` 值不包含字首 **key1**。請求內容可以包含多個值，但由於使用了 `ForAllValues` 條件集運算子，請求內容中的所有標籤索引鍵值都必須以字首 **key1** 開頭。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": "key1*"
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key2:audit</pre>  | **相符** | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。  | **相符** | 

**Example 拒絕多值內容索引鍵的多個政策條件值**  
在下列範例中，該政策會拒絕請求，其中請求中的 `aws:TagKeys` 值不包含字首 **key1** 或 **key2**。請求內容可以包含多個值，但由於使用了 `ForAllValues` 條件集運算子，請求內容中的所有標籤索引鍵值都必須以字首 **key1** 或 **key2** 開頭。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": [
            "key1*",
            "key2*"
          ]
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key2:audit</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key3:legal</pre>  | **相符**  | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。  | **相符** | 

## 範例：使用條件集運算子 ForAnyValue 拒絕政策
<a name="reference_policies_condition_examples-multi-valued-context-keys-2"></a>

如果使用政策中指定的其中一個標籤索引鍵 (`environment` 或 `webserver`) 標記任何快照，下列以身分為基礎的政策範例將拒絕建立 EC2 執行個體磁碟區的快照。此政策包含具有內容索引鍵 `aws:TagKeys` 的 `ForAnyValue` 集運算子，因為請求內容索引鍵可以包含多值。如果您的標記請求包含政策中指定的任何一個標籤索引鍵值，`aws:TagKeys` 內容索引鍵將傳回 true 以調用拒絕政策效果。

**重要**  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:CreateSnapshots"
      ],
      "Resource": "arn:aws:ec2:us-west-2::snapshot/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "webserver"
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – webserver</pre>  | **相符** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – webserver<br />  – test</pre>  |  **相符** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – test</pre>  | **沒有相符項目** 可能由其他陳述式允許。 | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。  | **沒有相符項目** 可能由其他陳述式允許。  | 

# 單值內容索引鍵政策範例
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

下列一組政策範例示範如何使用單值內容索引鍵建立政策條件。

## 範例：具有單值內容索引鍵的多個條件區塊
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

當條件區塊具有多個條件時，每個條件都有單一內容索引鍵，所有內容索引鍵都必須解析為 true 才能調用所需的 `Allow` 或 `Deny` 效果。當您使用否定相符條件運算子時，會反轉條件值的評估邏輯。

下列範例可讓使用者建立 EC2 磁碟區，並在磁碟區建立期間將標籤套用至磁碟區。請求內容必須包含內容索引鍵 `aws:RequestTag/project` 的值，以及內容索引鍵 `aws:ResourceTag/environment` 的值可以是生產以外的任何值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/project": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

請求內容必須包含專案標籤值，且無法為生產資源建立以調用 `Allow` 效果。下列 EC2 磁碟區已成功建立，因為專案名稱為 `Feature3`，資源標籤為 `QA`。

```
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=project,Value=Feature3},{Key=environment,Value=QA}]'
```

## 範例：具有多個單值內容索引鍵和值的一個條件區塊
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

當條件區塊包含多個內容索引鍵，且每個內容索引鍵都具有多個值時，每個內容索引鍵都必須解析為 true，以便至少一個金鑰值能夠調用所需的 `Allow` 或 `Deny` 效果。當您使用否定相符條件運算子時，會反轉內容索引鍵值的評估邏輯。

下列範例可讓使用者在 Amazon Elastic Container Service 叢集上啟動和執行任務。
+ 對於 `aws:RequestTag/environment` 內容索引鍵 **AND**，請求內容必須包含 `production` **OR** `prod-backup`。
+ `ecs:cluster` 內容索引鍵確保任務在 `default1` **OR** `default2` ARN ECS 叢集上執行。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:RunTask",
        "ecs:StartTask"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": [
            "production",
            "prod-backup"
          ]
        },
        "ArnEquals": {
          "ecs:cluster": [
            "arn:aws:ecs:us-east-1:111122223333:cluster/default1",
            "arn:aws:ecs:us-east-1:111122223333:cluster/default2"
          ]
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default1</pre>  | 匹配 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:prod-backup<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 匹配 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: webserver:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 無相符項目 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  |  請求內容中沒有 `aws:RequestTag`。 <pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 無相符項目 | 