2012-12-10 93 views
7

儘管我發現了大量有關如何使用用戶數據腳本(ala Eric Hammond)創建Amazon EC2 AMI的新實例的文檔,但我還沒有看到啓動已存在但當前停止的亞馬遜EC2實例在重新啓動時使用用戶指定的腳本。用用戶指定的腳本重新啓動現有的Amazon EC2實例?

我有許多用於測試和災難恢復的Amazon EC2 Ubuntu實例。例如,我希望能夠啓動一個備份並根據需要自動獲取和恢復對應於暫存或生產環境的備份。我寧願不必維護兩個獨立的實例,每個實例都有自己的彈性IP。

是否有任何方法可以通過命令行與Amazon ec2tools做到這一點,類似於可以使用ec2-run-instances命令完成的方式?基本上我想能夠傳遞一個以root身份運行的腳本,就好像它已經從rc.local或類似的目錄中調用一樣。

回答

0

不幸的是,答案似乎是目前不可能做我所問的。

2
  1. 你可以用API工具的幫助下做到這一點。檢查ec2-modify-instance-attribute命令爲--user-data屬性。

  2. 此外,AWS控制檯允許你做停止實例同樣的事情: enter image description here

  3. 或者,你可以隨時通過ssh運行命令或腳本作爲最後一個參數:

    ssh [[email protected]]hostname [command]

+0

這裏的問題是,它的出現,腳本放置在用戶數據區域中時,僅在**從AMI首次創建實例時運行** ** h很可能爲什麼ec2-start-instances命令中沒有用戶數據參數,即使它存在於ec2-run-instances命令中。SSH方法當然是可行的,但它並沒有回答關於如何使用ec2tools來完成它的問題,並且它需要在啓動實例上對某個帳戶進行某種身份驗證,但我想這不是什麼大問題,因爲我們是使用密鑰文件。 –

+0

我剛剛完成簡單的用戶數據測試,可以看到它在重新啓動或停止/啓動後不會執行。它看起來很奇怪,有可能改變它,但它不會被執行。我會就此與亞馬遜聯繫。順便說一句,看看這個網頁 - 它可能對你也很有趣:https://help.ubuntu.com/community/CloudInit –

+0

謝謝。欣賞它。 –

0

您可以考慮停止/使用AWS Command Line Interface描述here重啓Amazon EC2實例的功能。

沒有彈性負載均衡

aws ec2 stop-instances --instance-ids i-1a2b3c4d 
aws ec2 start-instances --instance-ids i-1a2b3c4d 

隨着彈性負載均衡沒有自動縮放

aws elb deregister-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd 
aws elb register-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd 

彈性負載均衡與自動縮放

aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 0 --max-size 0 
aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 1 --max-size 1 
相關問題