2017-05-11 265 views
2

我想創建一些EC2實例,但是在它開始之前,使用爲此實例生成的實例ID做一些事情。在aws ec2 run-instances或另一個aws ec2命令中是否有任何選項創建AWS EC2實例而不啓動它?解決方法是生成UUID以標記此實例並關聯此UUID而不是實例ID,或者在運行實例後立即停止,但我更喜歡某種更智能的解決方案。無需啓動創建EC2實例

+0

你是什麼意思由「做一些東西」?在實例完全運行之前採取行動的正確方式是爲實例提供一些[userdata](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)。如果你真的希望你的實例保持關閉狀態,並開始使用正確的數據,你可以在另一個實例上準備一個'EBS'卷,並將它連接到一個引導,但我不會建議,userdatas是要走的路。 – iMil

+0

@iMil通過「做一些事情」我的意思是創建一些將由實例使用的資源。如果它們不存在於/ etc/rc.local中,我可以設置它們,但是這會產生更多條件代碼。我知道用戶數據是如何工作的,但我無法看到它如何幫助我在實例啓動現有事件但在其開始工作之前對其執行一些操作。我希望能夠重置實例並不再次創建資源。 – pt12lol

+0

實際上你要做的就是userdatas的用途,它們在'rc.local'之前執行,事實上在你的Linux系統進入多用戶階段之前。另一種選擇是創建一個AMI(例如使用[packer](https://www.packer.io/)),以設置實例創建時需要的內容。順便說一下,打包機開始一個實例,以建立AMI :) – iMil

回答

3

所以,這正是userdata是 - 當你創建一個實例它會自動將未決移動到運行狀態

文檔。

亞馬遜的文檔:

當您在Amazon EC2上啓動一個實例,你有用戶數據傳遞到可以使用的實例後執行常見自動配置任務,甚至可以運行的腳本實例的選項開始。您可以將兩種類型的用戶數據傳遞給Amazon EC2:shell腳本和cloud-init指令。您還可以將這些數據作爲純文本,文件(這對於通過命令行工具啓動實例很有用)或base64編碼文本(用於API調用)傳遞到啓動向導中。

用戶DATAS可以傳遞到實例在創建時,例如使用--user-data國旗在aws CLI或在AWS控制檯中使用用戶數據文本框。

+0

這是最適用於該問題的解決方案。 _ – kosa