設定視窗執行個體的 EC2Launch V2 設定 - Amazon Elastic Compute Cloud

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

設定視窗執行個體的 EC2Launch V2 設定

本節包含如何設定 EC2Launch v2 設定的相關資訊。

使用 EC2Launch v2 設定對話方塊變更設定

下列程序說明如何使用 EC2Launch v2 設定對話方塊來啟用或停用設定。

注意

如果您在代理程式 config.yml 檔案中設定不當的自訂任務,並嘗試開啟 Amazon EC2Launch 設定對話方塊,將會收到錯誤訊息。有關架構範例,請參閱 範例:agent-config.yml

  1. 啟動和連線至 Windows 執行個體。

  2. 從 [開始] 功能表中,選擇 [所有程式],然後瀏覽至 EC2Launch[設定]

    EC2啟動設置應用程序。
  3. EC2Launch設定對話方塊的「一般」頁籤上,您可以啟用或停用下列設定。

    1. Set Computer Name (設定電腦名稱)

      如果啟用此設定 (預設為停用),則會在每次開機時將目前主機名稱與所需主機名稱進行比較。如果主機名稱不相符,則會重設主機名稱,然後系統會選擇性地重新開機以取得新的主機名稱。如果未指定自訂主機名稱,則會使用十六進位格式的私人IPv4位址產生該名稱,例如,。ip-AC1F4E6若要避免現有的主機名稱遭到修改,請勿啟用此設定。

    2. 延伸開機磁碟區

      此設定將動態擴充 Disk 0/Volume 0,以包含任何尚未分割的空間。此設定在執行個體是從自訂大小的根裝置磁碟區啟動時很有用。

    3. 設定管理員帳戶

      啟用後,您可以為本機電腦上建立的管理員帳戶設定使用者名稱和密碼屬性。如果未啟用此功能,遵循 Sysprep 的系統不會建立系統管理員帳戶。只有在 adminPasswordadminPasswordtype 時,才要在 Specify 中提供密碼。

      密碼類型的定義如下:

      1. Random

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

      2. Specify

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

      3. Do not set

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

    4. 啟動SSM服務

      選取此選項時,Systems Manager 服務會啟用,以啟動以下 Sysprep。EC2Launchv2 會執行先前所述的所有工作,而SSM代理程式會處 Systems Manager 功能的要求,例如執行命令和狀態管理員。

      您可以使用執行命令來升級現有執行個體,以使用最新版本的 EC2Launch v2 服務和SSM代理程式。如需詳細資訊,請參閱《AWS 系統管SSM理員使用指南》中的使用執行命令更新代理程式。

    5. 最佳化 ENA

      選取時,會ENA設定設定以確保「ENA接收端調整」和「接收佇列深度」設定已針對最佳化 AWS。如需詳細資訊,請參閱設定接收端調整調整CPU相似

    6. 啟用 SSH

      此設定會SSH針對較新的 Windows 版本啟用「開啟」,以允許遠端系統管理。

    7. 啟用巨型訊框

      選取以啟用「巨型訊框」。「巨型訊框」可能會對您的網路通訊產生意想不到的影響,因此在啟用之前,請務必了解「巨型訊框」對您的系統的影響。如需「巨型訊框」的詳細資訊,請參閱 巨型框MTU架

    8. 準備建立映像

      選取是否要讓EC2執行個體在使用或不使用 Sysprep 的情況下關閉。當您想要使用 EC2Launch v2 執行 Sysprep 時,請選擇使用 Sysprep 關機

  4. 在 [字DNS尾] 索引標籤上,您可以選取是否要新增DNS尾碼清單來DNS解析中執行的伺服器EC2,而不提供完整網域名稱。DNS後綴可以包含變量$REGION和. $AZ 只有不存在的尾碼才會新增到清單中。

    EC2啟動設置應用程序。
  5. 桌布索引標籤中,您可以使用背景圖片來設定執行個體桌布,並指定要顯示之桌布的執行個體詳細資訊。Amazon 每次登錄時都EC2會生成詳細信息。

    您可以使用下列控制項來設定桌布。

    • 在桌布上顯示執行個體詳細資訊 - 此核取方塊會啟用或停用桌布上的執行個體詳細資訊顯示。

    • 圖片路徑 (.jpg) - 指定要用作桌布背景的圖片路徑。

    • 選取要在桌布上顯示的屬性 - 選取要顯示在桌布上之執行個體詳細資訊的核取方塊。清除要從桌布中移除的先前選取的執行個體詳細資訊的核取方塊。

    • 在桌布上顯示執行個體標籤 - 選取下列其中一個設定以在桌布上顯示執行個體標籤:

      • - 不在桌布上顯示任何執行個體標籤。

      • 顯示全部 - 在桌布上顯示所有執行個體標籤。

      • 顯示篩選結果 - 在桌布上顯示指定的執行個體標籤。當您選取此設定時,可以在執行個體標籤篩選方塊中新增您想要顯示在桌布上的執行個體標籤。

        注意

        您必須在中繼資料中啟用標籤,才能在桌布上顯示標籤。如需有關執行個體標籤和中繼資料的詳細資訊,請參閱 使用執行個體中繼資料檢視EC2執行個體的

    EC2啟動設置桌布選項卡。
  6. 磁碟區標籤上,選取是否要初始化連線至執行個體的磁碟區。啟用會設定任何額外磁碟區的磁碟機代號,並將它們延伸到使用可用空間。如果您選取全部,則會初始化所有儲存磁碟區。如果您選取裝置,則只會初始化清單中指定的裝置。您必須為每個要初始化的裝置輸入裝置。使用EC2主控台上列出的裝置,例如,xvdb/dev/nvme0n1。下拉式清單會顯示連接到執行個體的儲存磁碟區。若要輸入未連接到執行個體的裝置,請在文字欄位中輸入該裝置。

    名稱字母分割區是選填欄位。如果未指定分割區的值,則會以磁碟分割類型初始化大於 2 TB 的儲存磁碟gpt區,而小於 2 TB 的儲存磁碟區會以磁碟mbr分割類型初始化。如果已設定裝置,且非NTFS裝置包含分割區表格,或是磁碟的前 4 KB 包含資料,則會略過磁碟並記錄動作。

    EC2啟動設置應用程序。

