本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CloudFormation 挂钩概念
以下术语和概念对你理解和使用 CloudFormation Hooks 至关重要。
Hook
Hook 包含在 CloudFormation 创建、更新或删除堆栈或特定资源之前立即调用的代码。它也可以在创建更改集操作期间调用。Hooks 可以检查即将置备的 CloudFormation 模板、资源或变更集。此外,可以在 Cloud Control API 创建、更新或删除特定资源之前立即调用 Hook。
如果 Hook 发现任何不符合 Hook 逻辑中定义的组织准则的配置,则您可以选择向WARN用户或FAIL CloudFormation 阻止配置资源。
挂钩具有以下特征:
-
主动验证 — 通过在创建、更新或删除不合规资源之前识别出这些资源,从而降低风险、运营开销和成本。
-
自动强制执行 — 在您的中提供强制执行 AWS 账户 ,以防止由配置不合规的资源。 CloudFormation
故障模式
你的 Hook 逻辑可以返回成功或失败。成功响应将允许操作继续。不合规的资源出现故障可能会导致以下结果:
-
FAIL— 停止配置操作。 -
WARN— 允许继续配置并显示警告消息。
在WARN模式下创建 Hook 是在不影响堆栈操作的情况下监控 Hook 行为的有效方法。首先,在WARN模式下激活 Hook 以了解哪些操作会受到影响。评估了潜在影响后,您可以将挂钩切换到FAIL模式以开始防止不合规的操作。
钩住目标
挂钩目标指定挂钩将评估的操作。这些操作可以是:
-
CloudFormation (
RESOURCE) 支持的资源 -
堆栈模板 (
STACK) -
零钱套装 (
CHANGE_SET) -
云控制 API 支持的资源 (
CLOUD_CONTROL)
您可以定义一个或多个目标,这些目标指定 Hook 将评估的最广泛的操作。例如,您可以创作一个 Hook 定位RESOURCE以定位所有 AWS 资源并STACK定位所有堆栈模板。
目标动作
目标操作定义了将调用 Hook 的特定操作(CREATEUPDATE、或DELETE)。对于RESOURCESTACK、和CLOUD_CONTROL目标,所有目标操作都适用。对于CHANGE_SET目标,只有CREATE操作才适用。
Annotations
GetHookResult响应可以返回注释,为每个评估的资源提供详细的合规性检查结果和补救指导。有关 API 注解结构的详细信息,请参阅 AWS CloudFormation API 参考中的注解。有关查看这些验证结果的说明,请参阅查看 Hook 的调用 CloudFormation 结果。
通过在配置挂钩时指定自己的 KMS 密钥,您可以根据需要对敏感合规性信息的注释进行加密。有关更多信息,请参阅 挂钩配置架构语法参考。有关设置在为 Hooks 指定 KMS 密钥时所需的密钥策略的信息,请参阅AWS KMS 用于加密静态的 CloudFormation Hook 结果的密钥策略和权限。
重要
请注意,指定客户托管密钥的KmsKeyId选项目前仅在您使用配置挂钩时可用。 AWS CLI
钩子处理器
对于自定义 Hook,这是处理评估的代码。它与目标调用点和目标操作相关联,后者标记 Hook 运行的确切点。你编写处理程序来托管这些特定点的逻辑。例如,带有PRE目标操作的目标调用CREATE点会生成一个 preCreate Hook 处理程序。当匹配的目标调用点和服务正在执行关联的目标操作时,Hook 处理程序中的代码就会运行。
有效值:(preCreate| preUpdate |preDelete)
重要
导致状态为的堆栈操作UpdateCleanup不会调用 Hook。例如,在以下两个场景中,不会调用 Hook 的preDelete处理程序:
-
从模板中移除一个资源后,堆栈即会更新。
-
更新类型为替换的资源被删除。
超时和重试限制
Hook 每次调用的超时限制为 30 秒,重试次数限制为 3 次。如果调用超过超时时间,我们将返回一条错误消息,指出 Hook 执行已超时。第三次重试后,将 Hook 执行 CloudFormation 标记为失败。