

• AWS Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# AWS Systems Manager Patch Manager 教程
<a name="patch-manager-tutorials"></a>

本节中的教程演示如何针对各种修补场景使用Patch Manager（AWS Systems Manager 中的一项工具）。

**Topics**
+ [教程：在仅支持 IPv6 的环境中修补服务器](patch-manager-server-patching-iPv6-tutorial.md)
+ [教程：使用控制台创建用于安装 Windows Service Pack 的补丁基准](patch-manager-windows-service-pack-patch-baseline-tutorial.md)
+ [教程：使用控制台更新应用程序依赖项、修补托管式节点并执行特定于应用程序的运行状况检查](aws-runpatchbaselinewithhooks-tutorial.md)
+ [教程：使用 AWS CLI 修补服务器环境](patch-manager-patch-servers-using-the-aws-cli.md)

# 教程：在仅支持 IPv6 的环境中修补服务器
<a name="patch-manager-server-patching-iPv6-tutorial"></a>

Patch Manager 支持对仅具有 IPv6 的环境中的节点进行修补。通过更新 SSM Agent 配置，可以将修补操作配置为仅调用 IPv6 服务端点。

**在仅支持 IPv6 的环境中修补服务器**

1. 确保托管式节点上安装了 SSM Agent 版本 3.3270.0 或更高版本。

1. 在托管节点上，导航到 SSM Agent 配置文件。您可以在以下目录中找到 `amazon-ssm-agent.json` 文件：
   + Linux：`/etc/amazon/ssm/`
   + macOS: `/opt/aws/ssm/`
   + Windows Server: `C:\Program Files\Amazon\SSM`

   如果 `amazon-ssm-agent.json` 尚不存在，请将同一目录下的 `amazon-ssm-agent.json.template` 内容复制到 `amazon-ssm-agent.json`。

1. 更新以下条目以设置正确的区域并将 `UseDualStackEndpoint` 设置为 `true`：

   ```
   {
    --------
       "Agent": {
           "Region": "region",
           "UseDualStackEndpoint": true
       },
   --------
   }
   ```

1. 使用适用于您操作系统的命令重启 SSM Agent 服务：
   + Linux：`sudo systemctl restart amazon-ssm-agent`
   + 使用 Snap 的 Ubuntu Server：`sudo snap restart amazon-ssm-agent`
   + macOS：`sudo launchctl stop com.amazon.aws.ssm`，之后是 `sudo launchctl start com.amazon.aws.ssm`
   + Windows Server：`Stop-Service AmazonSSMAgent`，之后是 `Start-Service AmazonSSMAgent`

   有关每个操作系统的完整命令列表，请参阅 [正在检查 SSM Agent 状态并启动代理](ssm-agent-status-and-restart.md)。

1. 执行任何修补操作，以验证修补操作在仅支持 IPv6 的环境中是否成功。确保被修补的节点与补丁源有连接。您可以检查修补执行的 Run Command 输出，以检查有关无法访问的存储库的警告。在仅支持 IPv6 的环境中运行的节点上进行修补时，请确保该节点与补丁源有连接。您可以检查修补执行的 Run Command 输出，以检查有关无法访问的存储库的警告。对于基于 DNF 的操作系统，如果 `/etc/dnf/dnf.conf` 下的 `skip_if_unavailable` 选项设置为 `True`，则可以配置在修补期间跳过不可用的存储库。基于 DNF 的操作系统包括 Amazon Linux 2023、Red Hat Enterprise Linux 8 及更高版本、Oracle Linux 8 及更高版本、Rocky Linux、AlmaLinux 以及 CentOS 8 及更高版本。在 Amazon Linux 2023 上，`skip_if_unavailable` 选项默认设置为 `True`。
**注意**  
 使用“安装覆盖列表”或“基准覆盖”功能时，请确保提供的 URL 可从节点访问。如果将 SSM Agent 配置选项 `UseDualStackEndpoint` 设置为 `true`，则在提供 S3 URL 时将使用双堆栈 S3 客户端。

# 教程：使用控制台创建用于安装 Windows Service Pack 的补丁基准
<a name="patch-manager-windows-service-pack-patch-baseline-tutorial"></a>

创建自定义补丁基准时，可以指定安装所有、部分或仅安装一种支持的补丁。

