使用 EC2Launch 設定 Windows 執行個體 - Amazon Elastic Compute Cloud

使用 EC2Launch 設定 Windows 執行個體

EC2Launch 是一組取代 Windows Server 2016 和 2019 AMI 上 EC2Config 服務的 Windows PowerShell 指令碼。Windows Server 2022 使用所有受支援 Windows Server 版本的最新啟動服務 EC2Launch v2,它會取代 EC2Config 和 EC2Launch。

EC2Launch 任務

根據預設,EC2Launch 會在初始執行個體開機期間執行下列任務:

  • 設定呈現執行個體資訊的新桌面。

  • 設定電腦名稱。

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

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

  • 為管理員帳戶設定隨機密碼。

  • 新增 DNS 尾碼。

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

  • 執行使用者資料 (若指定)。如需指定使用者資料的詳細資訊,請參閱使用執行個體使用者資料

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

    重要

    如果從這個執行個體建立自訂 AMI,則會擷取這些路由做為作業系統組態的一部分,任何從該 AMI 啟動的新執行個體會保留相同路由,而不論子網放置何處。若要更新路由,請參閱啟動自訂 AMI 時更新 Server 2016 和更新版本的中繼資料/KMS 路由

下列任務可協助維護與 EC2Config 服務回溯相容的功能。您也可以設定 EC2Launch 在啟動期間執行這些任務:

  • 初始化輔助 EBS 磁碟區。

  • 傳送 Windows 事件日誌到 EC2 主控台日誌。

  • 傳送「Windows 已可使用」訊息到 EC2 主控台。

如需 Windows Server 2019 的詳細資訊,請參閱 Microsoft.com 上的比較 Windows Server 版本功能

遙測

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

EC2Launch 版本 1.3.2003498 及更新版本會收集遙測,例如用量指標和錯誤。這些資料是從執行 EC2Launch 的 Amazon EC2 執行個體中收集的資料。這包括由 AWS 擁有的所有 Windows AMI。

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

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

  • 錯誤和診斷資訊 – 代理程式安裝和執行錯誤代碼。

收集資料的範例:

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 會傳送遙測資料,而不會傳送其他通知給客戶。

您選擇啟用或停用遙測收集。

您可以選擇加入或退出遙測收集。您選擇加入或退出遙測收集,以確保我們遵守您的遙測選項。

遙測可見性

啟用遙測時,它會在 Amazon EC2 主控台輸出中顯示,如下所示:

2021/07/15 21:44:12Z: Telemetry: <Data>

停用執行個體的遙測

若要藉由設定系統環境變數來停用遙測,請以管理員身分執行下列命令:

setx /M EC2LAUNCH_TELEMETRY 0

若要在安裝期間停用遙測,請執行 install.ps1,如下所示:

. .\install.ps1 -EnableTelemetry:$false

確認 EC2Launch 版本

使用下列 Windows PowerShell 命令可確認已安裝的 EC2Launch 版本。

PS C:\> Test-ModuleManifest -Path "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1" | Select Version

EC2Launch 目錄結構

根據預設,EC2Launch 會安裝於根目錄 C:\ProgramData\Amazon\EC2-Windows\Launch 中的 Windows Server 2016 和更新版本 AMI。

注意

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

Launch 目錄包含下列子目錄。

  • Scripts – 含有構成 EC2Launch 的 PowerShell 指令碼。

  • Module – 含有建置 Amazon EC2 相關指令碼的模組。

  • Config – 含有您可以自訂的指令碼組態檔案。

  • Sysprep – 含有 Sysprep 資源。

  • Settings – 含有 Sysprep 圖形使用者介面的應用程式。

  • Library - 包含 EC2 啟動代理程式的共用程式庫。

  • Logs – 含有指令碼產生的日誌檔案。

所有 EC2Launch 目錄都會從 C:\ProgramData 繼承其權限,但下列情況除外:

  • C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Scripts —此資料夾會繼承建立 C:\ProgramData 時的所有初始權限,但會移除一般使用者存取目錄中 CreateFiles 的權限。

設定 EC2Launch

在您的執行個體第一次初始化後,您可以設定 EC2Launch 再次執行並執行其他啟動任務。

設定初始化任務

LaunchConfig.json 檔案中指定設定以啟用或停用下列初始化任務:

  • 設定電腦名稱。

  • 將監視器設定為永遠保持開啟狀態。

  • 設定新的桌面。

  • 新增 DNS 尾碼清單。

  • 擴充開機磁碟區大小。

  • 設定管理員密碼。

