

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

# CloudFormation 掛鉤目標篩選條件
<a name="hooks-target-filtering"></a>

本主題提供設定 CloudFormation Hooks 目標篩選條件的指引。您可以使用目標篩選條件來更精細地控制您的勾點被調用的時間和資源。您可以設定篩選條件，範圍從簡單的資源類型目標到更複雜的資源類型、動作和調用點組合。

若要在勾點組態中將一或多個堆疊名稱指定為篩選條件，請在 下新增`TargetFilters`金鑰`HookConfiguration`。

`TargetFilters` 支援下列屬性。

`Actions`  <a name="hooks-targetfilters-actions"></a>
指定要鎖定之動作的字串陣列。如需範例，請參閱 [範例 1：基本目標篩選條件](#target-filtering-example-1)。  
*有效值*：`CREATE` \$1 `UPDATE` \$1 `DELETE`  
對於 `RESOURCE`、 `STACK`和 `CLOUD_CONTROL`目標，所有目標動作都適用。對於`CHANGE_SET`目標，只有 `CREATE`動作適用。如需詳細資訊，請參閱[掛鉤目標](hooks-concepts.md#hook-terms-hook-target)。

`InvocationPoints`  <a name="hooks-targetfilters-invocationpoints"></a>
字串陣列，指定對目標的調用點。  
*有效值*：`PRE_PROVISION`

`TargetNames`  <a name="hooks-targetfilters-targetnames"></a>
字串陣列，指定要鎖定的資源類型名稱，例如 `AWS::S3::Bucket`。  
目標名稱支援具體的目標名稱和完整的萬用字元比對。如需詳細資訊，請參閱[使用萬用字元搭配勾點目標名稱](wildcard-hook-targets.md)。  
*模式*：`^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$`  
*上限*：`50`

`Targets`  <a name="hooks-targetfilters-targets"></a>
物件陣列，指定要用於目標篩選的目標清單。  
目標陣列中的每個目標都有下列屬性。    
`Actions`  <a name="hooks-targetfilters-targets-actions"></a>
指定目標的動作。  
*有效值*：`CREATE` \$1 `UPDATE` \$1 `DELETE`  
`InvocationPoints`  <a name="hooks-targetfilters-targets-invocationpoints"></a>
指定目標的調用點。  
*有效值*：`PRE_PROVISION`  
`TargetNames`  <a name="hooks-targetfilters-targets-targetnames"></a>
要鎖定的資源類型名稱。

**注意**  
您無法同時包含`Targets`物件陣列和 `Actions`、 `TargetNames`或 `InvocationPoints`陣列。如果您想要使用這三個項目 和 `Targets`，您必須在`Targets`物件陣列中包含它們。如需範例，請參閱 [範例 2：使用`Targets`物件陣列](#target-filtering-example-2)。

## 目標篩選條件的範例
<a name="target-filtering-examples"></a>

本節提供您可以遵循的範例，為 CloudFormation 勾點建立目標篩選條件。

### 範例 1：基本目標篩選條件
<a name="target-filtering-example-1"></a>

若要建立著重於特定資源類型的基本目標篩選條件，請使用 `TargetFilters` 物件搭配 `Actions`陣列。下列目標篩選條件組態會在指定目標操作的所有 `Create`、 `Update`和 `Delete`動作上叫用 勾點 （在此情況下為 `RESOURCE`和 `STACK`操作）。

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "TargetFilters": {
        "Actions": [
           "Create",
           "Update",
           "Delete"
        ]
      }
    }
  }
}
```

### 範例 2：使用`Targets`物件陣列
<a name="target-filtering-example-2"></a>

對於更進階的篩選條件，您可以使用`Targets`物件陣列來列出特定目標、動作和調用點組合。下列目標篩選條件組態會在 S3 儲存貯體`CREATE`和 DynamoDB 資料表上叫用 掛鉤之前和`UPDATE`動作。它同時適用於 `STACK`和 `RESOURCE`操作。

```
{
  "CloudFormationConfiguration": {
    "HookConfiguration": {
      "HookInvocationStatus": "ENABLED",
      "TargetOperations": [
        "STACK",
        "RESOURCE"
      ],
      "FailureMode": "WARN",
      "Properties": {},
      "TargetFilters": {
        "Targets": [
          {
             "TargetName": "AWS::S3::Bucket",
             "Action": "CREATE",
             "InvocationPoint": "PRE_PROVISION"
          },
          {
             "TargetName": "AWS::S3::Bucket",
             "Action": "UPDATE",
             "InvocationPoint": "PRE_PROVISION"
          },
          {
             "TargetName": "AWS::DynamoDB::Table",
             "Action": "CREATE",
             "InvocationPoint": "PRE_PROVISION"
          },
          {
             "TargetName": "AWS::DynamoDB::Table",
             "Action": "UPDATE",
             "InvocationPoint": "PRE_PROVISION"
          }
        ]               
      }
    }
  }
}
```