2017-05-15 13 views
1

有没有办法在SQS消息中发送配置为通过EC2的自动缩放服务启动的衍生“缩放”实例的列表?从EC2服务的自动缩放获取实例ID的列表

+1

你的问题有点难以理解。你能否澄清你的要求?例如:每次将实例启动到Auto Scaling组中时,您是否想要一条SQS消息,或者只需一条消息即可“立即”列出组中的所有实例?您为什么需要通过SQS消息?您是否愿意使用[AWS命令行界面(CLI)](http://aws.amazon.com/cli/)或API调用?随意编辑您的问题以添加详细信息。 –

+0

我的用例是Monte Carlo Sim。我想将包含在S3中的文件夹中的不同输入文件映射到实例。我想,我需要使用实例ID重命名文件夹,这样一个实例将只使用与实例ID具有相同名称的文件夹中包含的输入文件。我知道这是一个破解,但bash处理不同形式MCS –

回答

1

如果您想在扩展事件期间了解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服务角色,AutoScaling通知访问。请注意角色的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生命周期挂机命令生命周期钩。

要进行规模上的动作时,请使用以下命令:

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

+0

非常好,我想SQS消息将有一个启动实例ID“EC2InstanceId”的列表,如果自动缩放是通过多个实例完成的? –

+0

对于每个我在其中发生的每个缩放事件,它都会有一个新消息。所以你需要在解析它们之后删除消息。 – strongjz

+0

如果有1k到10k个实例启动,它可能会变得昂贵。 TNKS。请注意,AWS将适应此缩放选项 –

相关问题