使用 Amazon EventBridge 管理 Amazon CloudFormation 事件 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon EventBridge 管理 Amazon CloudFormation 事件

Amazon EventBridge 是无服务器服务,使用事件将应用程序组件连接在一起,可让您更轻松地构建可扩展的事件驱动型应用程序。事件驱动型架构是一种构建松耦合软件系统的风格,这些系统通过发出和响应事件来协同工作。事件代表资源或环境中的变化。

与许多 Amazon 服务一样,Amazon CloudFormation 会生成事件并将其发送到 EventBridge 的默认事件总线。(默认事件总线会在每个 Amazon 账户中自动预置。) 事件总线是接收事件并将其传送到零个或多个目的地或目标的路由器。为事件总线指定的规则会在事件到达时进行评估。每条规则都会检查事件是否与规则的事件模式相匹配。如果事件确实匹配,事件总线会将事件发送到指定的目标。

Amazon 服务将事件发送到 EventBridge 默认事件总线。如果事件与规则的事件模式匹配,EventBridge 会将事件发送到该规则指定的目标。

CloudFormation 事件

只要对某个堆栈执行创建、更新、删除或偏差检测操作时,Amazon CloudFormation 就会向 EventBridge 发送事件。Amazon CloudFormation 还会向 EventBridge 发送事件,以更改堆栈集和堆栈集实例的状态。您可以使用 EventBridge 规则将事件路由到定义的目标。这些事件会保证传送,但可能会不按顺序传送。

由于 CloudFormation 事件代表对堆栈或堆栈集及其资源的更改,因此您可以使用它们来启动与相应事件关联的工作流。例如:

  • 在通过 Amazon CloudFormation 预置的所有资源上创建堆栈或堆栈集特定标签。

  • 在 CloudFormation 堆栈或堆栈集与 Amazon WorkSpaces Application Manager(Amazon WAM)之间建立关联。

  • 为创建的堆栈或堆栈集指定与 AppRegistry 的关联。

以下事件由 CloudFormation 生成并发送到 EventBridge 中的默认事件总线。有关更多信息,请参阅 Amazon CloudFormation 事件详细信息参考

事件类型 说明

资源状态更改

在堆栈上执行的任何更新都会更改底层资源属性。

有关受支持的 Amazon 资源类型的完整列表,请参阅 Amazon 资源和属性类型参考

堆栈状态更改

表示对给定堆栈的状态更改。

有关代码详细信息,请参阅 堆栈状态代码

偏差检测状态更改

表示用户在给定堆栈上启动的偏差检测更新。

有关支持偏差检测的完全可变和不可变类型的完整列表,请参阅 资源类型支持

StackSet 状态更改

表示对给定堆栈集的状态更改。

StackSet 堆栈实例状态更改

表示特定 StackSet 堆栈实例的状态更改。

有关代码详细信息,请参阅 堆栈实例状态代码

StackSet 操作状态

表示对给定 StackSet 操作的状态更改。

有关代码详细信息,请参阅 StackSets 状态代码

使用 EventBridge 规则发送 Amazon CloudFormation 事件

要让 EventBridge 默认事件总线将 Amazon CloudFormation 事件发送到目标,您必须创建一条规则,其中包含与所需 Amazon CloudFormation 事件中的数据匹配的事件模式。

创建规则包含以下一般步骤:

  1. 为指定的规则创建事件模式:

    • Amazon CloudFormation 是规则评估的事件的来源。

    • (可选):要匹配的任何其他事件数据。

    有关更多信息,请参阅 创建 Amazon CloudFormation 事件的事件模式

  2. (可选):创建一个输入转换器,用于在 EventBridge 将信息传递给规则目标之前,自定义事件中的数据。

    有关更多信息,请参阅《EventBridge 用户指南》中的输入转换

  3. 指定要 EventBridge 向其发送与事件模式匹配的事件的目标。

    目标可以是其他 Amazon 服务、软件即服务(SaaS)应用程序、API 目标或其他自定义端点。有关更多信息,请参阅《EventBridge 用户指南》中的目标

有关创建事件总线规则的全面说明,请参阅《EventBridge 用户指南》中的创建对事件作出反应的规则

创建 Amazon CloudFormation 事件的事件模式

Amazon CloudFormation 将事件传送到默认事件总线时,EventBridge 使用为每条规则定义的事件模式来确定是否应将事件传送到规则的目标。事件模式与所需 Amazon CloudFormation 事件中的数据相匹配。每个事件模式是一个 JSON 对象,其中包含:

  • 标识发送事件的服务的 source 属性。对于 Amazon CloudFormation 事件,来源是 aws.cloudformation

  • (可选):包含要匹配的事件类型数组的 detail-type 属性。

  • (可选):包含要匹配的其他事件数据的 detail 属性。

    例如,堆栈 ID、涉及的资源、各种资源的状态以及与特定类型事件相关的其他数据。

例如,以下事件模式与所有资源状态更改事件相匹配:

{ "source": ["aws.cloudformation"], "detail-type": ["CloudFormation Resource Status Change"] }

以下事件模式使用事件详细信息数据,仅匹配 CloudFormation 创建新的 AWS::S3::BucketAWS::SNS::Topic 资源的资源状态更改事件:

{ "source": ["aws.cloudformation"], "detail-type": ["CloudFormation Resource Status Change"], "detail": { "status-details": { "status": ["CREATE_COMPLETE"] }, "resource-type": ["AWS::S3::Bucket", "AWS::SNS::Topic"] } }

有关写入事件模式的更多信息,请参阅《EventBridge 用户指南》中的事件模式

在 EventBridge 中测试 Amazon CloudFormation 事件的事件模式

您可以使用 EventBridge 沙盒快速定义和测试事件模式,而无需完成创建或编辑规则的大型过程。您可以使用沙盒定义事件模式,使用示例事件来确认该模式是否与所需事件匹配。EventBridge 让您可以直接从沙盒中使用该事件模式创建新规则。

有关更多信息,请参阅《EventBridge 用户指南》中的使用 EventBridge 沙盒测试事件模式

Amazon EventBridge 权限

Amazon CloudFormation 不需要任何其他权限即可向 Amazon EventBridge 传输事件。这些事件包含已通过 CloudFormation 的 API 操作获得的信息。

您指定的目标可能需要特定的权限或配置。有关为目标使用特定服务的更多详细信息,请参阅《Amazon EventBridge 用户指南》中的 Amazon EventBridge 目标

其他 EventBridge 资源

有关如何使用 EventBridge 来处理和管理事件的更多信息,请参阅《Amazon EventBridge 用户指南》中的以下主题。

  • 有关事件总线工作原理的详细信息,请参阅 Amazon EventBridge 事件总线

  • 有关事件结构的信息,请参阅事件

  • 有关构造事件模式以供 EventBridge 在将事件与规则进行匹配时使用的信息,请参阅事件模式

  • 有关创建规则以指定 EventBridge 所处理事件的信息,请参阅规则

  • 有关指定 EventBridge 将匹配的事件发送到哪些服务或其他目的地的信息,请参阅目标