

# Amazon ECS Events
<a name="ecs_cwe_events"></a>

Amazon ECS 跟踪每个任务和服务的状态。如果任务或服务的状态发生更改，则会生成事件并将其发送到 Amazon EventBridge。这些事件归类为任务状态更改事件和服务操作事件。以下部分中更详细地介绍了这些事件及可能原因。

Amazon ECS 生成以下类型的事件并将其发送到 EventBridge：
+ 容器实例状态更改事件
+ 任务状态更改
+ 部署状态更改
+ 服务操作

**注意**  
Amazon ECS 将来可能会添加其他事件类型、源和详细信息。如果您以代码方式对事件 JSON 数据反序列化，请确保应用程序已准备好处理未知属性，以避免在增加这些附加属性时出现问题。

在某些情况下，将为同一活动生成多个事件。例如，在容器实例上启动任务时，将为新任务生成任务状态更改事件。生成容器实例状态更改事件以说明容器实例上的可用资源（例如 CPU、内存和可用端口）的更改。同样，如果终止容器实例，将为容器实例、容器代理连接状态以及在容器实例上运行的每个任务生成事件。

容器状态更改和任务状态更改事件包含两个 `version` 字段：一个字段在事件的主体中，一个字段在事件的 `detail` 对象中。下面介绍了这两个字段之间的差异：
+ 对于所有事件，事件主体中的 `version` 字段设为 `0`。有关 EventBridge 参数的更多信息，请参阅《Amazon EventBridge 用户指南》**中的 [AWS service event metadata](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html)。
+ 事件的 `detail` 对象中的 `version` 字段描述了关联资源的版本。当资源状态发生更改时，此版本会递增。由于可多次发送事件，因此您可以使用该字段来确定重复事件。重复事件在 `detail` 对象中具有相同版本。如果您用 EventBridge 复制 Amazon ECS 容器实例和任务状态，则可比较 Amazon ECS API 所报告的资源版本与资源的 EventBridge 事件中报告的版本（在 `detail` 对象中），以便验证事件流中的版本是否为最新版本。

服务操作事件仅包含主体中的 `version` 字段。

服务操作事件会在 2 个不同的字段中指定服务：
+ 对于 `create-service` 由生成的事件，将在 `serviceName` 字段中指定该服务。
+ 对于 `update-service` 由生成的事件，将在 `service` 字段中指定该服务。

如果使用自动化工具处理服务事件，则需要为这两个字段编写代码。

有关如何为服务操作事件创建规则的信息，请参阅 [Amazon ECS 服务操作事件](ecs_service_events.md)。

有关如何集成 Amazon ECS 和 EventBridge 的更多信息，请参阅 [Integrating Amazon EventBridge and Amazon ECS](https://aws.amazon.com/blogs/compute/integrating-amazon-eventbridge-and-amazon-ecs/)（集成 Amazon EventBridge 和 Amazon ECS）。