以下是從EC2Launch對話方塊中輸入的設定建立的範例規劃YAML檔案。

version: 1.0 config: - stage: boot tasks: - task: extendRootPartition - stage: preReady tasks: - task: activateWindows inputs: activation: type: amazon - task: setDnsSuffix inputs: suffixes: - $REGION.ec2-utilities.amazonaws.com - task: setAdminAccount inputs: password: type: random - task: setWallpaper inputs: path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg attributes: - hostName - instanceId - privateIpAddress - publicIpAddress - instanceSize - availabilityZone - architecture - memory - network - stage: postReady tasks: - task: startSsm

EC2Launch使用 CLI

您可以使用指令行介面 (CLI) 來規劃您的EC2Launch設定和管理服務。下一節包含您可用來管理 EC2Launch v2 之CLI命令的說明和使用資訊。

collect-logs

收集的記錄檔EC2Launch、壓縮檔案,並將其放置在指定的目錄中。

範例

ec2launch collect-logs -o C:\Mylogs.zip

用途

ec2launch collect-logs [flags]

Flags

-h, --help

collect-logs 的說明

-o, --output string

壓縮輸出日誌的路徑

get-agent-config

以指定agent-config.yml的格式 (JSON或YAML) 列印。如果未指定任何格式,則會以先前指定的格式列印 agent-config.yml

範例

ec2launch get-agent-config -f json

範例 2

下面的 PowerShell 命令顯示如何編輯和保存JSON格式的agent-config文件。

$config = & "$env:ProgramFiles/Amazon/EC2Launch/EC2Launch.exe" --format json | ConvertFrom-Json $jumboFrame =@" { "task": "enableJumboFrames" } "@ $config.config | %{if($_.stage -eq 'postReady'){$_.tasks += (ConvertFrom-Json -InputObject $jumboFrame)}} $config | ConvertTo-Json -Depth 6 | Out-File -encoding UTF8 $env:ProgramData/Amazon/EC2Launch/config/agent-config.yml