進行初始化設定

  1. 在要設定的執行個體上,於文字編輯器中開啟下列檔案:C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json

  2. 視需要更新下列設定並儲存變更。只有在 adminPasswordadminPasswordtype 時,才要在 Specify 中提供密碼。

    { "setComputerName": false, "setMonitorAlwaysOn": true, "setWallpaper": true, "addDnsSuffixList": true, "extendBootVolumeSize": true, "handleUserData": true, "adminPasswordType": "Random | Specify | DoNothing", "adminPassword": "password that adheres to your security policy (optional)" }

    密碼類型的定義如下:

    Random

    EC2Launch 會產生密碼並以使用者金鑰將其加密。系統會在執行個體啟動後停用此設定,以便執行個體重新開機或停止再啟動時,能持續使用這個密碼。

    Specify

    EC2Launch 會使用您在 adminPassword 中指定的密碼。如果該密碼不符合系統要求,EC2Launch 會改為產生隨機密碼。系統會將該密碼以純文字存放於 LaunchConfig.json,並在 Sysprep 設定管理員密碼後予以刪除。EC2Launch 會以使用者金鑰加密該密碼。

    DoNothing

    EC2Launch 會使用您在 unattend.xml 檔案中指定的密碼。如果您未在 unattend.xml 中指定密碼,會停用管理員帳戶。

  3. 在 Windows PowerShell 中,執行下列命令以排程指令碼做為 Windows 排程任務執行。該指令碼會在下一次開機期間執行一次,然後停用這些任務,以避免再次執行。

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule

排程 EC2Launch 在每次開機時都執行

您可排程 EC2Launch 在每次開機時都執行,不是只在初次開機時執行。

啟用 EC2Launch 在每次開機時都執行

  1. 開啟 Windows PowerShell 並執行下列命令:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
  2. 或使用下列命令執行可執行檔:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe

    然後選取 Run EC2Launch on every boot。您可指定 EC2 執行個體 Shutdown without SysprepShutdown with Sysprep

注意

當您啟用 EC2Launch 以便在每次開機時執行時,下次 EC2Launch 執行時會發生下列情況:

  • 如果 AdminPasswordType 仍然設定為 Random,EC2Launch 將在下次開機時產生新密碼。開機之後,AdminPasswordType 會自動設定為 DoNothing,以防止 EC2Launch 在後續開機時產生新密碼。若要防止 EC2Launch 在第一次開機時產生新密碼,請手動將 AdminPasswordType 設定為 DoNothing,然後再重新開機。

  • HandleUserData 會設回 false,除非使用者資料將 persist 設成 true。如需使用者資料指令碼的詳細資訊,請參閱《Amazon EC2 使用者指南》中的使用者資料指令碼

初始化磁碟機和映射磁碟機代號

DriveLetterMappingConfig.json 檔案中指定設定,以將磁碟機代號映射到您的 EC2 執行個體上的磁碟區。指令碼會初始化尚未初始化和分割的磁碟機。

將磁碟機代號映射到磁碟區

  1. 在文字編輯器中開啟 C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json 檔案。

  2. 指定下列磁碟區設定並儲存您的變更:

    { "driveLetterMapping": [ { "volumeName": "sample volume", "driveLetter": "H" } ] }
  3. 開啟 Windows PowerShell,並使用下列命令執行初始化磁碟的 EC2Launch 指令碼:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1

    若要在每次執行個體開機時初始化磁碟,請新增 -Schedule 標記,如下所示:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule

傳送 Windows 事件日誌到 EC2 主控台。

EventLogConfig.json 檔案中指定設定,以傳送 Windows 事件日誌到 EC2 主控台日誌。

進行設定以傳送 Windows 事件日誌

  1. 在執行個體上,於文字編輯器中開啟 C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json 檔案。

  2. 進行下列日誌設定並儲存您的變更:

    { "events": [ { "logName": "System", "source": "An event source (optional)", "level": "Error | Warning | Information", "numEntries": 3 } ] }
  3. 在 Windows PowerShell 中執行下列命令,讓系統排程指令碼在每次執行個體開機時做為 Windows 排程任務執行。

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendEventLogs.ps1 -Schedule

    日誌可能要花費三分鐘 (含) 以上才會顯示在 EC2 主控台日誌中。

在成功開機後傳送「Windows 已就緒」訊息

EC2Config 服務會在每次開機後,傳送「Windows 已就緒」訊息到 EC2 主控台。EC2Launch 只會在初次開機後傳送這個訊息。若要與 EC2Config 服務回溯相容,您可以排程 EC2Launch 在每次開機後傳送這個訊息。在執行個體上,開啟 Windows PowerShell 並執行下列命令。系統會排程指令碼做為 Windows 排程任務執行。

PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendWindowsIsReady.ps1 -Schedule