2016-08-17 111 views
0

我想使用AWS CLI從映像啓動EC2實例我已經安裝了Docker,然後爲該實例提供一個腳本通過--user-data從碼頭集線器中拉出圖像並運行該圖像。我的AWS CLI命令啓動實例,但看起來傳遞給--user-data的腳本從未運行。從AWS CLI啓動EC2實例時未執行用戶數據腳本

的CLI命令是:

aws ec2 run-instances --image-id ami-xxxxx --count 1 --instance-type t2.micro --key-name xxxxx --security-groups xxxxxxx --user-data file:///Users/xxxxxx/startlb.sh 

startlb.sh內容:

#!/bin/bash 
docker pull xxxxxx && docker run -p 9000:9000 -p 9090:9090 -d xxxxxxx go run lbserver.go > /home/ec2-user/startup.log 

我重定向命令泊塢窗進入startup.log的輸出,以查看是否發生任何標準輸出。當我登錄到實例時,日誌文件未被創建,導致我相信user-data腳本從不運行。 docker imagesdocker ps都顯示實例上沒有圖像或容器。

該命令成功啓動實例,只是不需要拖動和運行docker容器(默認情況下,Docker在實例上運行,因此無需啓動它)。如果我將腳本的內容粘貼到終端並執行它,則會啓動實例,然後拉動容器並運行該容器,因此腳本沒有出現任何問題。

+0

當您通過AWS Web控制檯查看實例的用戶數據時,用戶數據內容是否正確顯示? AMI是否實際安裝了cloud-init服務? –

+0

這個文件startlb.sh的權限是什麼? – error2007s

+0

檢查cloud-init日誌(可能是'/ var/log/cloud-init *')以查看腳本是否運行,但由於某種原因失敗。 –

回答

1

原來,它畢竟是在工作。我沒有足夠的時間讓docker pull下載所有內容。幾分鐘後檢查日誌文件,圖像和容器的存在表明一切都在那裏。