用途

ec2launch get-agent-config [flags]

Flags

-h, --help

get-agent-config 的說明

-f, --format string

agent-config 檔案的輸出格式:jsonyaml

list-volumes

列出連接至執行個體的所有儲存磁碟區,包括暫時磁碟區和磁碟區。EBS

範例

ec2launch list-volumes

用途

ec2launch list-volumes

Flags

-h, --help

list-volumes 的說明

重設

此任務的主要目標是在下次代理程式執行時重設該代理程式。若要這麼做,命reset令會從本機EC2Launch目錄刪除 EC2Launch v2 的所有代理程式狀態資料 (請參閱EC2Launchv2 目錄結構)。選擇性重設會刪除服務和 Sysprep 日誌。

指令碼行為取決於代理程式執行指令碼的模式 (內嵌或分離)。

內嵌 (預設)

EC2Launchv2 代理程式一次執行一個指令碼 (detach: false)。這是預設設定。

注意

當內嵌指令碼發出 reset 或 sysprep 命令時,它會立即執行並重設代理程式。目前任務完成後,代理程式就會關閉,而不執行任何後續任務。

例如,如果發出命令的任務後緊接著一個 startSsm 任務 (預設情況下會在使用者資料執行之後包含),則任務不會執行,而且 Systems Manager 服務永遠不會啟動。

Detached

EC2Launchv2 代理程式會與其他工作同時執行指令碼 (detach: true)。

注意

當分離的指令碼發出 reset 或 sysprep 命令時,這些命令會等待代理程式完成再執行。之後的工作仍 executeScript 會執行。

範例

ec2launch reset -c

用途

ec2launch reset [flags]

Flags

-c, --clean

reset 前清除執行個體日誌

-h, --help

reset 的說明

run

運行 EC2Launch V2。

範例

ec2launch run

用途

ec2launch run [flags]

Flags

-h, --help

run 的說明

status

取得 EC2Launch v2 代理程式的狀態。選擇性地封鎖處理程序,直到代理程式完成為止。處理程序結束程式碼會決定代理程式狀態:

  • 0 – 代理程式已執行且成功。

  • 1 – 代理程式已執行且失敗。

  • 2 – 代理程式仍在執行中。

  • 3 – 代理程式處於未知狀態。代理程式狀態為未執行或已停止。

  • 4 – 嘗試擷取代理程式狀態時發生錯誤。

  • 5 – 代理程式未執行,且上次已知執行的狀態未知。這可能表示以下其中一項:

    • state.jsonprevious-state.json 均被刪除。

    • previous-state.json 已毀損。

    這是執行 reset 命令後的代理程式狀態。

範例:

ec2launch status -b

用途

ec2launch status [flags]

Flags

-b,--block

封鎖處理程序,直到代理程式完成執行

-h,--help

status 的說明

sysprep

此任務的主要目標是在下次代理程式執行時重設該代理程式。為此,sysprep命令會重設代理程式狀態、更新unattend.xml檔案RDP、停用並執行 Sysprep。

指令碼行為取決於代理程式執行指令碼的模式 (內嵌或分離)。

內嵌 (預設)

EC2Launchv2 代理程式一次執行一個指令碼 (detach: false)。這是預設設定。

注意

當內嵌指令碼發出 reset 或 sysprep 命令時,它會立即執行並重設代理程式。目前任務完成後,代理程式就會關閉,而不執行任何後續任務。

例如,如果發出命令的任務後緊接著一個 startSsm 任務 (預設情況下會在使用者資料執行之後包含),則任務不會執行,而且 Systems Manager 服務永遠不會啟動。

Detached

EC2Launchv2 代理程式會與其他工作同時執行指令碼 (detach: true)。

注意

當分離的指令碼發出 reset 或 sysprep 命令時,這些命令會等待代理程式完成再執行。之後的工作仍 executeScript 會執行。