在适用于 Windows 的补丁基准中，您可以选择 `ServicePacks` 作为唯一的 **Classification (分类)** 选项，以便将补丁更新仅限于 Service Pack。Patch Manager（AWS Systems Manager 中的一项工具）可以自动安装服务包，前提是此更新在 Windows Update 或 Windows Server Update Services（WSUS）中可用。

您可以配置补丁基准，以控制是安装所有 Windows 版本的 Service Pack，还是仅安装特定版本（如 Windows 7 或 Windows Server 2016）的 Service Pack。

使用以下过程创建自定义补丁基准，专门用于在 Windows 托管式节点上安装所有 Service Pack。

**创建用于安装 Windows Service Pack（控制台）的补丁基准**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，请选择 **Patch Manager**。

1. 选择**补丁基准**选项卡，然后选择**创建补丁基准**。

1. 在 **Name (名称)** 中，输入新补丁基准的名称，例如，`MyWindowsServicePackPatchBaseline`。

1. （可选）对于 **Description (描述)**，输入此补丁基准的描述。

1. 对于 **Operating system**（操作系统），请选择 `Windows`。

1. 如果要在创建后即开始将此补丁基准用作 Windows 的默认项，请选择 **Set this patch baseline as the default patch baseline for Windows Server instances**（将此补丁基准设置为 Windows Server 实例的默认补丁基准）。
**注意**  
只有在 2022 年 12 月 22 日 [补丁策略](patch-manager-policies.md) 发布之前首次访问 Patch Manager时，此选项才可用。  
有关将现有补丁基准设置为默认项的信息，请参阅 [将现有补丁基准设置为默认项](patch-manager-default-patch-baseline.md)。

1. 在 **Approval rules for operating systems (操作系统的批准规则)** 部分，使用字段创建一个或多个自动批准规则。
   + **产品**：批准规则适用的操作系统版本，例如 `WindowsServer2012`。您可以选择一个、多个或所有受支持的 Windows 版本。默认选择为 `All`。
   + **Classification (分类)**：选择 `ServicePacks`。
   + **Severity (严重性)**：规则适用于的补丁的严重性值。要确保规则包含所有 Service Pack，请选择 `All`。
   + **Auto-approval**（自动批准）：选择要自动批准的补丁的方法。
     + **在指定的天数后批准补丁**：Patch Manager 在发布或更新补丁之后等待的天数，然后自动批准补丁。可以输入零 (0) 到 360 的任何整数。对于大多数情况，我们建议等待期不超过 100 天。
     + **批准在特定日期之前发布的补丁**：补丁发布日期，Patch Manager 自动应用在该日期或之前发布或更新的所有补丁。例如，如果指定 2023 年 7 月 7 日，则不会自动安装在 2023 年 7 月 8 日或之后发布或最后更新的任何补丁。
   + （可选）**Compliance reporting (合规性报告)**：要分配给由基准批准的 Service Pack 的严重性级别，例如 `High`。
**注意**  
如果您指定合规性报告级别以及任何已批准 Service Pack 的补丁状态报告为 `Missing`，则补丁基准报告的总体合规性严重性级别就是您指定的严重级别。

1. （可选）对于**管理标签**，将一个或多个标签键名称/值对应用到补丁基准。

   标签是您分配给资源的可选元数据。标签允许您按各种标准（如用途、所有者或环境）对资源进行分类。对于专用于更新 Service Pack 的此补丁基准，您可以指定键值对，如下所示：
   + `Key=OS,Value=Windows`
   + `Key=Classification,Value=ServicePacks`

1. 请选择**创建补丁基准**。

# 教程：使用控制台更新应用程序依赖项、修补托管式节点并执行特定于应用程序的运行状况检查
<a name="aws-runpatchbaselinewithhooks-tutorial"></a>

在许多情况下，在使用最新软件更新修补托管式节点后必须将其重启。但是，在没有安全措施的情况下重启生产中的节点可能会导致若干问题，例如调用告警、记录不正确的指标数据以及中断数据同步。

本教程将演示为了避免上述类似问题，如何通过使用 AWS Systems Manager 文档（SSM 文档）`AWS-RunPatchBaselineWithHooks` 来实现复杂的多步骤修补操作，该操作可完成以下事项：

1. 防止新连接到应用程序

1. 安装操作系统更新

1. 更新应用程序的软件包依赖项

1. 重启系统

1. 执行特定于应用程序的运行状况检查

