当您的自动扩展组扩展时获取 Amazon SNS 通知 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

当您的自动扩展组扩展时获取 Amazon SNS 通知

当 Amazon EC2 自动扩展启动或终止自动扩展组中的 EC2 实例时,您会收到通知。您可以使用 Amazon Simple Notification Service (Amazon SNS) 管理通知。

Amazon SNS 协调并管理传输,或将通知发送到订阅客户端或终端节点。Amazon SNS 提供多种通知选项,包括以 HTTP 或 HTTPS POST 以及电子邮件(SMTP,纯文本或 JSON 格式)的形式传输通知,或将通知作为消息发布到 Amazon SQS 队列,这使您能够以编程方式处理这些通知。有关更多信息,请参阅 。Amazon Simple Notification Service 开发人员指南

例如,如果您将 Auto Scaling 组配置为使用autoscaling: EC2_INSTANCE_TERMINATE通知类型,并且 Auto Scaling 组终止了某个实例,则它会发送电子邮件通知。该电子邮件包含已终止实例的详细信息,如实例 ID 以及终止该实例的原因。

通知有助于设计事件驱动型应用程序。如果您使用通知来检查资源是否进入所需状态,则可以不再使用轮询,并且您不会遇到RequestLimitExceeded错误,这有时是由轮询引起的。

Amazon为您提供了各种可用于发送通知的工具。或者,您可以使用 EventBridge 和 Amazon SNS 在您的 Auto Scaling 组启动或终止实例时发送通知。在 EventBridge 中,该规则描述向您通知的事件。Amazon SNS 中,该主题描述您接收的通知的类型。使用此选项,您可以决定某些事件是否应该触发 Lambda 函数。有关更多信息,请参阅 使用 Amazon EC2 Auto Scaling 与 EventBridge 结合使用

SNS 通知

Amazon EC2 Auto Scaling 支持在发生以下事件时发送 Amazon SNS 通知。

活动 说明

autoscaling:EC2_INSTANCE_LAUNCH

实例启动成功

autoscaling:EC2_INSTANCE_LAUNCH_ERROR

实例启动失败

autoscaling:EC2_INSTANCE_TERMINATE

实例终止成功

autoscaling:EC2_INSTANCE_TERMINATE_ERROR

实例终止失败

消息包含以下信息:

  • Event— 活动。

  • AccountId— Amazon Web Services 账户 ID。

  • AutoScalingGroupName— Auto Scaling 组的名称。

  • AutoScalingGroupARN— Auto Scaling 组的 ARN。

  • EC2InstanceId— EC2 实例的 ID。

例如:

Service: AWS Auto Scaling Time: 2016-09-30T19:00:36.414Z RequestId: 4e6156f4-a9e2-4bda-a7fd-33f2ae528958 Event: autoscaling:EC2_INSTANCE_LAUNCH AccountId: 123456789012 AutoScalingGroupName: my-asg AutoScalingGroupARN: arn:aws:autoscaling:region:123456789012:autoScalingGroup... ActivityId: 4e6156f4-a9e2-4bda-a7fd-33f2ae528958 Description: Launching a new EC2 instance: i-0598c7d356eba48d7 Cause: At 2016-09-30T18:59:38Z a user request update of AutoScalingGroup constraints to ... StartTime: 2016-09-30T19:00:04.445Z EndTime: 2016-09-30T19:00:36.414Z StatusCode: InProgress StatusMessage: Progress: 50 EC2InstanceId: i-0598c7d356eba48d7 Details: {"Subnet ID":"subnet-id","Availability Zone":"zone"}

为 Amazon EC2 Auto Scaling 配置 Amazon SNS 通知

要使用 Amazon SNS 发送电子邮件通知,必须先创建主题,然后用您的电子邮件地址订阅该主题。

创建 Amazon SNS 主题

SNS 主题是一个逻辑接入点,即 Auto Scaling 组用来发送通知的通信通道。您可通过为主题指定名称来创建主题。

在创建主题名称时,该名称必须满足以下要求:

  • 介于 1 到 256 个字符之间

  • 包含大写和小写 ASCII 字母、数字、下划线或连字符

