我想在 Amazon Elastic Compute Cloud (Amazon EC2) 实例更改状态时接收电子邮件通知。
简短描述
要在 EC2 实例更改状态时接收电子邮件通知,请创建 Amazon Simple Notification Service (Amazon SNS) 主题以便向订阅的端点或客户端发送消息。然后,使用 EC2 实例状态更改通知事件类型创建 Amazon EventBridge 规则。
注意:Amazon SNS 和 EventBridge 单独计费。
解决方法
创建自定义电子邮件通知
完成以下步骤:
- 创建 Amazon SNS 主题。
**注意:**对于 Type(类型),选择 Standard(标准)。
- 创建 SNS 主题的订阅。
**注意:**对于 Protocol(协议),选择 Email(电子邮件)。您将通过输入的电子邮件地址收到一封订阅确认电子邮件。在电子邮件中选择 Confirm subscription(确认订阅)。
- 打开 EventBridge 控制台。
- 选择 Create rule(创建规则)。或者在 Events(事件)导航窗格中,选择 Rules(规则),然后选择 Create rule(创建规则)。
- 输入规则的 Name(名称)和 Description(描述)。
- 保留默认的 Event bus(事件总线)和 Rule type(规则类型)设置,然后选择 Next(下一步)。
- 在 Event pattern(事件模式)中,将 Event source(事件源)保留为 AWS services(AWS 服务)。对于 AWS service(AWS 服务),选择 EC2。
- 对于 Event type(事件类型),选择 EC2 Instance State-change Notification(EC2 实例状态更改通知)。
- 保留 Any state(任何状态)和 Any instance(任何实例)的默认设置,然后选择 Next(下一步)。
- 对于 Select a target(选择目标),选择 SNS topic(SNS 主题)。
- 对于 Topic(主题),选择您创建的主题,然后选择 Next(下一步)。
- 展开 Additional settings(其他设置)部分。对于 Configure target input(配置目标输入),选择 Input transformer(输入转换器)。
- 选择 Configure input transformer(配置输入转换器),然后为 Input path(输入路径)和 Template(模板)输入以下文本。
输入路径:
{
"instance-id": "$.detail.instance-id",
"state": "$.detail.state",
"time": "$.time",
"region": "$.region",
"account": "$.account"
}
模板:
"At <time>, the status of your EC2 instance <instance-id> on account <account> in the AWS Region <region> has changed to <state>."
**注意:**有关输入转换字段的更多信息,请参阅 Amazon EventBridge 输入转换。输入转换器只能使用数据事件中存在的字段。例如,上述配置捕获事件的以下事件模式显示了进入 Pending(待处理)状态的实例:
{
"id": "7bf73129-1428-4cd3-a780-95db273d1602",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "123456789012",
"time": "2021-11-11T21:29:54Z",
"region": "us-east-1",
"resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"],
"detail": {
"instance-id": "i-1234567890abcdef0",
"state": "pending"
}
}
- 选择 Next(下一步)。
- 将可选 Tags(标签)留空,然后选择 Next(下一步)。
- 选择 Create rule(创建规则)。
**注意:**您创建的规则仅适用于您创建该规则的 AWS 区域。每次实例更改状态时,该规则都会生成电子邮件通知。
测试您的自定义电子邮件通知
要测试规则,请启动和停止实例。
**注意:**当停止或启动某个实例时,该实例的公有 IP 地址将发生变化。最佳做法是使用弹性 IP 地址(而不是公有 IP 地址)将外部流量路由到您的实例。如果您使用的是 Amazon Route 53,则在公有 IP 地址发生变化时可能需要更新 Route 53 DNS 记录。
在停止并启动实例之前,请执行以下操作: