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

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

使用 EC2Launch v2 代理程式在 EC2 Windows 執行個體啟動期間執行工作

預設情況下,從 AWS Windows 伺服器 2022 啟動的所有支援 Amazon EC2 執行個體都AMIs包含 EC2Launch v2 啟動代理程式 (EC2Launch.exe)。我們也提供視窗伺服器 2016 年和 2019 年AMIs安裝 EC2Launch v2 做為預設啟動代理程式。這些AMIs是除了視窗伺服器 2016 年和 2019 年之外提供的,其中AMIs包括EC2Launch第 1 版。您可以搜尋預設包AMIs含 EC2Launch v2 的 Windows,方法是在 Amazon EC2 主控台的搜尋AMIs頁面中輸入下列前置詞:EC2LaunchV2-Windows_Server-*

若要比較啟動代理程式版本功能,請參閱比較 Amazon EC2 啟動代理

EC2Launchv2 會在執行個體啟動期間執行工作,並在執行個體停止並稍後啟動或重新啟動時執行。EC2Launchv2 也可以按需執行任務。其中部分作業為自動啟用,其他作業則必須手動啟用。EC2Launchv2 服務支援所EC2Config有EC2Launch功能。

此服務會使用組態檔來控制其操作。您可以使用圖形化工具或直接將組態檔編輯為單一 .yml 檔案 (agent-config.yml) 來更新組態檔。服務二進位檔案位於 %ProgramFiles%\Amazon\EC2Launch 目錄中。

EC2Launchv2 會發佈 Windows 事件記錄檔,協助您疑難排解錯誤並設定觸發器。如需詳細資訊,請參閱Windows 事件日誌

EC2Launchv2 代理程式支援下列 Windows 伺服器作業系統 (作業系統) 版本:

支援的 OS 版本
  • Windows Server 2022

  • Windows Server 2019 (長期服務通道和半年通道)

  • Windows Server 2016

EC2Launch第二個概念

下面的概念是有用的考慮 EC2Launch V2 時理解。

任務

您可以調用任務以在執行個體上執行動作。您可以在 agent-config.yml 檔案中或透過使用者資料來設定任務。如需 EC2Launch v2 的可用工作清單,請參閱 EC2Launchv2 工作。如需了解任務組態結構描述和詳細資訊,請參閱 EC2Launchv2 任務配置

階段

階段是 EC2Launch v2 代理程式所執行之工作的邏輯群組。某些工作只能在特定階段中執行。其他人可以在多個階段運行。使用 agent-config.yml 時,必須指定階段清單,以及要在每個階段中執行的任務清單。

此服務會以下列順序執行各階段:

階段 1:開機

階段 2:網路

第三階段: PreReady

Windows 已準備就緒

PreReady 階段完成後,服務會將Windows is ready訊息傳送至 Amazon EC2 主控台。

第四階段: PostReady

使用者資料會在PostReady階段中執行。有些指令碼版本會在agent-config.yml檔案PostReady階段之前執行,有些版本會在之後執行,如下所示:

agent-config.yml 之前
  • YAML用戶數據版本 1.1

  • XML使用者資料

agent-config.yml 之後
  • YAML用戶數據版本 1.0(為了向後兼容的舊版本)

如需階段和任務的範例,請參閱 範例:agent-config.yml

使用使用者資料時,您必須指定代理程式要執行的任務清單。此階段是隱含的。如需任務範例,請參閱 範例:使用者資料

EC2Launchv2 會依照您在使用者資料中agent-config.yml和使用者資料中指定的順序執行工作清單。階段按順序執行。下一個階段會在前一個階段完成之後開始。任務也會依序執行。

頻率

任務頻率確定何時執行任務,這取決於開機內容。大多數任務只有一個允許的頻率。您可以指定 executeScript 任務的頻率。

您將在 EC2Launchv2 任務配置 中看到以下頻率。

  • 一次 — 工作會在第一次啟動時執行一次 (完成 Sysprep)。AMI

  • 始終 – 每次啟動代理程式執行時,任務都會執行。啟動代理程式會執行於下列時間:

    • 執行個體啟動或重新啟動

    • 該EC2Launch服務運行

    • EC2Launch.exe run 被叫用

agent-config

agent-config是位於 EC2Launch v2 組態資料夾中的檔案。其中包括開機、 PreReady網路和PostReady 階段的組態。此檔案可用來指定在第一次啟動或後續啟動時應執行的工作執行個體組態。AMI

依預設,EC2Launchv2 安裝會安裝一個agent-config檔案,其中包含在標準 Amazon 視窗中使用的建議組態AMIs。您可以更新配置文件以更改 EC2Launch v2 指定的AMI默認啟動體驗。

使用者資料

使用者資料是啟動執行個體時可設定的資料。您可以更新使用者資料,以動態變更自訂AMIs或快速入門的設定AMIs方式。EC2LaunchV2 支持 60 kB 的用戶數據輸入長度。使用者資料僅包含 UserData 階段,因此會在agent-config檔案之後執行。您可以在使用啟動執行個體精靈啟動執行個體時輸入使用者資料,或從EC2主控台修改使用者資料。如需處理使用者資料的資訊,請參閱 Amazon 如何EC2處理 Windows 實例的用戶數據

EC2Launchv2 任務概述

EC2Launchv2 可以在每次開機時執行下列工作:

  • 設定新的和選擇性的自訂桌布來呈現執行個體的相關資訊。

  • 設定在本機電腦上建立的系統管理員帳戶的屬性。

  • 將DNS後綴添加到搜索後綴列表中。只有不存在的尾碼才會加入到清單中。

  • 為任何額外的磁碟區設定磁碟機代號,並將它們延伸至使用可用空間。

  • 將檔案從配置寫入磁碟。

  • 運行 EC2Launch v2 配置文件或從中指定的腳本user-data。腳本user-data可以是純文本或壓縮,並以 base64 格式提供。

  • 執行具有指定參數的程式。

  • 設定電腦名稱。

  • 將執行個體資訊傳送至 Amazon EC2 主控台。

  • 將RDP憑證指紋傳送到 Amazon 主EC2控台。

  • 動態擴充作業系統的分割區,以包含任何尚未分割的空間。

  • 執行使用者資料。如需指定使用者資料的詳細資訊,請參閱EC2Launchv2 任務配置

  • 設定非持久性靜態路由以到達中繼資料服務和 AWS KMS 伺服器。

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

  • 在 Sysprep 後啟動 Systems Manager 服務。

  • 最佳化ENA設定。

  • 啟用「開啟」以SSH供更新版本使用。

  • 啟用巨型訊框。

  • 設置系統報告與 v2 一起EC2Launch運行。

  • 發佈 Windows 事件日誌。

EC2Launchv2 目錄結構

EC2Launchv2 應該安裝在以下目錄中:

  • 服務二進位檔案: %ProgramFiles%\Amazon\EC2Launch

  • 服務資料 (設定、日誌檔和狀態檔):%ProgramData%\Amazon\EC2Launch

注意

根據預設,Windows 會將檔案和資料夾隱藏在 C:\ProgramData 下。若要檢視 EC2Launch v2 目錄和檔案,您必須在 Windows 檔案總管中輸入路徑,或變更資料夾內容以顯示隱藏的檔案和資料夾。

%ProgramFiles%\Amazon\EC2Launch 目錄包含二進位檔案和支援的程式庫。它包括以下子目錄:

  • settings

    • EC2LaunchSettingsUI.exe – 用於修改 agent-config.yml 檔案的使用者介面

    • YamlDotNet.dll— 用DLL於支持用戶界面中的某些操作

  • tools

    • ebsnvme-id.exe— 用於檢查實例上EBS卷的元數據的工具

    • AWSAcpiSpcrReader.exe— 用於確定要使用的正確COM端口的工具

    • EC2LaunchEventMessage.dll— DLL 用於支援的 Windows 事件記錄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.logerr.log) 和遙測的記錄檔 (儲存telemetry.log在此目錄中。日誌會在後續執行服務時附加。

  • state— 服務狀態資料

    服務用來判斷應該執行哪些任務的狀態會儲存在此處。有一個 .run-once 檔案會指出服務是否已在 Sysprep 之後執行 (因此,下次執行時會略過頻率為一次的任務)。此子目錄包含 state.jsonprevious-state.json 以追蹤每個任務的狀態。

  • sysprep— 系統普雷

    此目錄包含的檔案可用來決定 Sysprep 在建立可重複使用的自訂 Windows 時,要執行哪AMI些作業。

  • wallpaper-壁紙

    此桌布影像儲存在此目錄中。

遙測

遙測是其他資訊,可協助您進一 AWS 步瞭解您的需求、診斷問題並提供可改善使用體驗的功能 AWS 服務。

EC2Launchv2 版本2.0.592及更新版本會收集遙測資料,例如使用量度和錯誤。這些資料是從執行 EC2Launch v2 的 Amazon EC2 執行個體收集而來。這包括所有AMIs擁有的視窗 AWS。

EC2Launchv2 會收集下列類型的遙測:

  • 用量資訊 – 代理程式命令、安裝方法和排程的執行頻率。

  • 錯誤和診斷資訊 — 代理程式安裝錯誤代碼、執行錯誤代碼和錯誤呼叫堆疊。

收集資料的範例:

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

預設為啟用遙測。您可隨時停用遙測收集。如果啟用遙測,EC2Launchv2 會傳送遙測資料,而不需要其他客戶通知。

遙測可見性

啟用遙測後,它會顯示在 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