在此示例中，我们以这种方式设置了我们的基础设施：
+ 目标虚拟机在 Systems Manager 中注册为托管式节点。
+ `Iptables` 作本地防火墙。
+ 托管式节点上托管的应用程序正在端口 443 上运行。
+ 托管式节点上托管的应用程序是 `nodeJS` 应用程序。
+ 托管式节点上托管的应用程序由 pm2 进程管理器管理。
+ 应用程序已经具有指定的运行状况检查终端节点。
+ 应用程序的运行状况检查终结点不需要终端用户身份验证。终端节点允许进行运行状况检查，以满足组织在建立可用性方面的要求。（在您的环境中，可能只需确定正在运行 `nodeJS` 应用程序，并且能够侦听请求。在其他情况下，您可能还需要验证是否已建立到缓存层或数据库层的连接。）

本教程中的示例仅用于演示目的，并不意味着按原样实施到生产环境中。另请注意，Patch Manager（Systems Manager 中的一项工具）的生命周期挂钩功能和 `AWS-RunPatchBaselineWithHooks` 文档搭配使用，可以支持许多其他场景。下面是几个示例。
+ 在修补之前停止指标报告代理，并在托管式节点重启后重启该代理。
+ 在进行修补之前，将托管式节点与 CRM 或 PCS 集群分离，并在节点重启后重新连接。
+ 在应用操作系统 (OS) 更新之后、托管式节点重启之前，在 Windows Server 计算机上更新第三方软件（例如，Java、Tomcat、Adobe 应用程序等）。

**更新应用程序依赖项、修补托管式节点并执行特定于应用程序的运行状况检查**

1. 使用以下内容为预安装脚本创建 SSM 文档，并将其命名为 `NodeJSAppPrePatch`。将*您的应用程序*替换为应用程序的名称。

   此脚本会立即阻止新的传入请求，并在开始修补操作之前为已经激活的请求提供 5 秒钟的完成时间。对于 `sleep` 选项，请指定一个比传入请求完成通常所需秒数大的秒数。

   ```
   # exit on error
   set -e
   # set up rule to block incoming traffic
   iptables -I INPUT -j DROP -p tcp --syn --destination-port 443 || exit 1
   # wait for current connections to end. Set timeout appropriate to your application's latency
   sleep 5 
   # Stop your application
   pm2 stop your_application
   ```

   有关创建 SSM 文档的信息，请参阅 [创建 SSM 文档内容](documents-creating-content.md)。

1. 为安装后脚本创建包含以下内容的另一个 SSM 文档，以更新应用程序依赖项，并将其命名为 `NodeJSAppPostPatch`。将*/您的/应用程序/路径*替换为通向您的应用程序的路径。

   ```
   cd /your/application/path
   npm update 
   # you can use npm-check-updates if you want to upgrade major versions
   ```

1. 创建另一个包含以下内容的 SSM 文档，其中的 `onExit` 脚本使应用程序备份并执行运行状况检查。命名此 SSM 文档为 `NodeJSAppOnExitPatch`。将*您的应用程序*替换为您的应用程序的名称。

   ```
   # exit on error
   set -e
   # restart nodeJs application
   pm2 start your_application
   # sleep while your application starts and to allow for a crash
   sleep 10
   # check with pm2 to see if your application is running
   pm2 pid your_application
   # re-enable incoming connections
   iptables -D INPUT -j DROP -p tcp --syn --destination-port 
   # perform health check
   /usr/bin/curl -m 10 -vk -A "" http://localhost:443/health-check || exit 1
   ```

1. 在State Manager（AWS Systems Manager 中的一项工具）中创建关联，通过执行下列步骤发出操作：

   1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

   1. 在导航窗格中，选择 **State Manager**，然后选择**创建关联**。

   1. 对于**名称**，请提供一个名称来帮助标识关联的用途。

   1. 在**文档**列表中，选择 `AWS-RunPatchBaselineWithHooks`。

   1. 对于**操作**，选择**安装**。

   1. （可选）对于**快照 ID**，提供您生成的 GUID，以帮助加快操作速度并确保一致性。GUID 值可以像 `00000000-0000-0000-0000-111122223333` 一样简单。

   1. 对于**安装前钩子文档名称**，输入 `NodeJSAppPrePatch`。

   1. 对于**安装后钩子文档名称**，输入 `NodeJSAppPostPatch`。

   1. 对于**针对 ExitHook 文档名称**，输入 `NodeJSAppOnExitPatch`。

