Amazon CloudWatch 事件
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

事件和事件模式

Amazon CloudWatch Events 中的事件表示为 JSON 对象。有关 JSON 对象的详细信息,请参阅 RFC 7159。以下是示例事件:

Copy
{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "111122223333", "time": "2015-12-22T18:43:48Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-12345678" ], "detail": { "instance-id": "i-12345678", "state": "terminated" } }

请务必记住以下有关事件的详细信息:

  • 所有事件都具有相同的顶级字段 (上述示例中显示的字段),这些字段永远不能缺少。

  • detail 顶级字段的内容将因生成事件的服务以及所生成的事件而异。

  • 顶级 source 字段和 detail-type 字段的组合用于标识在 detail 字段中找到的字段和值。

下面描述了每个事件字段。

version

默认情况下,在所有事件中设置为 0 (零)。

id

为每个事件生成一个唯一值。在事件通过规则移到目标时以及处理事件时,这对于跟踪事件非常有用。

detail-type

source 字段组合起来标识将显示在 detail 字段中的字段和值。

source

标识发起事件的服务。从 AWS 中发起的所有事件将以“aws.”开头。客户生成的事件可具有任意值,前提是它不以“aws.”开头。建议使用 java 包名样式反向域名字符串。

account

标识 AWS 账户的 12 位数字。

time

事件时间戳,可由发起事件的服务指定。如果事件跨时间间隔,则服务可能选择报告开始时间,因此该值会明显早于实际接收事件的时间。

region

标识事件源自的 AWS 区域。

resources

此 JSON 数组包含用于标识事件中涉及的资源的 ARN。是否包含这些 ARN 由服务决定。例如,Amazon EC2 实例状态更改包含 Amazon EC2 实例 ARN,Auto Scaling 事件包含实例和 Auto Scaling 组的 ARN,而对 AWS CloudTrail 的 API 调用不包含资源 ARN。

detail

一个 JSON 对象,其内容由发起事件的服务决定。上述示例中的 detail 内容非常简单,仅为两个字段。AWS API 调用事件的 detail 对象具有约 50 个字段,可嵌套多个级别。

事件模式

规则使用事件模式来选择事件并将事件路由到目标。模式匹配或不匹配事件。事件模式表示为 JSON 对象,其结构类似于事件的结构,例如:

Copy
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ], "detail": { "state": [ "running" ] } }

请务必记住以下有关事件模式匹配的事项:

  • 要使模式匹配事件,事件必须包含模式中列出的所有字段名。字段名必须显示在具有相同嵌套结构的事件中。

  • 模式中未提及的事件的其他字段将被忽略;实际上,有一个 "*":未提及字段的 "*" 通配符。

  • 模式中每个字段的值均为一个包含一个或多个值的数组,如果数组中的任一值匹配事件中的值,则模式匹配。

  • 如果事件中的值为数组,则在模式数组与事件数组的交集不为空时,模式匹配。

  • 匹配是精确的 (逐个字符),不进行小写化或任何其他字符串标准化。

  • 要匹配的值遵循 JSON 规则:用引号引起来的字符串、数字以及不带引号的关键字 truefalsenull

  • 数字匹配在字符串表示级别进行。例如,300、300.0 和 3.0e2 不相等。

以下事件模式将匹配此页面顶部的事件。第一个模式匹配的原因是该模式中指定的实例值之一匹配事件 (且该模式未指定事件中未包含的任何附加字段)。第二个模式匹配的原因是时间中包含“已终止”状态。

Copy
{ "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-12345678", "arn:aws:ec2:us-east-1:123456789012:instance/i-abcdefgh" ] }
Copy
{ "detail": { "state": [ "terminated" ] } }

这些事件模式不匹配此页面顶部的事件。第一个模式不匹配的原因是该模式为状态指定了“待处理”值,且此值未在事件中显示。第二个模式不匹配的原因是该模式中指定的资源值未在事件中显示。

Copy
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ], "detail": { "state": [ "pending" ] } }
Copy
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1::image/ami-12345678" ] }

本页内容: