本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 EC2Launch 設定 Windows 執行個體
EC2 啟動是一組視窗 PowerShell 腳本,取代了 EC2 配置服務在視窗服務器 2016 年和 2019 AMI 上。其中有許多 AMI 仍然可用。所有受支援 Windows 版本的最新啟動代理程式是 EC2Launch v2,它會取代 EC2Config 和 EC2Launch。如需詳細資訊,請參閱 使用 EC2Launch v2 設定 Windows 執行個體。
注意
為了搭配使用 EC2Launch 與 IMDSv2,版本必須為 1.3.2002730 或以上版本。
EC2Launch 任務
根據預設,EC2Launch 會在初始執行個體開機期間執行下列任務:
-
設定呈現執行個體資訊的新桌面。
-
將電腦名稱設定為執行個體的私人 IPv4 位址。
-
傳送執行個體資訊到 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 執行個體中收集的資料。這包括所有的視窗 AMI 擁有。 AWS
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 版本
使用下列視窗 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
– 含有指令碼產生的日誌檔案。
EC2 啟動版本及更新版本 1.3.2004592
Administrators
群組的使用者擁有所有 EC2Launch 目錄的Full control
權限。不在「管理員」群組中的使用者擁有除外的所有 EC2Launch 目錄的Read & execute
權限。C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Config
目Config
錄僅限於屬於Administrators
群組成員的使用者。
EC2 啟動版本和更早版本 1.3.2004491
除了以外C:\ProgramData
,所有 EC2Launch 目錄都會繼承其權限。C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Scripts
此資料夾會繼承建立C:\ProgramData
時的所有初始權限,但會移除一般使用者在目錄CreateFiles
中存取的權限。
設定 EC2Launch
在您的執行個體第一次初始化後,您可以設定 EC2Launch 再次執行並執行其他啟動任務。
設定初始化任務
在 LaunchConfig.json
檔案中指定設定以啟用或停用下列初始化任務:
-
將電腦名稱設定為執行個體私有 IPv4 地址。
-
將監視器設定為永遠保持開啟狀態。
-
設定新的桌面。
-
新增 DNS 尾碼清單。
注意
這會新增下列網域的 DNS 尾碼查詢,並設定其他標準尾碼。如需啟動代理程式如何設定 DNS 尾碼的詳細資訊,請參閱。設定 Windows 啟動代理程式的 DNS 尾碼
region
.ec2-utilities.amazonaws.com -
擴充開機磁碟區大小。
-
設定管理員密碼。
進行初始化設定
-
在要設定的執行個體上,於文字編輯器中開啟下列檔案:
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json
。 -
視需要更新下列設定並儲存變更。只有在
adminPassword
是adminPasswordtype
時,才要在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
中指定密碼,會停用管理員帳戶。
-
在 Windows 中 PowerShell,執行下列命令來排程指令碼以 Windows 排程工作的形式執行。該指令碼會在下一次開機期間執行一次,然後停用這些任務,以避免再次執行。
PS C:\>
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
排程 EC2Launch 在每次開機時都執行
您可排程 EC2Launch 在每次開機時都執行,不是只在初次開機時執行。
啟用 EC2Launch 在每次開機時都執行
開啟視窗 PowerShell 並執行下列命令:
PS C:\>
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot或使用下列命令執行可執行檔:
PS C:\>
C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe然後選取
Run EC2Launch on every boot
。您可指定 EC2 執行個體Shutdown without Sysprep
或Shutdown with Sysprep
。
注意
當您啟用 EC2Launch 以便在每次開機時執行時,下次 EC2Launch 執行時會發生下列情況:
-
如果
AdminPasswordType
仍然設定為Random
,EC2Launch 將在下次開機時產生新密碼。開機之後,AdminPasswordType
會自動設定為DoNothing
,以防止 EC2Launch 在後續開機時產生新密碼。若要防止 EC2Launch 在第一次開機時產生新密碼,請手動將AdminPasswordType
設定為DoNothing
,然後再重新開機。 -
HandleUserData
會設回false
,除非使用者資料將persist
設成true
。如需詳細資訊,請參閱 使用者資料指令碼。
初始化磁碟機和映射磁碟機代號
在 DriveLetterMappingConfig.json
檔案中指定設定,以將磁碟機代號映射到您的 EC2 執行個體上的磁碟區。指令碼會初始化尚未初始化和分割的磁碟機。如需有關在 Windows 中取得磁碟區詳細資訊的更多詳細資訊,請參閱 Microsoft 文件中的 Get-Volume
將磁碟機代號映射到磁碟區
-
在文字編輯器中開啟
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json
檔案。 -
指定下列磁碟區設定並儲存您的變更:
{ "driveLetterMapping": [ { "volumeName": "
sample volume
", "driveLetter": "H
" } ] } -
開啟視窗, 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 事件日誌
-
在執行個體上,於文字編輯器中開啟
C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json
檔案。 -
進行下列日誌設定並儲存您的變更:
{ "events": [ { "logName": "
System
", "source": "An event source (optional)
", "level": "Error | Warning | Information
", "numEntries":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