1. 对于 **Targets**（目标），通过指定标签、手动选择节点、选择资源组或选择所有托管式节点来标识托管式节点。

1. 对于**指定时间表**，指定运行关联的频率。对于托管式节点修补，每周修补一次是常见的节奏。

1. 在 **Rate control**（速率控制）部分中，选择用于控制如何在多个托管式节点上运行关联的选项。确保一次只更新部分托管式节点。否则，您的所有或大部分队列都可以同时离线。有关使用速率控制的更多信息，请参阅 [了解 State Manager 关联中的目标和速率控制](systems-manager-state-manager-targets-and-rate-controls.md)。

1. （可选）对于 **Output options (输出选项)**，要将命令输出保存到文件，请选中 **Enable writing output to S3 (启用将输出写入 S3)** 方框。在方框中输入存储桶和前缀（文件夹）名称。
**注意**  
授予将数据写入 S3 存储桶的能力的 S3 权限，是分配给托管式节点的实例配置文件的权限，而不是执行此任务的 IAM 用户的权限。有关更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)或[为混合环境创建 IAM 服务角色](hybrid-multicloud-service-role.md)。此外，如果指定的 S3 存储桶位于不同的 AWS 账户 中，请确认与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

1. 选择**创建关联**。

# 教程：使用 AWS CLI 修补服务器环境
<a name="patch-manager-patch-servers-using-the-aws-cli"></a>

以下过程介绍如何使用自定义补丁基准、补丁组和维护时段来修补服务器环境。

