跳至内容

如何在 Amazon EC2 实例更改状态时获取自定义电子邮件通知?

2 分钟阅读
0

我想在 Amazon Elastic Compute Cloud (Amazon EC2) 实例更改状态时接收电子邮件通知。

简短描述

要在 EC2 实例更改状态时接收电子邮件通知,请创建 Amazon Simple Notification Service (Amazon SNS) 主题以便向订阅的端点或客户端发送消息。然后,使用 EC2 实例状态更改通知事件类型创建 Amazon EventBridge 规则。

注意:Amazon SNSEventBridge 单独计费。

解决方法

创建自定义电子邮件通知

完成以下步骤:

  1. 创建 Amazon SNS 主题
    **注意:**对于 Type(类型),选择 Standard(标准)。
  2. 创建 SNS 主题的订阅
    **注意:**对于 Protocol(协议),选择 Email(电子邮件)。您将通过输入的电子邮件地址收到一封订阅确认电子邮件。在电子邮件中选择 Confirm subscription(确认订阅)。
  3. 打开 EventBridge 控制台
  4. 选择 Create rule(创建规则)。或者在 Events(事件)导航窗格中,选择 Rules(规则),然后选择 Create rule(创建规则)。
  5. 输入规则的 Name(名称)和 Description(描述)。
  6. 保留默认的 Event bus(事件总线)和 Rule type(规则类型)设置,然后选择 Next(下一步)。
  7. Event pattern(事件模式)中,将 Event source(事件源)保留为 AWS services(AWS 服务)。对于 AWS service(AWS 服务),选择 EC2
  8. 对于 Event type(事件类型),选择 EC2 Instance State-change Notification(EC2 实例状态更改通知)。
  9. 保留 Any state(任何状态)和 Any instance(任何实例)的默认设置,然后选择 Next(下一步)。
  10. 对于 Select a target(选择目标),选择 SNS topic(SNS 主题)。
  11. 对于 Topic(主题),选择您创建的主题,然后选择 Next(下一步)。
  12. 展开 Additional settings(其他设置)部分。对于 Configure target input(配置目标输入),选择 Input transformer(输入转换器)。
  13. 选择 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"
    }
}
  1. 选择 Next(下一步)。
  2. 将可选 Tags(标签)留空,然后选择 Next(下一步)。
  3. 选择 Create rule(创建规则)。
    **注意:**您创建的规则仅适用于您创建该规则的 AWS 区域。每次实例更改状态时,该规则都会生成电子邮件通知。

测试您的自定义电子邮件通知

要测试规则,请启动和停止实例

**注意:**当停止或启动某个实例时,该实例的公有 IP 地址将发生变化。最佳做法是使用弹性 IP 地址(而不是公有 IP 地址)将外部流量路由到您的实例。如果您使用的是 Amazon Route 53,则在公有 IP 地址发生变化时可能需要更新 Route 53 DNS 记录

在停止并启动实例之前,请执行以下操作:

AWS 官方已更新 7 个月前