簡體   English   中英

使用用戶數據啟動 AWS EC2 AMI

[英]AWS EC2 AMI launch with user-data

我正在嘗試使用用戶數據啟動我自己的 AMI,以便它可以運行腳本然后終止。

所以我啟動了一個 Ec2 Windows Base 並將其配置為擁有我需要的所有工具(NodeJS 等)並將我的腳本保存到 C:\\Projects\\index.js。

然后我將它保存為圖像。

所以我然后使用控制台從我的新 AMI 啟動一個 EC2,用戶數據為

node C:\Projects\index.js --uuid=1
</powershell>

如果我在 EC2 中運行具有 RDP 的命令,它會起作用,因此似乎在啟動映像時用戶數據沒有運行。

閱讀了其他一些問題和答案后,可能是因為創建的 AMI 是從已經啟動的實例創建的。 所以用戶數據沒有持久化。

誰能建議我每次如何使用自定義用戶數據啟動我的 AMI? (因為 UUID 會改變)

謝謝

另一個對我有用的解決方案是使用 EC2Launch 運行 Sysprep。

問題是 AWS 不會在您的自定義 AMI 中重新建立到配置文件服務 (169.254.169.254) 的路由。 請參閱 SanjitPatel 在這篇文章中的回復。 因此,當我嘗試使用我的自定義 AMI 創建 Spot 請求時,我的新實例無法找到用戶數據。

使用 Sysprep 關閉,實質上是強制 AWS 在實例上重新執行所有設置工作,就好像它是第一次運行一樣。 因此,當您創建實例時,使用 Sysprep 將其關閉,然后創建您的自定義 AMI,AWS 將為新實例正確設置配置文件服務路由並執行您的用戶數據。 這也避免了在后續啟動時手動更改 Windows 任務和執行用戶數據,如持久標記所做的那樣。

這是一個快速的分步說明:

1. 使用 AWS Windows AMI 之一(Windows Server 2016 Nano Server 不支持 Sysprep)創建一個實例並傳遞您所需的用戶數據(這可能是可選的,但最好確保 AWS 連接設置腳本正確處理用戶數據)。

2.根據需要自定義您的實例。

3. 使用 Sysprep 關閉您的實例。 只需打開 EC2LaunchSettings 應用程序並單擊“使用 Sysprep 關閉”。

4. 從您剛剛關閉的實例創建您的自定義 AMI。

5. 使用您的自定義 AMI 創建其他實例,在創建實例時傳遞用戶數據。 用戶數據將在實例啟動時執行。 在我的例子中,我使用了 Spot Request 屏幕,它有一個用戶數據文本框。 希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM