逐步解說:修補 Windows Server AMI - AWS Systems Manager

逐步解說:修補 Windows Server AMI

AWS-UpdateWindowsAmi Runbook 可讓您自動化 Amazon Windows Amazon Machine Image (AMI) 的映像維護任務,不必使用 JSON 或 YAML 撰寫 Runbook。此 Runbook 支援 Windows Server 2008 R2 或更新版本。您可以使用 AWS-UpdateWindowsAmi Runbook 執行以下類型的任務。

  • 安裝所有 Windows 更新和升級 Amazon 軟體 (預設行為)。

  • 安裝特定 Windows 更新和升級 Amazon 軟體。

  • 使用您的指令碼自訂 AMI。

開始之前

在您開始使用 Runbook 之前,設定 Automation 的角色以新增 iam:PassRole 政策,此政策會參考您想要授予存取之執行個體描述檔的 ARN。選擇性地設定 Amazon EventBridge 進行自動化 (AWS Systems Manager 功能)。如需更多詳細資訊,請參閱 設定自動化。此演練也需要您指定 AWS Identity and Access Management (IAM) 執行個體描述檔的名稱。如需建立 IAM 執行個體描述檔的詳細資訊,請參閱建立 Systems Manager 的 IAM 執行個體描述檔

注意

AWS Systems Manager SSM Agent 的更新通常會在不同時間於不同區域推出。自訂或更新 AMI 時,請只使用針對您工作之區域發佈的來源 AMI。這可確保您使用的是針對該區域發行的最新 SSM Agent,並且避免相容性問題。

AWS-UpdateWindowsAmi Runbook 接受以下的輸入參數。

參數 類型 描述

SourceAmiId

字串

(必要) 來源 AMI ID。您可以使用 Systems Manager Parameter Store 公有參數自動參考最新的 Windows Server AMI ID。如需詳細資訊,請參閱使用 AWS Systems Manager 查詢最新的 Windows AMI ID Parameter Store

IamInstanceProfileName

字串

(必要) 您在建立 Systems Manager 的 IAM 執行個體描述檔中所建立之 IAM 執行個體描述檔角色的名稱。執行個體描述檔角色可讓自動化許可在您的執行個體上執行動作,例如執行命令或啟動和停用服務。Runbook 僅使用執行個體描述檔角色的名稱。如果您指定 Amazon 資源名稱 (ARN),自動化。

AutomationAssumeRole

字串

(必要) 您在 設定自動化 中建立之 IAM 服務角色的名稱。服務角色 (也稱為擔任角色) 會提供自動化許可來擔任您的 IAM 角色並代表您執行動作。例如,在 Runbook 中執行 aws:createImage 動作時,服務角色會允許自動化建立新的 AMI。針對此參數,必須指定的完整 ARN。

TargetAmiName

字串

(選用) 建立後的新 AMI 之名稱。預設名稱為系統產生的字串,包括來源 AMI ID,以及建立時間和日期。

InstanceType

字串

(選用) 做為工作空間主機啟動的執行個體類型。執行個體類型因區域而異。預設類型為 t2.medium。

PreUpdateScript

字串

(選用) 更新 AMI 之前執行的指令碼。在 Runbook 中或在執行時間輸入指令碼作為參數。

PostUpdateScript

字串

(選用) 更新 AMI 之後執行的指令碼。在 Runbook 中或在執行時間輸入指令碼作為參數。

IncludeKbs

字串

(選用) 指定一個或多個要包含的 Microsoft 知識庫 (KB) 文章 ID。您可以使用逗號分隔值安裝多個 ID。有效格式:KB9876543 或 9876543。

ExcludeKbs

字串

(選用) 指定一個或多個要排除的 Microsoft 知識庫 (KB) 文章 ID。您可以使用逗號分隔值排除多個 ID。有效格式:KB9876543 或 9876543。

類別

字串

(選用) 指定一個或多個更新類別。您可以使用逗號分隔值篩選類別。選項:Critical Update (重大更新),Security Update (安全性更新),Definition Update (定義更新),Update Rollup (更新彙總套件),Service Pack,Tool (工具),Update (更新),或 Driver (驅動程式)。有效格式包含單一項目,例如:Critical Update (重大更新)。或者您可以指定逗號分隔清單:Critical Update,Security Update,Definition Update。

SeverityLevels

字串

(選用) 指定一個或多個與更新關聯的 MSRC 嚴重性等級。您可以使用逗號分隔值篩選嚴重性等級。選項:Critical,Important,Low,Moderate 或 Unspecified。有效格式包括單一項目,例如:Critical。或者,您可以指定逗號分隔清單:Critical,Important,Low。

自動化步驟

依預設,AWS-UpdateWindowsAmi Runbook 包含下列步驟。

步驟 1:launchInstance (aws:runInstances 動作)

