从 EC2 服务中的自动扩展获取实例 ID 列表



有没有办法在 SQS 消息中发送配置为由 EC2 的自动扩展服务启动的生成的"扩展"实例列表?

如果您想在扩展事件期间了解 ec2 实例的实例 ID,您可以使用 SQS 设置生命周期挂钩。

使用 Amazon SQS 接收通知

您可以使用 Amazon SQS 设置通知目标,以便在发生生命周期操作时接收通知。

使用 Amazon SQS 设置通知

  1. 使用 Amazon SQS 创建目标。有关更多信息,请参阅 Amazon Simple Queue Service 开发人员指南 中的 Amazon SQS 入门。记下目标的 ARN。

  2. 使用 IAM 用户指南 中的创建角色以向 AWS 服务委派权限中的步骤,创建一个 IAM 角色以授予 Auto Scaling 访问通知目标的权限。当系统提示选择角色类型时,请选择 AWS 服务角色、自动扩展通知访问。记下角色的 ARN。例如,arn:aws:iam::123456789012:role/my-notification-role。

  3. 当 Auto Scaling 响应横向扩展或缩减事件时,会将实例置于等待状态。当实例处于等待状态时,Auto Scaling 会向通知目标发布一条消息。

示例消息:

Service: AWS Auto Scaling
Time: 2016-09-30T20:42:11.305Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40
AccountId: 123456789012
AutoScalingGroupName: my-asg
LifecycleHookName: my-hook
EC2InstanceId: i-0598c7d356eba48d7
LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING
NotificationMetadata: null

然后添加生命周期挂钩

您可以使用 put-lifecycle -hook 命令创建生命周期挂钩。

若要执行横向扩展操作,请使用以下命令:

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-hook --auto-scaling-group-name my-asg --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING --notification-target-arn arn:aws:sns:us-west-2:123456789012:my-sqs --role-arn arn:aws:iam::123456789012:role/my-notification-role

http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html#adding-lifecycle-hooks

http://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-lifecycle-hook.html

最新更新