2015-04-01 34 views
0

我有一個AutoScale組,當CloudWatch警報關閉時,SQS隊列中有消息時啓動該組。將日誌文件複製到S3並通過用戶數據關閉AutoScale實例

但我不想創建另一個CloudWatch警報,以減少AutoScale組中的實例數,因爲在該實例中進行的任務可能比Alarm設置花費的時間更長。

所以我試圖做的方式是,一旦實例創建,我作爲「.sh」文件傳遞的用戶數據運行我想要的任務,等待它完成,將文件複製到S3並終止實例。

不幸的是,該文件確實進入S3,但它是空的,實例從不關閉。

我讀過這可能與像lifecycle-hooks這樣的事情有關,但我想知道是否有可能按照上面解釋的方式進行操作。

我的用戶數據如下:

#!/bin/bash 
runuser -l ec2-user -c "cd /my-directory && nohup execute-my-task --trace > /logs-directory/my-log-file.log & " 
PID=$! 
wait $PID 

runuser -l ec2-user -c "aws s3 cp /logs-directory/my-log-file.log s3://-my-logs-bucket/my-log-file.log" 
PID2=$! 
wait $PID2 

runuser -l ec2-user -c "shutdown -h now" 

感謝。

回答

0

我想通了!

我最終加入了命令爲一個命令的同時增加之間並&&關閉實例下來,我用:

aws ec2 terminate-instances --instance-ids `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` 

心思去經營的wget命令,並返回實例ID的反引號。

相關問題