本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 Auto Scaling 的亚马 EC2 逊 SNS 通知选项
可以配置自动扩缩组以通知您影响应用程序的重要事件。如果使用通知,您还可以不再使用轮询,并且不会遇到有时由轮询引起的 RequestLimitExceeded
错误。
有两种方法可以接收有关 Amazon A EC2 uto Scaling 的通知:
-
Amazon Simple Notification Service:Amazon SNS 可以在自动扩缩组启动或终止实例时通知您。您只能打开或关闭 Amazon SNS 通知。有关更多信息,请参阅 亚马逊 SNS 和亚马逊 Auto Scalin EC2 g。
-
亚马逊 EventBridge — EventBridge 提供更高级的事件驱动型通知,这些通知符合指定标准,并发送到各种目标,包括 Amazon SNS。 EventBridge 还可以监控更广泛的 Auto Scaling 事件,以实现更精确的监控。有关更多信息,请参阅 使用 EventBridge 处理 Auto Scaling 事件。
您可以选择使用带有生命周期挂钩的通知,以在启动或终止期间对实例执行自定义操作。有关如何配置通知以与生命周期挂钩配合使用的更多信息,请参阅 Amazon A EC2 uto Scaling 生命周期挂钩。
亚马逊 SNS 和亚马逊 Auto Scalin EC2 g
本节介绍如何使用 Amazon SNS 监控自动扩缩组何时启动或终止实例。
例如,如果将 Auto Scaling 组配置为使用 autoscaling:
EC2_INSTANCE_TERMINATE
通知类型,并且您的 Auto Scaling 组终止了某个实例,则它会发送电子邮件通知。该电子邮件包含已终止实例的详细信息,如实例 ID 以及终止该实例的原因。
请注意,当 Amazon A EC2 uto Scaling 在组中添加或移除实例时,系统会向您发送有关这些更改的通知,每个实例只发送一条通知。但是,这些通知的发送基于尽力原则,您的实例在初始通知后仍可能失败,例如,稍后的运行状况检查失败。有关运行状况检查流程的更多信息,请参阅自动扩缩组中实例的运行状况检查。
有关 Amazon SNS 一般情况的更多信息,请参阅《Amazon Simple Notification Service Developer Guide》https://docs.amazonaws.cn/sns/latest/dg/。
内容
SNS 通知
Amazon A EC2 uto Scaling 支持在发生以下事件时发送亚马逊 SNS 通知。
事件 | 描述 |
---|---|
|
实例启动成功 |
|
实例启动失败 |
|
实例终止成功 |
|
实例终止失败 |
消息包含以下信息:
-
Event
— 事件。 -
AccountId
— 亚马逊云科技账户 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"}
Origin: AutoScalingGroup
Destination: EC2
为亚马逊 Auto Scaling 配置亚马 EC2 逊 SNS 通知
要使用 Amazon SNS 发送电子邮件通知,必须先创建一个主题,然后用您的电子邮件地址订阅该主题。
创建 Amazon SNS 主题
SNS 主题是一个逻辑接入点,即 Auto Scaling 组用来发送通知的通信通道。您可通过为主题指定名称来创建主题。
您在创建主题名称时,该名称必须满足以下要求:
-
介于 1 到 256 个字符之间
-
包含大写和小写 ASCII 字母、数字、下划线或连字符
有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的创建 Amazon SNS 主题。
订阅 Amazon SNS 主题
要接收您的 Auto Scaling 组发送到该主题的通知,必须让一个终端节点订阅该主题。在此过程中,对于 Endpoint,指定您要从中接收来自 Amazon A EC2 uto Scaling 的通知的电子邮件地址。
有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的订阅 Amazon SNS 主题。
确认您的 Amazon SNS 订阅
Amazon SNS 向在上一步骤中指定的电子邮件地址发送确认电子邮件。
确保打开并选择链接以确认订阅,然后再继续执行下一步。
您将收到来自的确认消息。 Amazon Amazon SNS 现已配置为接收通知并以电子邮件形式将通知发送到指定的电子邮件地址。
配置 Auto Scaling 组以发送通知
您可以配置 Auto Scaling 组,以便在发生扩展事件(例如,启动实例或终止实例)时向 Amazon SNS 发送通知。Amazon SNS 向您指定的电子邮件地址发送通知,通知中包含有关实例的信息。
为 Auto Scaling 组配置 Amazon SNS 通知(控制台)
在上打开亚马逊 EC2 控制台 https://console.aws.amazon.com/ec2/
,然后从导航窗格中选择 A uto Scaling Gro ups。 -
选中您的自动扩缩组旁边的复选框。
将在页面底部打开一个拆分窗格,其中显示有关所选组的信息。
-
在活动选项卡上,选择活动通知、创建通知。
-
在 Create notifications 窗格上,执行以下操作:
-
对于 SNS 主题,选择您的 SNS 主题。
-
对于事件类型,选择要发送通知的事件。
-
选择创建。
-
为 Auto Scaling 组配置 Amazon SNS 通知 (Amazon CLI)
使用以下 put-notification-configuration
aws autoscaling put-notification-configuration --auto-scaling-group-name
my-asg
--topic-arnarn
--notification-types "autoscaling:EC2_INSTANCE_LAUNCH" "autoscaling:EC2_INSTANCE_TERMINATE"
测试通知
要为启动事件生成通知,请通过将 Auto Scaling 组的所需容量增加 1 来更新 Auto Scaling 组。您将在实例启动后的几分钟内收到通知。
更改所需容量(控制台)
在上打开亚马逊 EC2 控制台 https://console.aws.amazon.com/ec2/
,然后从导航窗格中选择 A uto Scaling Gro ups。 -
选中您的 Auto Scaling 组旁边的复选框。
将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格,其中显示有关所选组的信息。
-
在 Details(详细信息)选项卡上,选择 Group details(组详细信息)、Edit (编辑)。
-
对于 Desired capacity (所需容量),将当前值增加 1。如果此值超过 Maximum capacity (最大容量),则还必须将 Maximum capacity (最大容量) 的值增加 1。
-
选择更新。
-
在数分钟后,您将收到事件的通知。如果您不需要您为此测试启动的其他实例,则可以将 Desired capacity (所需容量) 减少 1。在数分钟后,您将收到事件的通知。
删除通知配置
如果不再使用您的 Amazon A EC2 uto Scaling 通知配置,则可以将其删除。
删除 Amazon A EC2 uto Scaling 通知配置(控制台)
在上打开亚马逊 EC2 控制台 https://console.aws.amazon.com/ec2/
,然后从导航窗格中选择 A uto Scaling Gro ups。 -
选择您的 Auto Scaling 组。
-
在活动选项卡上,选中您要删除的通知旁边的复选框,然后选择操作、删除。
删除 Amazon A EC2 uto Scaling 通知配置 (Amazon CLI)
使用以下 delete-notification-configuration 命令。
aws autoscaling delete-notification-configuration --auto-scaling-group-name
my-asg
--topic-arnarn
有关删除 Amazon SNS 主题以及与您的 Auto Scaling 组关联的所有订阅的信息,请参阅 Amazon Simple Notification Service 开发人员指南中的删除 Amazon SNS 订阅和主题。
加密 Amazon SNS 主题的密钥策略
您指定的 Amazon SNS 主题可能会使用通过 Amazon Key Management Service创建的客户托管密钥进行加密。要授予 Amazon A EC2 uto Scaling 发布加密主题的权限,您必须先创建 KMS 密钥,然后在 KMS 密钥的策略中添加以下声明。将示例 ARN 替换为允许访问密钥的相应服务相关角色的 ARN。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的配置 Amazon KMS 权限。
在此示例中,策略声明向名为的服务相关角色AWSServiceRoleForAutoScaling授予使用客户托管密钥的权限。要了解有关 Amazon A EC2 uto Scaling 服务相关角色的更多信息,请参阅Amazon A EC2 uto Scaling 的服务相关角色。
{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": "
arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }
允许 Amazon A EC2 uto Scaling 向加密主题发布内容的密钥策略不支持和aws:SourceAccount
条件密钥。aws:SourceArn