**开始前的准备工作**
+ 在托管式节点上安装或更新 SSM Agent。要修补 Linux 托管式节点，节点必须运行 SSM Agent 2.0.834.0 版或更高版本。有关更多信息，请参阅 [使用 Run Command 更新 SSM Agent](run-command-tutorial-update-software.md#rc-console-agentexample)。
+ 配置 Maintenance Windows（AWS Systems Manager 中的一项工具）的角色和权限。有关更多信息，请参阅 [设置 Maintenance Windows](setting-up-maintenance-windows.md)。
+ 安装并配置 AWS Command Line Interface（AWS CLI）（如果尚未执行该操作）。

  有关信息，请参阅[安装或更新 AWS CLI 的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

**配置 Patch Manager 并修补托管式节点（命令行）**

1. 运行以下命令以创建名为 `Production-Baseline` 的适用于 Windows 的补丁基准。此补丁基准会在补丁发布或最后更新 7 天后批准用于生产环境。即，我们已标记补丁基准，以指示它适用于生产环境。
**注意**  
`OperatingSystem` 参数和 `PatchFilters` 因补丁基准应用到的目标托管式节点的操作系统而异。有关详细信息，请参阅 [OperatingSystem](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreatePatchBaseline.html#systemsmanager-CreatePatchBaseline-request-OperatingSystem) 和 [PatchFilter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html)。

------
#### [ Linux & macOS ]

   ```
   aws ssm create-patch-baseline \
       --name "Production-Baseline" \
       --operating-system "WINDOWS" \
       --tags "Key=Environment,Value=Production" \
       --approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=MSRC_SEVERITY,Values=[Critical,Important]},{Key=CLASSIFICATION,Values=[SecurityUpdates,Updates,ServicePacks,UpdateRollups,CriticalUpdates]}]},ApproveAfterDays=7}]" \
       --description "Baseline containing all updates approved for production systems"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm create-patch-baseline ^
       --name "Production-Baseline" ^
       --operating-system "WINDOWS" ^
       --tags "Key=Environment,Value=Production" ^
       --approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=MSRC_SEVERITY,Values=[Critical,Important]},{Key=CLASSIFICATION,Values=[SecurityUpdates,Updates,ServicePacks,UpdateRollups,CriticalUpdates]}]},ApproveAfterDays=7}]" ^
       --description "Baseline containing all updates approved for production systems"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "BaselineId":"pb-0c10e65780EXAMPLE"
   }
   ```

1. 运行以下命令为两个补丁组注册“生产-基准”补丁基准。这些组命名为“数据库服务器”和“前端服务器”。

------
#### [ Linux & macOS ]

   ```
   aws ssm register-patch-baseline-for-patch-group \
       --baseline-id pb-0c10e65780EXAMPLE \
       --patch-group "Database Servers"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm register-patch-baseline-for-patch-group ^
       --baseline-id pb-0c10e65780EXAMPLE ^
       --patch-group "Database Servers"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "PatchGroup":"Database Servers",
      "BaselineId":"pb-0c10e65780EXAMPLE"
   }
   ```

------
#### [ Linux & macOS ]

   ```
   aws ssm register-patch-baseline-for-patch-group \
       --baseline-id pb-0c10e65780EXAMPLE \
       --patch-group "Front-End Servers"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm register-patch-baseline-for-patch-group ^
       --baseline-id pb-0c10e65780EXAMPLE ^
       --patch-group "Front-End Servers"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "PatchGroup":"Front-End Servers",
      "BaselineId":"pb-0c10e65780EXAMPLE"
   }
   ```

1. 运行以下命令为生产服务器创建两个维护时段。第一个时段在每周二晚上 10 点运行。第二个时段在每周六晚上 10 点运行。此外，维护时段已标记来指示它适用于生产环境。

------
#### [ Linux & macOS ]

   ```
   aws ssm create-maintenance-window \
       --name "Production-Tuesdays" \
       --tags "Key=Environment,Value=Production" \
       --schedule "cron(0 0 22 ? * TUE *)" \
       --duration 1 \
       --cutoff 0 \
       --no-allow-unassociated-targets
   ```

------
#### [ Windows Server ]

   ```
   aws ssm create-maintenance-window ^
       --name "Production-Tuesdays" ^
       --tags "Key=Environment,Value=Production" ^
       --schedule "cron(0 0 22 ? * TUE *)" ^
       --duration 1 ^
       --cutoff 0 ^
       --no-allow-unassociated-targets
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "WindowId":"mw-0c50858d01EXAMPLE"
   }
   ```

------
#### [ Linux & macOS ]

   ```
   aws ssm create-maintenance-window \
       --name "Production-Saturdays" \
       --tags "Key=Environment,Value=Production" \
       --schedule "cron(0 0 22 ? * SAT *)" \
       --duration 2 \
       --cutoff 0 \
       --no-allow-unassociated-targets
   ```

------
#### [ Windows Server ]

   ```
   aws ssm create-maintenance-window ^
       --name "Production-Saturdays" ^
       --tags "Key=Environment,Value=Production" ^
       --schedule "cron(0 0 22 ? * SAT *)" ^
       --duration 2 ^
       --cutoff 0 ^
       --no-allow-unassociated-targets
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "WindowId":"mw-9a8b7c6d5eEXAMPLE"
   }
   ```

1. 运行以下命令，将 `Database` 和 `Front-End` 服务器补丁组注册到其各自的维护时段。

------
#### [ Linux & macOS ]

   ```
   aws ssm register-target-with-maintenance-window \
       --window-id mw-0c50858d01EXAMPLE \
       --targets "Key=tag:PatchGroup,Values=Database Servers" \
       --owner-information "Database Servers" \
       --resource-type "INSTANCE"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm register-target-with-maintenance-window ^
       --window-id mw-0c50858d01EXAMPLE ^
       --targets "Key=tag:PatchGroup,Values=Database Servers" ^
       --owner-information "Database Servers" ^
       --resource-type "INSTANCE"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "WindowTargetId":"e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
   }
   ```

------
#### [ Linux & macOS ]

   ```
   aws ssm register-target-with-maintenance-window \
   --window-id mw-9a8b7c6d5eEXAMPLE \
   --targets "Key=tag:PatchGroup,Values=Front-End Servers" \
   --owner-information "Front-End Servers" \
   --resource-type "INSTANCE"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm register-target-with-maintenance-window ^
       --window-id mw-9a8b7c6d5eEXAMPLE ^
       --targets "Key=tag:PatchGroup,Values=Front-End Servers" ^
       --owner-information "Front-End Servers" ^
       --resource-type "INSTANCE"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "WindowTargetId":"faa01c41-1d57-496c-ba77-ff9caEXAMPLE"
   }
   ```

1. 运行以下命令注册一个补丁任务，该任务在 `Database` 和 `Front-End` 服务器各自的维护时段内安装缺少的更新。

------
#### [ Linux & macOS ]

   ```
   aws ssm register-task-with-maintenance-window \
       --window-id mw-0c50858d01EXAMPLE \
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
       --task-arn "AWS-RunPatchBaseline" \
       --service-role-arn "arn:aws:iam::123456789012:role/MW-Role" \
       --task-type "RUN_COMMAND" \
       --max-concurrency 2 \
       --max-errors 1 \
       --priority 1 \
       --task-invocation-parameters "RunCommand={Parameters={Operation=Install}}"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm register-task-with-maintenance-window ^
       --window-id mw-0c50858d01EXAMPLE ^
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^
       --task-arn "AWS-RunPatchBaseline" ^
       --service-role-arn "arn:aws:iam::123456789012:role/MW-Role" ^
       --task-type "RUN_COMMAND" ^
       --max-concurrency 2 ^
       --max-errors 1 ^
       --priority 1 ^
       --task-invocation-parameters "RunCommand={Parameters={Operation=Install}}"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "WindowTaskId":"4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
   }
   ```

------
#### [ Linux & macOS ]

   ```
   aws ssm register-task-with-maintenance-window \
       --window-id mw-9a8b7c6d5eEXAMPLE \
       --targets "Key=WindowTargetIds,Values=faa01c41-1d57-496c-ba77-ff9caEXAMPLE" \
       --task-arn "AWS-RunPatchBaseline" \
       --service-role-arn "arn:aws:iam::123456789012:role/MW-Role" \
       --task-type "RUN_COMMAND" \
       --max-concurrency 2 \
       --max-errors 1 \
       --priority 1 \
       --task-invocation-parameters "RunCommand={Parameters={Operation=Install}}"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm register-task-with-maintenance-window ^
       --window-id mw-9a8b7c6d5eEXAMPLE ^
       --targets "Key=WindowTargetIds,Values=faa01c41-1d57-496c-ba77-ff9caEXAMPLE" ^
       --task-arn "AWS-RunPatchBaseline" ^
       --service-role-arn "arn:aws:iam::123456789012:role/MW-Role" ^
       --task-type "RUN_COMMAND" ^
       --max-concurrency 2 ^
       --max-errors 1 ^
       --priority 1 ^
       --task-invocation-parameters "RunCommand={Parameters={Operation=Install}}"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "WindowTaskId":"8a5c4629-31b0-4edd-8aea-33698EXAMPLE"
   }
   ```

1. 运行以下命令以获取补丁组的高级补丁合规性摘要。概括性补丁合规性摘要包括补丁处于相应状态的托管式节点的数量。
**注意**  
在第一个维护时段内，在补丁任务运行之前，预计会在摘要中看到托管式节点数量为零。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-patch-group-state \
       --patch-group "Database Servers"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm describe-patch-group-state ^
       --patch-group "Database Servers"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "Instances": number,
      "InstancesWithFailedPatches": number,
      "InstancesWithInstalledOtherPatches": number,
      "InstancesWithInstalledPatches": number,
      "InstancesWithInstalledPendingRebootPatches": number,
      "InstancesWithInstalledRejectedPatches": number,
      "InstancesWithMissingPatches": number,
      "InstancesWithNotApplicablePatches": number,
      "InstancesWithUnreportedNotApplicablePatches": number
   }
   ```

1. 运行以下命令以获取补丁组的每个托管式节点的补丁摘要状态。每个托管式节点摘要包括处于相应补丁状态的许多补丁（按补丁组的每个托管式节点划分）。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-instance-patch-states-for-patch-group \
       --patch-group "Database Servers"
   ```

------
#### [ Windows Server ]

   ```
   aws ssm describe-instance-patch-states-for-patch-group ^
       --patch-group "Database Servers"
   ```

------

   系统将返回类似于以下内容的信息。

   ```
   {
      "InstancePatchStates": [ 
         { 
            "BaselineId": "string",
            "FailedCount": number,
            "InstalledCount": number,
            "InstalledOtherCount": number,
            "InstalledPendingRebootCount": number,
            "InstalledRejectedCount": number,
            "InstallOverrideList": "string",
            "InstanceId": "string",
            "LastNoRebootInstallOperationTime": number,
            "MissingCount": number,
            "NotApplicableCount": number,
            "Operation": "string",
            "OperationEndTime": number,
            "OperationStartTime": number,
            "OwnerInformation": "string",
            "PatchGroup": "string",
            "RebootOption": "string",
            "SnapshotId": "string",
            "UnreportedNotApplicableCount": number
         }
      ]
   }
   ```

有关可以用于 Patch Manager 配置任务的其他 AWS CLI 命令的示例，请参阅 [使用 AWS CLI 处理 Patch Manager 资源使用](patch-manager-cli-commands.md)。