亚马逊 A EC2 uto Scaling 的亚马逊SNS通知选项 - Amazon A EC2 uto Scaling

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

亚马逊 A EC2 uto Scaling 的亚马逊SNS通知选项

您可以将 Auto Scaling 组配置为在影响您的应用程序的重要事件时通知您。通过通知,您还可以取消轮询,并且不会遇到轮询有时会导致的RequestLimitExceeded错误。

有两种方法可以接收有关 Amazon A EC2 uto Scaling 的通知:

  • 亚马逊简单通知服务 — 当你的 Auto Scaling 组启动或终止实例时,亚马逊SNS可以通知你。您只能开启或关闭 Amazon SNS 通知。有关更多信息,请参阅 亚马逊SNS和亚马逊 A EC2 uto Scaling

  • 亚马逊 EventBridge — EventBridge 提供更高级的事件驱动型通知,这些通知符合指定标准,并发送到包括亚马逊在内的各种目标。SNS EventBridge 还可以监控更广泛的 Auto Scaling 事件,以实现更精确的监控。有关更多信息,请参阅 用于处理 EventBridge Auto Scaling 事件

您可以选择使用带有生命周期挂钩的通知,在启动或终止期间对实例执行自定义操作。有关如何配置通知以用于生命周期挂钩的更多信息,请参阅Amazon EC2 Auto Scaling 生命周期钩子

亚马逊SNS和亚马逊 A EC2 uto Scaling

本节介绍如何使用 Amazon SNS 监控您的 Auto Scaling 组何时启动或终止实例。

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

请注意,当 Amazon A EC2 uto Scaling 在组中添加或移除实例时,系统会向您发送有关这些更改的通知,每个实例只发送一条通知。但是,这些通知的交付是尽力而为,您的实例在初始通知后仍可能失败,例如,如果以后的运行状况检查失败。有关运行状况检查过程的更多信息,请参阅自动扩缩组中实例的运行状况检查

有关亚马逊的更多信息,SNS请参阅《亚马逊简单通知服务开发者指南》

SNS通知

Amazon A EC2 uto Scaling 支持在发生以下事件时向亚马逊发送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"} Origin: AutoScalingGroup Destination: EC2

为 Amazon A EC2 uto Scaling 配置亚马逊SNS通知

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

创建 Amazon SNS 主题

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

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

  • 介于 1 到 256 个字符之间

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

有关更多信息,请参阅《亚马逊简单通知服务开发者指南》中的创建亚马逊SNS主题

订阅 Amazon SNS 主题

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

有关更多信息,请参阅《亚马逊简单通知服务开发者指南》中的订阅亚马逊SNS主题

确认您的亚马逊SNS订阅

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

确保打开来自 AWS 通知的电子邮件并选择链接以确认订阅,然后再继续执行下一步。

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

配置 Auto Scaling 组以发送通知

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

为您的 Auto Scaling 群组配置亚马逊SNS通知(控制台)
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 选中您的自动扩缩组旁边的复选框。

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

  3. 活动选项卡上,选择活动通知创建通知

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

    1. 在 “SNS主题” 中,选择您的SNS主题。

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

    3. 选择创建

为您的 Auto Scaling 群组配置亚马逊SNS通知 (AWS 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 组。您将在实例启动后的几分钟内收到通知。

更改所需容量(控制台)
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

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

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

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

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

  5. 选择更新

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

删除通知配置

如果不再使用您的 Amazon A EC2 uto Scaling 通知配置,则可以将其删除。

删除 Amazon A EC2 uto Scaling 通知配置(控制台)
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 选择您的 Auto Scaling 组。

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

删除 Amazon A EC2 uto Scaling 通知配置 (AWS CLI)

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

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

有关删除亚马逊SNS主题以及与您的 Auto Scaling 群组关联的所有SNS订阅的信息,请参阅亚马逊简单通知服务开发者指南中的删除亚马逊订阅和主题

加密的 Amazon SNS 主题的密钥政策

您指定的 Amazon SNS 主题可能会使用使用创建的客户托管密钥进行加密 AWS Key Management Service。要授予 Amazon A EC2 uto Scaling 发布加密主题的权限,您必须先创建KMS密钥,然后在KMS密钥策略中添加以下声明。将示例ARN替换为允许访问密钥ARN的相应服务相关角色的示例。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的配置 AWS KMS 权限

在此示例中,策略声明向名为的服务相关角色AWSServiceRoleForAutoScaling授予使用客户托管密钥的权限。要了解有关 Amazon A EC2 uto Scaling 服务相关角色的更多信息,请参阅Amazon EC2 Auto 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