

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# CloudFormation 挂钩目标过滤器
<a name="hooks-target-filtering"></a>

本主题提供有关为 CloudFormation Hook 配置目标过滤器的指南。您可以使用目标过滤器来更精细地控制何时以及在哪些资源上调用 Hook。您可以配置过滤器，从简单的资源类型定位到更复杂的资源类型、操作和调用点组合。

要在 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>
一个字符串数组，用于指定调用指向 target。  
*有效值*：`PRE_PROVISION`

`TargetNames`  <a name="hooks-targetfilters-targetnames"></a>
一个字符串数组，它指定要定位的资源类型名称，例如`AWS::S3::Bucket`。  
目标名称支持具体的目标名称和完整的通配符匹配。有关更多信息，请参阅 [使用带有 Hook 目标名称的通配符](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>
一个对象数组，它指定用于目标筛选的目标列表。  
targets 数组中的每个目标都具有以下属性。    
`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`对象数组和`TargetNames``Actions`、或`InvocationPoints`数组。如果要使用这三个项目和`Targets`，则必须将它们包含在`Targets`对象数组中。有关示例，请参阅[示例 2：使用`Targets`对象数组](#target-filtering-example-2)。

## 目标过滤器示例
<a name="target-filtering-examples"></a>

本节提供了一些示例，您可以按照这些示例为 CloudFormation Hook 创建目标过滤器。

### 示例 1：基本目标过滤器
<a name="target-filtering-example-1"></a>

要创建侧重于特定资源类型的基本目标筛选器，请使用带有`Actions`数组的`TargetFilters`对象。以下目标筛选器配置将为指定的目标操作（在本例中为和`Delete``STACK`操作）调用 Hook on all `Create`、`RESOURCE`和 actions。`Update`

```
{
  "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"
          }
        ]               
      }
    }
  }
}
```