如何使用 CloudWatch Events 接收 EC2 实例的计划事件通知?

上次更新时间:2019 年 5 月 8 日

当我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例有计划事件时,我希望接收来自 Amazon CloudWatch Events 的通知。该如何操作?

简短描述

您可以创建 CloudWatch Events 规则以触发 EC2 实例的计划事件。然后,您可以为与您的事件模式匹配的事件配置 Amazon Simple Notification Service (Amazon SNS) 通知。您还可以通过 AWS Lambda 配置进一步处理。

解决方法

重要提示:在开始之前,请确保您有适用于通知的 SNS 主题。如果您没有,请创建新的 SNS 主题并订阅此主题

通过 CloudWatch 控制台创建针对事件触发的 CloudWatch Events 规则

1.    对于事件模式,请选择生成事件模式以按服务匹配事件

2.    对于服务名称,请选择运行状况

3.    对于事件类型,请选择特定运行状况事件

4.    依次选择特定服务和 EC2

5.    依次选择特定事件类型类别和 scheduledChange

6.    (可选)要接收关于某个特定实例(而非所有实例)的通知,请选择特定资源,然后选择该实例的 ID。

这些设置会创建以下事件模式。

注意:您还可以通过复制和粘贴以下代码作为您的规则来创建事件模式。选择创建规则之后,请在事件模式预览部分选择编辑。插入以下代码,选择保存,然后继续创建 SNS 目标。

{
  "source": [
    "aws.health"
  ],
  "detail-type": [
    "AWS Health Event"
  ],
  "detail": {
    "service": [
      "EC2"
    ],
    "eventTypeCategory": [
      "scheduledChange"
    ]
  }
}

选择您的 SNS 目标:

1.    选择添加目标

2.    对于目标,请选择 SNS 主题

3.    对于主题,请选择您用于接收通知的 SNS 主题。

4.    选择配置详细信息

5.    根据需要配置其他设置,例如借助 Lambda 进一步处理事件。

6.    选择创建规则

注意:以下示例显示的是计划事件推送到 CloudWatch Events 时的样子。

{
  "version": "0",
  "id": "7fb65329-1628-4cf3-a740-95fg457h1402",
  "detail-type": "AWS Health Event",
  "source": "aws.health",
  "account": "123456789101",
  "time": "2016-06-05T06:27:57Z",
  "region": "us-east-1",
  "resources": ["i-12345678"],
  "detail": {
    "eventArn": "arn:aws:health:region::event/id",
    "service": "EC2",
    "eventTypeCode": "AWS_EC2_DEDICATED_HOST_NETWORK_MAINTENANCE_SCHEDULED",
    "eventTypeCategory": "scheduledChange",
    "startTime": "Sat, 05 Jun 2016 15:10:09 GMT",
    "eventDescription": [{
      "language": "en_US",
      "latestDescription": "A description of the event will be provided here"
    }],
    "affectedEntities": [{
      "entityValue": "i-12345678",
      "tags": {
        "stage": "prod",
        "app": "my-app"
      }
    }]
  }
}

这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?