从EC2服务中的Auto Scale获取实例ID列表

时间:2017-05-15 18:36:30

标签: amazon-web-services amazon-ec2 amazon-sqs

有没有办法在SQS消息中发送配置为由EC2的Auto Scale服务启动的已生成“缩放”实例的列表?

1 个答案:

答案 0 :(得分:1)

如果您想在扩展事件期间知道ec2实例的实例ID,可以使用SQS设置Lifecycle挂钩。

  

使用Amazon SQS接收通知

     

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

     

使用Amazon SQS设置通知

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

  2.   
  3. 使用IAM用户指南中的创建角色分配对AWS服务的权限中的步骤,创建IAM角色以授予Auto Scaling访问通知目标的权限。当系统提示您选择角色类型时,请选择AWS Service Roles,AutoScaling Notification Access。请注意角色的ARN。例如,arn:aws:iam :: 123456789012:role / my-notification-role。

  4.   
  5. 当Auto Scaling响应扩展或缩放事件时,它会将实例置于等待状态。当实例处于等待状态时,Auto Scaling会向通知目标发布消息。

  6.   

示例消息:

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

然后添加Lifecycle Hook

您可以使用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