此步驟藉由指定之 SourceAmiID 的 IAM 執行個體描述檔角色來啟動執行個體。

步驟 2:runPreUpdateScript (aws:runCommand 動作)

此步驟可讓您指定指令碼做為字串,在更新安裝之前執行。

步驟 3:updateEC2Config (aws:runCommand 動作)

此步驟會使用 AWS-InstallPowerShellModule Runbook 來下載 AWS 公有 PowerShell 模組。Systems Manager 會使用 SHA-256 雜湊來驗證模組的完整性。接著,Systems Manager 會檢查作業系統,以判斷是否要更新 EC2Config 或 EC2Launch。EC2Config 透過 Windows Server 2012 R2 在 Windows Server 2008 R2 上執行。EC2Launch 在 Windows Server 2016 上執行。

步驟 4:updateSSMAgent (aws:runCommand 動作)

此步驟會藉由使用 AWS-UpdateSSMAgent Runbook 更新 SSM Agent。

步驟 5:updateAWSPVDriver (aws:runCommand 動作)

此步驟會藉由使用 AWS-ConfigureAWSPackage Runbook 更新 AWS PV 驅動程式。

步驟 6:updateAwsEnaNetworkDriver (aws:runCommand 動作)

此步驟會藉由使用 AWS-ConfigureAWSPackage Runbook 更新 AWS ENA 網路驅動程式。

步驟 7:installWindowsUpdates (aws:runCommand 動作)

此步驟會藉由使用 AWS-InstallWindowsUpdates Runbook 安裝 Windows 更新。根據預設,Systems Manager 會搜尋和安裝所有缺少的更新。您可以藉由指定以下參數變更預設行為:IncludeKbsExcludeKbsCategoriesSeverityLevels

步驟 8:runPostUpdateScript (aws:runCommand 動作)

此步驟可讓您指定指令碼做為字串,在更新安裝之後執行。

步驟 9:runSysprepGeneralize (aws:runCommand 動作)

此步驟會使用 AWS-InstallPowerShellModule Runbook 來下載 AWS 公有 PowerShell 模組。Systems Manager 會使用 SHA-256 雜湊來驗證模組的完整性。然後 Systems Manager 使用 AWS 支援的方法為 EC2Launch (Windows Server 2016) 或 EC2Config (Windows Server 2008 R2 through 2012 R2) 執行 sysprep。

步驟 10:stopInstance 停止 (aws:changeInstanceState 動作)

此步驟會停止更新的執行個體。

步驟 11:createImage (aws:createImage 動作)

此步驟會以連結至來源 ID 和建立時間的描述性名稱建立新的 AMI。例如:「AMI Generated by EC2 Automation on {{global:DATE_TIME}} from {{SourceAmiId}}」,其中 DATE_TIME 和 SourceID 代表自動化變數。

步驟 12:TerminateInstance (aws:changeInstanceState 動作)

此步驟會藉由終止執行中的執行個體來清除自動化。

輸出

本節可讓您將各種步驟的輸出或任何參數的值指定為自動化輸出。根據預設,輸出是由自動化建立的已更新 Windows AMI 之 ID。

注意

根據預設,自動化執行 AWS-UpdateWindowsAmi Runbook 和建立暫時執行個體時,系統會使用預設 VPC (172.30.0.0/16)。如果刪除預設 VPC,您會收到以下錯誤:

VPC 未定義 400

若要解決此問題,您必須複製 AWS-UpdateWindowsAmi Runbook 並指定子網路 ID。如需更多詳細資訊,請參閱 VPC 未定義 400

使用自動化建立已修補的 Windows AMI

  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或升級 AWS 命令列工具

  2. 執行下列命令,以執行 AWS-UpdateWindowsAmi Runbook。在參數區段中,指定 AMI 來源 ID、EC2 執行個體描述檔角色及自動化服務角色。以下的範例命令使用最新的 Amazon EC2 AMI,將需要套用的修補程式數量降至最低。如果執行此命令超過一次,您必須為 targetAMIname 指定一個唯一的值。AMI 名稱必須為唯一。

    aws ssm start-automation-execution --document-name="AWS-UpdateWindowsAmi" --parameters SourceAmiId='ami-0246f4914689c475f',IamInstanceProfileName='ManagedInstanceProfile',AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

    命令會傳回執行 ID。複製此 ID 到剪貼簿。您可以使用此 ID 檢視自動化的狀態。

    {
        "AutomationExecutionId": "ID"
    }
  3. 若要使用 AWS CLI 檢視自動化,請執行以下命令:

    aws ssm describe-automation-executions
  4. 執行以下命令檢視自動化進度的詳細資訊。

    aws ssm get-automation-execution --automation-execution-id ID
注意

在此範例自動化中執行的 Windows 修補程序可能需要 30 分鐘或以上的時間完成,取決於修補程式的數量。