使用 EC2Launch v2 代理程式在 EC2 Windows 執行個體啟動期間執行任務 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 伺服器。

  • 將非開機分割區設定為 mbrgpt

  • 在 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.jsonprevious-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