當我重新啟動或啟動執行個體時,我想要在現有的 Amazon Elastic Compute Cloud (Amazon EC2) Windows 執行個體上執行自訂指令碼。
簡短說明
將指令碼新增至使用者資料,然後將其設定為在執行個體重新啟動後或執行個體啟動時執行。使用 EC2Config (Windows Server 2012 R2 及更早版本)、EC2Launch (Windows Server 2016 和 2019) 或 EC2LaunchV2 (Windows Server 2022) 處理使用者資料。
解決方法
將指令碼新增至使用者資料時,必須將其括在特殊標記內。這個標記會決定命令是在命令提示字元視窗還是在 Windows PowerShell 中執行。如需詳細資訊,請參閱啟動時在 Windows 執行個體上執行命令。
執行執行個體時,無法新增或變更使用者資料,但可以檢視該資料。若要新增或變更使用者資料,執行個體必須處於停止狀態。使用者資料指令碼不會在您重新啟動或啟動執行個體時自動執行。您可以將使用者資料設定為在下次或每次重新啟動或啟動執行個體時執行。
重要:
- 如果您不使用彈性 IP 地址,則會在您停止執行個體時釋放公用 IP 地址。
- 如果執行個體具有執行個體儲存體磁碟區,則停止執行個體時,其上的任何資料都會遺失。
- 如果執行個體關閉行為設定為終止,則執行個體會在停止後終止。
- 如果執行個體是 Auto Scaling 群組的一部分,請先從 Auto Scaling 群組分離該執行個體。然後,停止和啟動執行個體後,再將該執行個體重新附加到 Auto Scaling 群組。如需詳細資訊,請參閱停止並啟動執行個體。
1. 連線至 EC2 Windows 執行個體。
2. 對於 Windows Server 2012 R2 或更早版本,打開 C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigServiceSetting.exe。然後,對於使用者資料,選取下一次服務啟動時啟用 UserData 執行。
注意: 上述指令會在每次重新啟動時更改執行個體的本機管理員密碼。如果您在選取無金鑰對選項的情況下使用 AMI,則重新啟動時可能會失去對執行個體的存取權。
對於 Windows Server 2016 和 2019,請開啟 Windows PowerShell 命令視窗,然後執行下列命令:
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule
對於 ** Windows Server 2022**,執行 UserData 指令碼,並將頻率設定為始終在每次啟動時執行。如需詳細資訊,請參閱executeScripts 以獲取語法和範例。
3. 從Amazon EC2 主控台停止執行個體。
4. 選取執行個體並選擇動作。選擇執行個體設定,然後選擇編輯使用者資料。
5. 新增或更新使用者資料,然後選擇儲存。
注意: 若要在每次重新啟動執行個體時執行使用者資料指令碼,請新增下列設定:
<persist>true</persist>
6. 啟動該執行個體。該使用者資料指令碼會在執行個體啟動程序中執行。
如需進一步的疑難排解,EC2Config、EC2Launch 和 EC2LaunchV2 日誌檔包含來自標準輸出和標準錯誤串流的輸出。日誌檔位於下列位置:
- EC2Config: C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log
- EC2Launch: C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log
- EC2LaunchV2: C:\ProgramData\Amazon\EC2Launch\log\agent.log
相關資訊
如何在啟動時在新的 EC2 Windows 執行個體上執行命令?