範例:

ec2launch sysprep

用途

ec2launch sysprep [flags]

Flags

-c,--clean

sysprep 前清除執行個體日誌

-h,--help

Sysprep 說明

-s,--shutdown

sysprep 後關閉執行個體

validate

驗證 agent-config 檔案 C:\ProgramData\Amazon\EC2Launch\config\agent-config.yml

範例

ec2launch validate

用途

ec2launch validate [flags]

Flags

-h , --help

validate 的說明

version

取得可執行版本。

範例

ec2launch version

用途

ec2launch version [flags]

Flags

-h, --help

version 的說明

桌布

將新桌布設定為提供的桌布路徑 (.jpg 檔案),並顯示選取的執行個體詳細資料。

語法

ec2launch wallpaper ^ --path="C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg" ^ --all-tags ^ --attributes=hostName,instanceId,privateIpAddress,publicIpAddress,instanceSize,availabilityZone,architecture,memory,network

輸入

參數
-允許-標籤 [tag-name-1, tag-name-n]

(選擇性) 要在桌布上顯示的實體標籤名稱的 Base64 編碼JSON陣列。您可以使用此標籤或 --all-tags,但不能同時使用兩者。

-屬性 attribute-string-1, attribute-string-n

(選用) 要將設定套用至桌布的 wallpaper 屬性字串清單 (以逗號分隔)。

[--路徑 |-p] path-string

(必要) 指定 wallpaper 背景圖片檔案路徑。

旗標
--all-tags

(選用) 在桌布上顯示所有執行個體標籤。您可以使用此標籤或 --allowed-tags,但不能同時使用兩者。

[--help | -h]

顯示 wallpaper 命令的說明。

EC2Launchv2 任務配置

本節包含 agent-config.yml 和使用者資料的組態結構描述任務、詳細資訊及範例。

結構描述︰agent-config.yml

agent-config.yml 檔案的結構如下所示。請注意,不能在同一階段重複任務。有關任務屬性,請參閱後面的任務說明。

文件結構:agent-config.yml

JSON

{ "version": "1.0", "config": [ { "stage": "string", "tasks": [ { "task": "string", "inputs": { ... } }, ... ] }, ... ] }

YAML

version: 1.0 config: - stage: string tasks: - task: string inputs: ... ... ...

範例:agent-config.yml

下列範例顯示 agent-config.yml 組態檔的設定。

version: 1.0 config: - stage: boot tasks: - task: extendRootPartition - stage: preReady tasks: - task: activateWindows inputs: activation: type: amazon - task: setDnsSuffix inputs: suffixes: - $REGION.ec2-utilities.amazonaws.com - task: setAdminAccount inputs: password: type: random - task: setWallpaper inputs: path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg attributes: - hostName - instanceId - privateIpAddress - publicIpAddress - instanceSize - availabilityZone - architecture - memory - network - stage: postReady tasks: - task: startSsm

設定啟動或重新開機期間執行的 EC2Launch v2 使用者資料指令碼

下列YAML範例JSON和範例顯示使用者資料的文件結構。Amazon 會EC2剖析您在文件中指定的tasks陣列中指定的每個任務。每個任務都有自己的屬性集和要求集。如需詳細資訊,請參閱 EC2Launchv2 啟動工作的工作定義

注意

工作只能在使用者資料工作陣列中出現一次。

文件結構:使用者資料

JSON

{ "version": "1.1", "tasks": [ { "task": "string", "inputs": { ... }, }, ... ] }

YAML

version: 1.1 tasks: - task: string inputs: ... ...

範例:使用者資料

如需使用者資料的詳細資訊,請參閱 Amazon 如何EC2處理 Windows 實例的用戶數據

下列YAML文件範例顯示 EC2Launch v2 以使用者資料的身分執行以建立檔案的 PowerShell 指令碼。

version: 1.1 tasks: - task: executeScript inputs: - frequency: always type: powershell runAs: localSystem content: |- New-Item -Path 'C:\PowerShellTest.txt' -ItemType File

