2017-05-15 16 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將適應此縮放選項 –

相關問題