本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 EC2Launch v2 代理程式在 EC2 Windows 執行個體啟動期間執行任務
根據預設,從 AWS Windows Server 2022 和 Windows Server 2025 EC2 啟動的所有支援的 Amazon AMIs 執行個體都包含 EC2Launch v2 啟動代理程式 (EC2Launch.exe
)。我們也提供安裝 AMIs v2 作為預設啟動代理程式的 Windows Server 2016 和 2019 EC2Launch。除了包含 AMIs v1 的 Windows Server 2016 和 2019 AMIs 之外,還提供這些 EC2Launch。您可以在 Amazon AMIs 主控台的 AMIs 頁面中輸入下列字首,以搜尋預設包含 Word EC2Launch v2 的 Windows EC2:EC2LaunchV2-Windows_Server-*
。
若要比較啟動代理程式版本功能,請參閱 比較 Amazon EC2 啟動代理程式。
EC2Launch v2 會在執行個體啟動期間執行任務,並在執行個體停止且稍後啟動或重新啟動時執行。EC2Launch v2 也可以隨需執行任務。其中部分作業為自動啟用,其他作業則必須手動啟用。EC2Launch v2 服務支援所有 EC2Config 和 EC2Launch 功能。
此服務會使用組態檔來控制其操作。您可以使用圖形化工具或直接將組態檔編輯為單一 .yml 檔案 (agent-config.yml
) 來更新組態檔。服務二進位檔案位於 %ProgramFiles%\Amazon\EC2Launch
目錄中。
EC2Launch v2 會發佈 Windows 事件日誌,以協助您疑難排解錯誤並設定觸發條件。如需詳細資訊,請參閱Windows 事件日誌。
EC2Launch v2 代理程式支援下列 Windows Server 作業系統 (OS) 版本:
支援的作業系統版本
-
Windows Server 2025
-
Windows Server 2022
-
Windows Server 2019 (長期服務通道和半年通道)
-
Windows Server 2016
EC2Launch v2 概念
考慮 EC2Launch v2 時,下列概念非常實用。
任務
您可以調用任務以在執行個體上執行動作。您可以在 agent-config.yml
檔案中或透過使用者資料來設定任務。如需 EC2Launch v2 可用任務的清單,請參閱 EC2Launch v2 任務。如需了解任務組態結構描述和詳細資訊,請參閱 EC2Launch v2 任務組態。
階段
階段是 EC2Launch v2 代理程式執行的任務邏輯分組。某些工作只能在特定階段中執行。其他人可以在多個階段運行。使用 agent-config.yml
時,必須指定階段清單,以及要在每個階段中執行的任務清單。
此服務會以下列順序執行各階段:
- 階段 1:開機
- 階段 2:網路
- 階段 3: PreReady
- Windows 已準備就緒
-
在 PreReady 階段完成後,服務會將
Windows is ready
訊息傳送至 Amazon EC2 主控台。 - 階段 4: PostReady
-
使用者資料會在 PostReady 階段期間執行。某些指令碼版本在
agent-config.yml
檔案 PostReady 階段之前執行,而某些在之後執行,如下所示:agent-config.yml
之前-
-
YAML 使用者資料 1.1 版
-
XML 使用者資料
-
agent-config.yml
之後-
-
YAML 使用者資料 1.0 版 (舊版,可回溯相容性)
-
如需階段和任務的範例,請參閱 範例:agent-config.yml。
使用使用者資料時,您必須指定代理程式要執行的任務清單。此階段是隱含的。如需任務範例,請參閱 範例:使用者資料。
EC2Launch v2 會以您在agent-config.yml
使用者資料中指定的順序執行任務清單。階段按順序執行。下一個階段會在前一個階段完成之後開始。任務也會依序執行。
頻率
任務頻率確定何時執行任務,這取決於開機內容。大多數任務只有一個允許的頻率。您可以指定 executeScript
任務的頻率。
您將在 EC2Launch v2 任務組態 中看到以下頻率。
-
一次 – 當 AMI 第一次啟動 (已完成 Sysprep) 時,任務會執行一次。
-
始終 – 每次啟動代理程式執行時,任務都會執行。啟動代理程式會執行於下列時間:
-
執行個體啟動或重新啟動
-
EC2Launch 服務執行
-
EC2Launch.exe run
被叫用
-
agent-config
agent-config
是位於 EC2Launch v2 組態資料夾中的檔案。它包含開機、網路、 PreReady 和 PostReady 階段的組態。此檔案用於指定 AMI 第一次開機時或後續啟動時應執行之任務的執行個體組態。
根據預設,EC2Launch v2 安裝會安裝包含建議組態agent-config
的檔案,這些組態用於標準 Amazon Windows AMIs。您可以更新組態檔案,以變更 AMI v2 指定的 EC2Launch 預設開機體驗。
使用者資料
使用者資料是啟動執行個體時可設定的資料。您可以更新使用者資料,以動態變更自訂 AMIs 或快速啟動 AMIs 的設定方式。EC2Launch v2 支援 60 kB 使用者資料輸入長度。使用者資料僅包含 UserData 階段,因此會在agent-config
檔案後執行。您可以在使用啟動執行個體精靈啟動執行個體時輸入使用者資料,也可以從 EC2 主控台修改使用者資料。如需處理使用者資料的資訊,請參閱 Amazon EC2 如何處理 Windows 執行個體的使用者資料。
EC2Launch v2 任務概觀
每次開機時,EC2Launch v2 可以執行下列任務:
-
設定新的和選擇性的自訂桌布來呈現執行個體的相關資訊。
-
設定在本機電腦上建立的系統管理員帳戶的屬性。
-
將DNS尾新增至搜尋字尾清單。只有不存在的尾碼才會加入到清單中。
-
為任何額外的磁碟區設定磁碟機代號,並將它們延伸至使用可用空間。
-
將檔案從組態寫入磁碟。
-
執行 EC2Launch v2 組態檔案中或從 中指定的指令碼
user-data
。的指令碼user-data
可以是純文字或壓縮,並以 base64 格式提供。 -
執行具有指定參數的程式。
-
設定電腦名稱。
-
將執行個體資訊傳送至 Amazon EC2 主控台。
-
將 RDP 憑證指紋傳送至 Amazon EC2 主控台。
-
動態擴充作業系統的分割區,以包含任何尚未分割的空間。
-
執行使用者資料。如需指定使用者資料的詳細資訊,請參閱EC2Launch v2 任務組態。
-
設定非持久性靜態路由以到達中繼資料服務和 AWS KMS 伺服器。
-
將非開機分割區設定為
mbr
或gpt
。 -
在 Sysprep 後啟動 Systems Manager 服務。
-
最佳化 ENA 設定。
-
針對較新的 Windows 版本啟用 OpenSSH。
-
啟用巨型訊框。
-
將 Sysprep 設定為使用 EC2Launch v2 執行。
-
發佈 Windows 事件日誌。
EC2Launch v2 目錄結構
EC2Launch v2 應安裝在下列目錄中:
-
服務二進位檔案:
%ProgramFiles%\Amazon\EC2Launch
-
服務資料 (設定、日誌檔和狀態檔):
%ProgramData%\Amazon\EC2Launch
注意
根據預設,Windows 會將檔案和資料夾隱藏在 C:\ProgramData
下。若要檢視 EC2Launch v2 目錄和檔案,您必須在 Windows Explorer 中輸入路徑,或變更資料夾屬性以顯示隱藏的檔案和資料夾。
%ProgramFiles%\Amazon\EC2Launch
目錄包含二進位檔案和支援的程式庫。它包括以下子目錄:
-
settings
-
EC2LaunchSettingsUI.exe
– 用於修改agent-config.yml
檔案的使用者介面 -
YamlDotNet.dll
— 用於支援使用者介面中某些操作的 DLL
-
-
tools
-
ebsnvme-id.exe
— 用於檢查執行個體上 EBS 磁碟區的中繼資料的工具 -
AWSAcpiSpcrReader.exe
— 用於判斷要使用之正確 COM 連接埠的工具 -
EC2LaunchEventMessage.dll
— 支援 Windows DLL記錄的 EC2Launch。
-
-
service
-
EC2LaunchService.exe
– 啟動代理程式以服務方式執行時,所啟動的 Windows 服務可執行檔。
-
-
EC2Launch.exe
— 主要 EC2Launch 可執行檔 -
EC2LaunchAgentAttribution.txt
— EC2 Launch 中使用的程式碼屬性
%ProgramData%\Amazon\EC2Launch
目錄包含下列子目錄。服務產生的所有資料,包括日誌、組態和狀態,都會儲存在此目錄中。
-
config
– 組態服務組態檔案儲存在此目錄中為
agent-config.yml
。此檔案可以更新,以修改、新增或移除服務所執行的預設任務。在此目錄中建立檔案的許可限制為系統管理員帳戶,以防止權限提升。 -
log
– 執行個體日誌服務 (
agent.log
)、主控台 (console.log
)、效能 (bench.log
)、錯誤 (err.log
) 和遙測 (telemetry.log
的日誌會儲存在此目錄中。日誌會在後續執行服務時附加。 -
state
– 服務狀態資料服務用來判斷應該執行哪些任務的狀態會儲存在此處。有一個
.run-once
檔案會指出服務是否已在 Sysprep 之後執行 (因此,下次執行時會略過頻率為一次的任務)。此子目錄包含state.json
和previous-state.json
以追蹤每個任務的狀態。 -
sysprep
– Sysprep此目錄包含的檔案,用於決定 Sysprep 在建立可重複使用的自訂 Windows AMI 時要執行的操作。
-
wallpaper
– 桌布此桌布映像會儲存在此目錄中。
遙測
遙測是其他資訊,有助於 AWS 更了解您的需求、診斷問題和提供功能,以改善使用 的體驗 AWS 服務。
EC2Launch v2 版本2.0.592
和更新版本會收集遙測資料,例如用量指標和錯誤。此資料是從執行 EC2 v2 的 Amazon EC2Launch 執行個體收集而來。這包括 擁有的所有 Windows AMIs AWS。
EC2Launch v2 會收集下列類型的遙測資料:
-
用量資訊 – 代理程式命令、安裝方法和排程的執行頻率。
-
錯誤和診斷資訊 — 代理程式安裝錯誤碼、執行錯誤碼和錯誤呼叫堆疊。
收集資料的範例:
2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true 2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsUserDataScheduledPerBoot=true 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandCode=1 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandErrorCode=5 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallCode=2 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallErrorCode=0
預設為啟用遙測。您可隨時停用遙測收集。如果啟用遙測,EC2Launch v2 會傳送遙測資料,而不需要額外的客戶通知。
遙測可見性
啟用遙測時,它會顯示在 Amazon EC2 主控台輸出中,如下所示。
2021/07/15 21:44:12Z: Telemetry: <Data>
停用執行個體的遙測
若要停用單一執行個體的遙測,您可以設定系統環境變數,或使用 MSI 修改安裝。
若要藉由設定系統環境變數來停用遙測,請以管理員身分執行下列命令。
setx /M EC2LAUNCH_TELEMETRY 0
若要使用 MSI 停用遙測,請在下載 MSI 後執行下列命令。
msiexec /i ".\AmazonEC2Launch.msi" Remove="Telemetry" /q