您可以使用與舊版啟動代理程XML式相容的使用者資料格式。EC2Launchv2 將腳本作為UserData階段中的executeScript任務運行。為了符合 EC2Launch v1 和EC2Config行為,使用者資料指令碼依預設會以附加/內嵌程序的方式執行。

您可以新增選用標籤來自訂指令碼的執行方式。例如,除了在執行個體啟動時執行一次使用者資料指令碼之外,若還想在執行個體重新啟動時執行,您可以使用下列標記:

<persist>true</persist>

範例:

<powershell> $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

您可以使用<powershellArguments>標籤指定一個或多個 PowerShell 引數。如果沒有傳遞任何引數,EC2Launchv2 預設會新增下列引數:-ExecutionPolicy Unrestricted

範例:

<powershell> $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <powershellArguments>-ExecutionPolicy Unrestricted -NoProfile -NonInteractive</powershellArguments>

若要將XML使用者資料指令碼做為分離處理程序執行,請將下列標記新增至您的使用者資料。

<detach>true</detach>

範例:

<powershell> $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <detach>true</detach>
注意

舊版啟動代理程式不支援分離標籤。

變更日誌:使用者資料

下表列出使用者資料的變更,並將其交叉參照至適用的 EC2Launch v2 代理程式版本。

使用者資料版本 詳細資訊 引入於
1.1
  • 使用者資料任務會在代理程式組態檔案中的 PostReady 階段之前執行。

  • 在啟動系統管理員代理程式之前執行使用者資料 (行為與 EC2Launch v1 和相同EC2Config) 。 *

EC2LaunchV2 版本
1.0
  • 將被棄用。

  • 使用者資料任務會在代理程式組態檔案中的 PostReady 階段之後執行。這與 EC2Launch v1 不向後兼容。

  • 受 Systems Manager Agent 啟動與使用者資料任務之間的競爭條件影響。

EC2Launch第二版本 2.0.0

* 與預設 agent-config.yml 檔案搭配使用時。

EC2Launchv2 退出代碼並重新啟動

您可以使用 EC2Launch v2 來定義腳本如何處理退出代碼。根據預設,在指令碼中執行的最後一個命令的結束程式碼會報告為整個指令碼的結束程式碼。例如,如果指令碼包含三個命令,而第一個命令失敗,但後續命令成功,則會因最終命令成功而將執行狀態報告為 success

如果您希望指令碼重新啟動執行個體,則必須exit 3010在指令碼中指定,即使重新啟動是指令碼中的最後一個步驟也是如此。 exit 3010指示 EC2Launch v2 重新啟動執行個體並再次呼叫指令碼,直到傳回不是的結束代碼3010,或是達到最大重新啟動計數為止。EC2Launchv2 允許每個任務最多 5 次重新啟動。如果您嘗試使用不同的機制 (例如 Restart-Computer) 從指令碼重新啟動執行個體,則指令碼執行狀態將不一致。例如,狀態可能會卡在重新啟動迴圈或不執行重新啟動。

如果您使用的是與舊版代理程式相容的使用XML者資料格式,則使用者資料的執行次數可能會比您預期的要多。如需詳細資訊,請參閱故障診斷一節中的 服務會多次執行使用者資料

EC2LaunchV2 和系統

EC2Launchv2 服務會執行 Sysprep,這是一個 Microsoft 工具,可讓您建立可重複使用AMI的自訂視窗。當 EC2Launch v2 呼叫 Sysprep 時,它會使用中的檔案%ProgramData%\Amazon\EC2Launch來決定要執行哪些作業。您可以使用EC2Launch設定對話方塊或直接使用編輯YAML器或文字編輯器來間接編輯這些檔案。但是,設定對話方塊中有些進階EC2Launch設定無法使用,因此您必須直接編輯這些項目。

如果您在更新執行個體設定後AMI從執行個體建立,則新設定會套用至從新執行個體啟動的任何執行個體AMI。若要取得有關建立的資訊AMI,請參閱創建一個 Amazon 支EBS持 AMI