本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS CloudFormation 挂钩目标过滤器
本主题提供有关为 AWS CloudFormation Hook 配置目标过滤器的指南。您可以使用目标过滤器来更精细地控制何时以及在哪些资源上调用 Hook。您可以配置过滤器,从简单的资源类型定位到更复杂的资源类型、操作和调用点组合。
要在 Hooks 配置中将一个或多个堆栈名称指定为过滤器,请在下方添加一个TargetFilters密钥HookConfiguration。
TargetFilters支持以下属性。
Actions-
一个字符串数组,用于指定要定位的操作。有关示例,请参阅示例 1:基本目标过滤器。
有效值:
CREATE|UPDATE|DELETE注意
对于
RESOURCESTACK、和CLOUD_CONTROL目标,所有目标操作都适用。对于CHANGE_SET目标,只有CREATE操作才适用。有关更多信息,请参阅 钩住目标。 InvocationPoints-
一个字符串数组,用于指定调用指向 target。
有效值:
PRE_PROVISION TargetNames-
一个字符串数组,它指定要定位的资源类型名称,例如
AWS::S3::Bucket。目标名称支持具体的目标名称和完整的通配符匹配。有关更多信息,请参阅 使用带有 Hook 目标名称的通配符。
图案:
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$最大值:
50 Targets-
一个对象数组,它指定用于目标筛选的目标列表。
targets 数组中的每个目标都具有以下属性。
Actions-
针对指定目标的操作。
有效值:
CREATE|UPDATE|DELETE InvocationPoints-
指定目标的调用点。
有效值:
PRE_PROVISION TargetNames-
要定位的资源类型名称。
注意
不能同时包含Targets对象数组和TargetNamesActions、或InvocationPoints数组。如果要使用这三个项目和Targets,则必须将它们包含在Targets对象数组中。有关示例,请参阅示例 2:使用Targets对象数组。
目标过滤器示例
本节提供了一些示例,您可以按照这些示例为 AWS CloudFormation Hook 创建目标过滤器。
示例 1:基本目标过滤器
要创建侧重于特定资源类型的基本目标筛选器,请使用带有Actions数组的TargetFilters对象。以下目标筛选器配置将为指定的目标操作(在本例中为和DeleteSTACK操作)调用 Hook on all Create、RESOURCE和 actions。Update
{ "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus":"ENABLED", "TargetOperations": ["STACK", "RESOURCE"], "FailureMode":"WARN", "Properties":{}, "TargetFilters": { "Actions": ["Create", "Update", "Delete"] } } } }
示例 2:使用Targets对象数组
要获得更高级的过滤器,您可以使用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" } ] } } } }