

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

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

# 更新 Windows Server (AMI)
<a name="automation-tutorial-update-patch-windows-ami"></a>

`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 的角色](automation-setup-iam.md)以新增 `iam:PassRole` 政策，此政策會參考您想要授予存取之執行個體設定檔的 ARN。(選用) 為 Automation ( AWS Systems Manager中的工具) 設定 Amazon EventBridge。如需詳細資訊，請參閱[設定自動化](automation-setup.md)。此演練也需要您指定 AWS Identity and Access Management (IAM) 執行個體描述檔的名稱。如需有關建立 IAM 執行個體設定檔的詳細資訊，請參閱[設定 Systems Manager 所需的執行個體許可](setup-instance-permissions.md)。

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

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


****  

| 參數 | 類型 | 說明 | 
| --- | --- | --- | 
|  SourceAmiId  |  String  |  (必要) 來源 AMI ID。您可以使用 Systems Manager Parameter Store *公有*參數自動參考最新的 Windows Server AMI ID。如需詳細資訊，請參閱[使用 AWS Systems Manager查詢最新的 Windows AMI ID Parameter Store](https://aws.amazon.com/blogs/mt/query-for-the-latest-windows-ami-using-systems-manager-parameter-store/)。  | 
|  SubnetId  |  String  |  (選用) 您要啟動暫時執行個體的子網路。如果您已刪除預設 VPC，則必須為此參數指定一個值。  | 
|  IamInstanceProfileName  |  String  |  (必要) 您在[設定 Systems Manager 所需的執行個體許可](setup-instance-permissions.md)中所建立之 IAM 執行個體設定檔角色的名稱。執行個體設定檔角色可讓自動化許可在您的執行個體上執行動作，例如執行命令或啟動和停用服務。Runbook 僅使用執行個體設定檔角色的名稱。  | 
|  AutomationAssumeRole  |  String  |  (必要) 您在 [設定自動化](automation-setup.md) 中建立之 IAM 服務角色的名稱。服務角色 (也稱為擔任角色) 會提供自動化許可來擔任您的 IAM 角色並代表您執行動作。例如，在 Runbook 中執行 `aws:createImage` 動作時，服務角色會允許自動化建立新的 AMI。針對此參數，必須指定的完整 ARN。  | 
|  TargetAmiName  |  String  |  (選用) 建立後的新 AMI 之名稱。預設名稱為系統產生的字串，包括來源 AMI ID，以及建立時間和日期。  | 
|  InstanceType  |  String  |  (選用) 作為工作空間主機啟動的執行個體類型。執行個體類型因區域而異。預設類型為 t2.medium。  | 
|  PreUpdateScript  |  String  |  (選用) 更新 AMI 之前執行的指令碼。在 Runbook 中或在執行時間輸入指令碼作為參數。  | 
|  PostUpdateScript  |  String  |  (選用) 更新 AMI 之後執行的指令碼。在 Runbook 中或在執行時間輸入指令碼作為參數。  | 
|  IncludeKbs  |  String  |  (選用) 指定一個或多個要包含的 Microsoft 知識庫 (KB) 文章 ID。您可以使用逗號分隔值安裝多個 ID。有效格式：KB9876543 或 9876543。  | 
|  ExcludeKbs  |  String  |  (選用) 指定一個或多個要排除的 Microsoft 知識庫 (KB) 文章 ID。您可以使用逗號分隔值排除多個 ID。有效格式：KB9876543 或 9876543。  | 
|  類別  |  String  |  (選用) 指定一個或多個更新類別。您可以使用逗號分隔值篩選類別。選項：Critical Update (重大更新)，Security Update (安全性更新)，Definition Update (定義更新)，Update Rollup (更新彙總套件)，Service Pack，Tool (工具)，Update (更新)，或 Driver (驅動程式)。有效格式包含單一項目，例如：Critical Update (重大更新)。或者您可以指定逗號分隔清單：Critical Update,Security Update,Definition Update。  | 
|  SeverityLevels  |  String  |  (選用) 指定一個或多個與更新關聯的 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 Network 驅動程式。

**步驟 7：installWindowsUpdates (`aws:runCommand` 動作) **  
此步驟會藉由使用 `AWS-InstallWindowsUpdates` Runbook 安裝 Windows 更新。根據預設，Systems Manager 會搜尋和安裝所有缺少的更新。您可以藉由指定以下參數變更預設行為：`IncludeKbs`、`ExcludeKbs`、`Categories` 或 `SeverityLevels`。

**步驟 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 到 2012 R2) 方法執行 sysprep。

**步驟 10：stopInstance 停止 (`aws:changeInstanceState` 動作) **  
此步驟會停止更新的執行個體。

**步驟 11：createImage (`aws:createImage` 動作) **  
此步驟會以連結至來源 ID 和建立時間的描述性名稱建立新的 AMI。例如：「AMI Generated by EC2 Automation on \$1\$1global:DATE\$1TIME\$1\$1 from \$1\$1SourceAmiId\$1\$1」，其中 DATE\$1TIME 和 SourceID 代表自動化變數。

**步驟 12：TerminateInstance (`aws:changeInstanceState` 動作) **  
此步驟會藉由終止執行中的執行個體來清除自動化。

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

**注意**  
根據預設，自動化執行 `AWS-UpdateWindowsAmi` Runbook 和建立暫時執行個體時，系統會使用預設 VPC (172.30.0.0/16)。如果刪除預設 VPC，您會收到以下錯誤：  
VPC 未定義 400  
若要解決此問題，您必須複製 `AWS-UpdateWindowsAmi` Runbook 並指定子網路 ID。如需詳細資訊，請參閱[VPC 未定義 400](automation-troubleshooting.md#automation-trbl-common-vpc)。

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

1. 如果您尚未安裝和設定 AWS Command Line Interface (AWS CLI)。

   如需相關資訊，請參閱[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 執行下列命令，以執行 `AWS-UpdateWindowsAmi` Runbook。將每個*範例資源預留位置*取代為您自己的資訊。以下的範例命令使用最新的 Amazon EC2 AMI，將需要套用的修補程式數量降至最低。如果執行此命令超過一次，您必須為 `targetAMIname` 指定一個唯一的值。AMI 名稱必須為唯一。

   ```
   aws ssm start-automation-execution \
       --document-name="AWS-UpdateWindowsAmi" \
       --parameters SourceAmiId='AMI ID',IamInstanceProfileName='IAM instance profile',AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'
   ```

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

   ```
   {
       "AutomationExecutionId": "automation execution ID"
   }
   ```

1. 若要使用 檢視自動化 AWS CLI，請執行下列命令：

   ```
   aws ssm describe-automation-executions
   ```

1. 執行以下命令檢視自動化進度的詳細資訊。

   ```
   aws ssm get-automation-execution 
       --automation-execution-id automation execution ID
   ```

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