有关更多信息,请参阅 。创建 Amazon SNS 主题中的Amazon Simple Notification Service 开发人员指南

订阅 Amazon SNS 主题

要接收 Auto Scaling 组发送到该主题的通知,必须让一个终端节点订阅该主题。在此过程中,终端节点,指定要用来接收来自 Amazon EC2 Auto Scaling 的通知的电子邮件地址。

有关更多信息,请参阅 。订阅 Amazon SNS 主题中的Amazon Simple Notification Service 开发人员指南

确认您的 Amazon SNS 订阅

Amazon SNS 会向您在上一步骤中指定的电子邮件地址发送确认电子邮件。

请确保打开电子邮件,选择链接以确认订阅,然后再继续执行下一步。

您将收到一封确认消息Amazon。Amazon SNS 现已配置为接收通知并将通知以电子邮件形式发送到您指定的电子邮件地址。

配置 Auto Scaling 组以发送通知

您可以配置 Auto Scaling 组,以便在发生扩展事件(例如,启动或终止实例)时向 Amazon SNS 发送通知。Amazon SNS 将向您指定的电子邮件地址发送通知,通知中包含有关实例的信息。

为 Auto Scaling 组配置 Amazon SNS 通知(console)

  1. 打开 Amazon EC2 Auto Scaling 控制台,网址为:https://console.aws.amazon.com/ec2autoscaling/

  2. 选中 Auto Scaling 组旁边的复选框。

    将在页面底部打开一个拆分窗格,其中显示有关所选组的信息。

  3. 在存储库的活动选项卡上,选择活动通知创建通知

  4. Create notifications 窗格上,执行以下操作:

    1. 适用于SNS 主题下,选择您的 SNS 主题。

    2. 适用于事件类型下,选择要发送通知的事件。

    3. 选择创建

要为 Auto Scaling 组配置 Amazon SNS 通知(Amazon CLI)

使用以下 put-notification-configuration 命令。

aws autoscaling put-notification-configuration --auto-scaling-group-name my-asg --topic-arn arn --notification-types "autoscaling:EC2_INSTANCE_LAUNCH" "autoscaling:EC2_INSTANCE_TERMINATE"

测试通知

要为启动事件生成通知,请通过将 Auto Scaling 组的所需容量增加 1 来更新 Auto Scaling 组。您将在实例启动后的几分钟内收到通知。

更改所需容量(console)

  1. 打开 Amazon EC2 Auto Scaling 控制台,网址为:https://console.aws.amazon.com/ec2autoscaling/

  2. 选中 Auto Scaling 组旁边的复选框。

    将在 Auto Scaling groups (Auto Scaling 组) 页面底部打开一个拆分窗格,其中显示有关所选组的信息。

  3. Details (详细信息) 选项卡上,选择 Group details (组详细信息)Edit (编辑)

  4. 对于 Desired capacity (所需容量),将当前值增加 1。如果此值超过 Maximum capacity (最大容量),则还必须将 Maximum capacity (最大容量) 的值增加 1。

  5. 选择 Update

  6. 在数分钟后,您将收到事件的通知。如果您不需要您为此测试启动的其他实例,则可以将 Desired capacity (所需容量) 减少 1。在数分钟后,您将收到事件的通知。

删除通知配置

如果您的 Amazon EC2 Auto Scaling 通知配置不再被使用,您可以删除该配置。

删除 Amazon EC2 Auto Scaling 通知配置(console)

  1. 打开 Amazon EC2 Auto Scaling 控制台,网址为:https://console.aws.amazon.com/ec2autoscaling/

  2. 选择 Auto Scaling 组。

  3. 在存储库的活动选项卡上,选中要删除的通知旁边的复选框,然后选择操作Delete

要删除 Amazon EC2 Auto Scaling 通知配置 (Amazon CLI)

使用以下 delete-notification-configuration 命令。

aws autoscaling delete-notification-configuration --auto-scaling-group-name my-asg --topic-arn arn

有关删除 Amazon SNS 主题以及与您的 Auto Scaling 组关联的所有订阅的信息,请参阅删除 Amazon SNS 订阅和主题中的Amazon Simple Notification Service 开发人员指南