故障排除 Patch Manager - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

故障排除 Patch Manager

可以使用以下信息帮助对 Amazon Systems Manager 的功能 Patch Manager 出现的问题进行故障排除。

问题:baseline_overrides.json 出现“Invoke-PatchBaselineOperation : Access Denied”错误或“Unable to download file from S3”错误

问题:运行补丁策略指定的修补操作时,您会收到类似于以下示例的错误。

Example error on Windows Server
----------ERROR------- Invoke-PatchBaselineOperation : Access Denied At C:\ProgramData\Amazon\SSM\InstanceData\i-02573cafcfEXAMPLE\document\orchestr ation\792dd5bd-2ad3-4f1e-931d-abEXAMPLE\PatchWindows\_script.ps1:219 char:13 + $response = Invoke-PatchBaselineOperation -Operation Install -Snapsho ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (Amazon.Patch.Ba...UpdateOpera tion:InstallWindowsUpdateOperation) [Invoke-PatchBaselineOperation], Amazo nS3Exception + FullyQualifiedErrorId : PatchBaselineOperations,Amazon.Patch.Baseline.Op erations.PowerShellCmdlets.InvokePatchBaselineOperation failed to run commands: exit status 0xffffffff
Example error on Linux
[INFO]: Downloading Baseline Override from s3://aws-quicksetup-patchpolicy-123456789012-abcde/baseline_overrides.json [ERROR]: Unable to download file from S3: s3://aws-quicksetup-patchpolicy-123456789012-abcde/baseline_overrides.json. [ERROR]: Error loading entrance module.

原因:您在 Quick Setup 中创建了补丁策略,并且某些托管式节点已附加了实例配置文件(适用于 EC2 实例)或服务角色(适用于非 EC2 计算机)。但是,您未选中将所需的 IAM policy 添加到附加到实例的现有实例配置文件复选框,如下图所示。

将所需的 IAM policy 添加到现有实例配置文件复选框。

创建补丁策略时,还会创建一个 Amazon S3 存储桶来存储策略的配置 baseline_overrides.json 文件。如果您在创建策略时未选中将所需的 IAM policy 添加到附加到实例的现有实例配置文件复选框,则在 S3 存储桶中访问 baseline_overrides.json 所需的 IAM policy 和资源标签不会自动添加到现有 IAM 实例配置文件和服务角色中。

解决方案 1:删除现有的补丁策略配置,然后创建替代策略配置,确保选中将所需的 IAM policy 添加到附加到实例的现有实例配置文件复选框。此选择会将此 Quick Setup 配置创建的 IAM policy 应用于已附加实例配置文件或服务角色的节点。(默认情况下,Quick Setup 向还没有实例配置文件或服务角色的实例和节点添加所需策略。) 有关更多信息,请参阅 Automate organization-wide patching using a Quick Setup patch policy

解决方案 2:手动将所需的权限和标签添加到与 Quick Setup 一起使用的每个 IAM 实例配置文件和 IAM 服务角色。有关说明,请参阅 补丁策略 S3 存储桶的权限

问题:修补失败,没有明显的原因或错误消息

问题:修补操作失败,但未返回错误消息。

可能的原因:如果一次对 AWS-RunPatchBaseline 进行多次调用,它们可能会相互冲突,从而导致修补任务失败。修补日志中可能未指明这一点。

要检查并发修补操作是否可能相互中断,请查看 Run Command(Amazon Systems Manager 的一个功能)中的命令历史记录。对于修补失败的托管式节点,请检查是否有多个操作在 2 分钟内尝试对计算机进行修补。这种情况有时会导致故障。

您还可以借助以下命令使用 Amazon Command Line Interface(Amazon CLI)检查并发修补尝试。将 node-id 的值替换为托管式节点的 ID。

aws ssm list-commands \ --filter "key=DocumentName,value=AWS-RunPatchBaseline" \ --query 'Commands[*].{CommandId:CommandId,RequestedDateTime:RequestedDateTime,Status:Status}' \ --instance-id node-id \ --output table

解决方案:如果您确定由于同一托管式节点上的竞争修补操作而导致修补失败,请调整修补配置以避免再次发生这种情况。例如,如果两个维护时段指定了重叠的修补时间,请删除或修改其中一个时段。如果维护时段指定了一个修补操作,但补丁策略同时指定了不同的修补操作,则可以考虑将此务从维护时段中删除。

如果您确定冲突的修补操作不是导致这种情况失败的原因,我们建议联系 Amazon Web Services Support。

问题:意外的补丁合规结果

问题:在 Scan 操作后查看生成的修补合规性详细信息时,结果中包含的信息不符合补丁基准中设置的规则。例如,您在补丁基准中添加到 Rejected patches(已拒绝补丁)列表中的异常被列为 Missing。或者,即使您的补丁基准仅指定 Critical 补丁,分类为 Important 的补丁也被列为缺失。

原因:Patch Manager 目前支持运行 Scan 操作的多种方法:

  • Quick Setup 中配置的补丁策略

  • Quick Setup 中配置的主机管理选项

  • 运行补丁 ScanInstall 任务的维护时段

  • 按需 Patch now(立即修补)操作

运行 Scan 操作时,它会覆盖最近扫描的合规性详细信息。如果您设置了多个方法来运行 Scan 操作,并且这些方法使用不同的补丁基准和不同的规则,那么它们会导致不同的补丁合规结果。

解决方案:为避免出现意外的补丁合规结果,我们建议一次仅使用一种方法来运行 Patch Manager Scan 操作。有关更多信息,请参阅 避免意外覆盖补丁合规性数据

在 Linux 上运行 AWS-RunPatchBaseline 时出现的错误

问题:“没有这样的文件或目录”错误

问题:当您运行 AWS-RunPatchBaseline 时,修补失败,并出现以下错误之一。

IOError: [Errno 2] No such file or directory: 'patch-baseline-operations-X.XX.tar.gz'
Unable to extract tar file: /var/log/amazon/ssm/patch-baseline-operations/patch-baseline-operations-1.75.tar.gz.failed to run commands: exit status 155
Unable to load and extract the content of payload, abort.failed to run commands: exit status 152

原因 1:要运行 AWS-RunPatchBaseline 的两个命令同时在同一托管式节点上运行。这将创建一个竞争条件,导致临时 file patch-baseline-operations* 未能正确创建或访问。

原因 2/var 目录中的存储空间依然不足。

解决方案 1:确保维护时段没有具有相同的优先级并且在相同的目标 ID 上运行的两个或多个运行 AWS-RunPatchBaseline 的 Run Command 任务。如果是这种情况,请重新排序优先级。Run Command 是 Amazon Systems Manager 的一个功能。

解决方案 2:确保一次只有一个维护时段正在运行 Run Command 任务,该任务对相同的目标、在相同的时间表上使用 AWS-RunPatchBaseline。如果出现这种情况,请更改时间表。

解决方案 3:确保按照相同的计划只有一个 State Manager 关联正在运行 AWS-RunPatchBaseline,并针对相同的托管式节点。State Manager 是 Amazon Systems Manager 的一项功能。

解决方案 4:在 /var 目录中为更新程序包释放足够的存储空间。

问题:“另一个进程已获得 yum 锁定” 错误

问题:当您运行 AWS-RunPatchBaseline 时,修补失败并显示以下错误。

12/20/2019 21:41:48 root [INFO]: another process has acquired yum lock, waiting 2 s and retry.

原因AWS-RunPatchBaseline 文档已经开始在某个托管式节点上运行(在该节点中,该文档已在其他操作中运行),并且已获得软件包管理器 yum 进程。

解决方案:确保按计划运行 AWS-RunPatchBaseline 的 State Manager 关联、维护时段任务或其他配置不会在几乎同一时间针对相同的托管节点。

问题:“权限拒绝/未能运行命令” 错误

问题:当您运行 AWS-RunPatchBaseline,则修补失败并显示以下错误。

sh: 
/var/lib/amazon/ssm/instanceid/document/orchestration/commandid/PatchLinux/_script.sh: Permission denied
failed to run commands: exit status 126

原因/var/lib/amazon/ 可能会使用 noexec 权限。这是一个问题,因为 SSM Agent 把有效负载脚本下载到 /var/lib/amazon/ssm 并从该位置运行它们。

解决方案:确保您已将独占分区配置为 /var/log/amazon/var/lib/amazon,并且它们挂载了 exec 权限。

问题:“无法下载有效负载” 错误

问题:当您运行 AWS-RunPatchBaseline 时,修补失败并显示以下错误。

Unable to download payload: https://s3.DOC-EXAMPLE-BUCKET.region.amazonaws.com/aws-ssm-region/patchbaselineoperations/linux/payloads/patch-baseline-operations-X.XX.tar.gz.failed to run commands: exit status 156

原因:托管式节点没有访问指定的 Amazon Simple Storage Service (Amazon S3) 存储桶所需的权限。

解决方案:更新您的网络配置,以便可访问 S3 终端节点。有关更多详细信息,请参阅 SSM Agent 与 Amazon 托管 S3 存储桶进行通信 中 Patch Manager 对 S3 存储桶的所需访问。

问题:“不支持的软件包管理器和 python 版本组合” 错误

问题:当您运行 AWS-RunPatchBaseline 时,修补失败并显示以下错误。

An unsupported package manager and python version combination was found. Apt requires Python3 to be installed.
failed to run commands: exit status 1

原因:Debian Server、Raspberry Pi OS 或 Ubuntu Server 实例上未安装受支持版本的 python3。

解决方案:在服务器上安装受支持版本的 python3(3.0-3.10),Debian Server、Raspberry Pi OS 以及 Ubuntu Server 托管式节点必须使用这些版本。

问题:Patch Manager 没有应用指定来排除某些软件包的规则

问题:您试图排除某些软件包,方法是在 /etc/yum.conf 文件中指定这些软件包,格式为 exclude=package-name,但在 Patch Manager Install 操作期间不排除它们。

原因:Patch Manager 不包含 /etc/yum.conf 文件中指定的排除项。

解决方案:要排除特定软件包,请创建自定义补丁基准并创建排除不想安装的软件包的规则。

问题:修补失败同时 Patch Manager 报告 TLS 的服务器名称指示扩展不可用

问题:修补操作发出以下消息。

/var/log/amazon/ssm/patch-baseline-operations/urllib3/util/ssl_.py:369: 
SNIMissingWarning: An HTTPS request has been made, but the SNI (Server Name Indication) extension
to TLS is not available on this platform. This might cause the server to present an incorrect TLS 
certificate, which can cause validation failures. You can upgrade to a newer version of Python 
to solve this. 
For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

原因:此消息不表示错误存在。相反,这是一个警告,即随操作系统一起分发的较旧版本的 Python 不支持 TLS 服务器名称指示。在连接到支持 SNI 的 Amazon API 时,Systems Manager 补丁有效负载脚本发出这个警告。

解决方案:若要在报告此消息时解决任何修补失败问题,请查看 stdoutstderr 文件的内容。如果您尚未配置补丁基准以将这些文件存储在 S3 存储桶或 Amazon CloudWatch Logs 中,则可以在 Linux 托管节点上的以下位置找到这些文件。

/var/lib/amazon/ssm/instance-id/document/orchestration/Run-Command-execution-id/awsrunShellScript/PatchLinux

问题:Patch Manager 报告“没有更多的镜像要尝试”

问题:修补操作发出以下消息。

[Errno 256] No more mirrors to try.

原因:在托管式节点上配置的存储库无法正常工作。可能的原因包括:

  • yum 缓存已损坏。

  • 由于网络相关问题,无法访问存储库 URL。

解决方案:Patch Manager 使用托管式节点的默认软件包管理器执行修补操作。双重检查存储库是否已配置并正常运行。

问题:修补失败并显示消息“Error code returned from curl is 23”

问题:使用 AWS-RunPatchBaseline 的修补操作失败,并出现类似以下内容的错误:

05/01/2023 17:04:30 root [ERROR]: Error code returned from curl is 23

原因:系统上使用的 curl 工具缺少写入文件系统所需的权限。如果程序包管理器的默认 curl 工具被其他版本(例如随 snap 安装的版本)所取代,则可能会发生这种情况。

解决方案:如果安装其他版本时卸载了程序包管理器提供的 curl 版本,请重新安装。

如果您需要安装多个 curl 版本,请确保与程序包管理器关联的版本位于 PATH 变量中列出的第一个目录中。您可以通过运行命令 echo $PATH 来查看系统上检查可执行文件的目录的当前顺序。

问题:修补失败并显示消息“Error unpacking rpm package…”

问题:修补操作失败,并出现类似以下内容的错误:

Error : Error unpacking rpm package python-urllib3-1.25.9-1.amzn2.0.2.noarch
python-urllib3-1.25.9-1.amzn2.0.1.noarch was supposed to be removed but is not!
failed to run commands: exit status 1

原因 1:特定程序包存在于多个程序包安装程序(例如 pipyumdnf)中时,使用默认程序包管理器时可能会发生冲突。

一个常见的示例是 urllib3 程序包,可以在 pipyumdnf 中找到。

原因 2python-urllib3 程序包已损坏。如果 yumdnf 先前安装了 rpm 程序包之后,pip 安装或更新了程序包文件,则可能会发生这种情况。

解决方案:通过运行命令 sudo pip uninstall urllib3 从 pip 中删除 python-urllib3 程序包,仅将此程序包保留在默认程序包管理器(yumdnf)中。

问题:修补失败并显示消息“Errors were encountered while downloading packages”

问题:在修补期间,您会收到类似以下内容的错误:

YumDownloadError: [u'Errors were encountered while downloading 
packages.', u'libxml2-2.9.1-6.el7_9.6.x86_64: [Errno 5] [Errno 12] 
Cannot allocate memory', u'libxslt-1.1.28-6.el7.x86_64: [Errno 5] 
[Errno 12] Cannot allocate memory', u'libcroco-0.6.12-6.el7_9.x86_64: 
[Errno 5] [Errno 12] Cannot allocate memory', u'openldap-2.4.44-25.el7_9.x86_64: 
[Errno 5] [Errno 12] Cannot allocate memory',

原因:托管式节点上的可用内存不足时,可能会发生此错误。

解决方案:配置交换内存,或将实例升级到其他类型以增加内存。然后开始新的修补操作。

问题:修补失败并显示消息“The following signatures couldn't be verified because the public key is not available”

问题:Ubuntu Server 上的修补失败,并出现类似以下内容的错误:

02/17/2022 21:08:43 root [ERROR]: W:GPG error: 
http://repo.mysql.com/apt/ubuntu  bionic InRelease: The following 
signatures couldn't be verified because the public key is not available: 
NO_PUBKEY 467B942D3A79BD29, E:The repository ' http://repo.mysql.com/apt/ubuntu bionic

原因:GNU 隐私保护(GPG)密钥已过期或丢失。

解决方案:刷新 GPG 密钥,或者重新添加密钥。

例如,借助之前显示的错误,我们发现 467B942D3A79BD29 密钥丢失,必须添加此密钥。为此,请运行以下命令之一:

sudo apt-key adv --keyserver hkps://keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 467B942D3A79BD29

或者,要刷新所有密钥,请运行以下命令:

sudo apt-key adv --keyserver hkps://keyserver.ubuntu.com --refresh-keys

如果之后再次出现此错误,我们建议将问题报告给维护存储库的组织。在修复可用之前,您可以编辑 /etc/apt/sources.list 文件以在修补过程中省略存储库。

为此,请打开 sources.list 文件进行编辑,找到存储库所在的行,然后在行首插入 # 字符将其注释掉。保存并关闭此文件。

问题:修补失败并显示消息“NoMoreMirrorsRepoError”

问题:您会收到类似以下内容的错误:

NoMoreMirrorsRepoError: failure: repodata/repomd.xml from pgdg94: [Errno 256] No more mirrors to try.

原因:源存储库中存在错误。

解决方案:我们建议将问题报告给维护存储库的组织。在错误修复之前,您可以在操作系统级别禁用存储库。为此,请运行以下命令,将 repo-name 的值替换为存储库名称:

yum-config-manager --disable repo-name

以下为示例。

yum-config-manager --disable pgdg94

运行此命令后,再次执行修补操作。

问题:修补失败并显示消息“Unable to download payload”

问题:您会收到类似以下内容的错误:

Unable to download payload: 
https://s3.dualstack.eu-west-1.amazonaws.com/aws-ssm-eu-west-1/patchbaselineoperations/linux/payloads/patch-baseline-operations-1.83.tar.gz.
failed  to run commands: exit status 156

原因:托管式节点配置存在错误或不完整。

解决方案:确保托管式节点配置如下:

  • 安全组中的出站 TCP 443 规则。

  • NACL 中的出口 TCP 443 规则。

  • NACL 中的入口 TCP 1024-65535 规则。

  • 路由表中的 NAT/IGW 用于提供与 S3 端点的连接。如果实例无法访问互联网,请为其提供与 S3 端点的连接。为此,请在 VPC 中添加 S3 网关端点,并将其与托管式节点的路由表集成。

问题:修补失败并显示消息“install errors: dpkg: error: dpkg frontend is locked by another process”

问题:修补失败,并出现类似以下内容的错误:

install errors: dpkg: error: dpkg frontend is locked by another process
failed to run commands: exit status 2
Failed to install package; install status Failed

原因:程序包管理器已经在操作系统级别的托管式节点上运行另一个进程。如果其他进程需要很长时间才能完成,则 Patch Manager 修补操作可能会超时并失败。

解决方案:使用程序包管理器的其他进程完成后,执行新的修补操作。

问题:Ubuntu Server 上的修补失败并出现“dpkg was interrupted”错误

问题:在 Ubuntu Server 上,修补失败并出现类似以下内容的错误:

E: dpkg was interrupted, you must manually run
'dpkg --configure -a' to correct the problem.

原因:一个或多个程序包配置错误。

解决方案:执行以下步骤:

  1. 通过依次运行以下命令来检查受影响的程序包,以及每个程序包存在的问题:

    sudo apt-get check
    sudo dpkg -C
    dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' | grep -E ^.[^nci]
  2. 通过运行以下命令更正有问题的程序包:

    sudo dpkg --configure -a
  3. 如果之前的命令未完全解决问题,可运行以下命令:

    sudo apt --fix-broken install

问题:程序包管理器实用工具无法解析包依赖项

问题:托管式节点上的本机程序包管理器无法解析程序包依赖项,修补失败。以下错误消息示例指示使用 yum 作为程序包管理器的操作系统上的此类故障。

09/22/2020 08:56:09 root [ERROR]: yum update failed with result code: 1, 
message: [u'rpm-python-4.11.3-25.amzn2.0.3.x86_64 requires rpm = 4.11.3-25.amzn2.0.3', 
u'awscli-1.18.107-1.amzn2.0.1.noarch requires python2-botocore = 1.17.31']

原因:在 Linux 操作系统上,Patch Manager 使用计算机上的本机程序包管理器来执行修补操作。例如 yumdnfaptzypper。应用程序会根据需要自动检测、安装、更新或删除从属程序包。但是,某些情况可能会导致程序包管理器无法完成依赖项操作,例如:

  • 操作系统上配置了多个相互冲突的存储库。

  • 由于网络相关问题,无法访问远程存储库 URL。

  • 存储库中发现了错误架构的包。

解决方案:由于各种原因,依赖项可能会导致修补失败。因此,我们建议您联系 Amazon Web Services Support 以帮助您进行故障排除。

在 Windows Server 上运行 AWS-RunPatchBaseline 时出现错误

问题:产品系列/产品对不匹配

问题:在 Systems Manager 控制台中创建补丁基准时,您指定了产品系列和产品。例如,您可能选择:

  • 产品系列Office

    产品Office 2016

原因:如果您尝试使用不匹配的产品系列/产品对创建补丁基准,则会显示一条错误消息。以下是可能发生这种情况的原因:

  • 您选择了有效的产品系列/产品对,但随后删除了所选的产品系列。

  • 您从 Obsolete or mismatched options (过时或不匹配的选项) 子列表中选择的产品,而不是 Available and matching options (可用和匹配选项) 子列表。

    产品过时或不匹配的选项子列表中的项目,可能是通过 SDK 或 Amazon Command Line Interface (Amazon CLI) create-patch-baseline 命令错误输入的。这可能意味着存在拼写错误或产品被分配到了错误的产品系列。如果为之前的补丁基准指定了某个产品,但该产品目前没有 Microsoft 提供的补丁,它也会包含在 过时或不匹配的选项 子列表中。

解决方案为避免控制台中出现此问题,请始终从当前可用选项子列表中选择选项。

您还可以使用 Amazon CLI 中的 describe-patch-properties 命令或 DescribePatchProperties API 命令查看具有可用补丁的产品。

问题: AWS-RunPatchBaseline 输出返回 HRESULT(Windows Server)

问题:您收到类似如下内容的错误:

----------ERROR-------
Invoke-PatchBaselineOperation : Exception Details: An error occurred when 
attempting to search Windows Update.
Exception Level 1:
 Error Message: Exception from HRESULT: 0x80240437
 Stack Trace: at WUApiLib.IUpdateSearcher.Search(String criteria)..
(Windows updates)
11/22/2020 09:17:30 UTC | Info | Searching for Windows Updates.
11/22/2020 09:18:59 UTC | Error | Searching for updates resulted in error: Exception from HRESULT: 0x80240437
----------ERROR-------
failed to run commands: exit status 4294967295

原因:此输出表示本机 Windows 更新 API 无法运行修补操作。

解决方案:检查以下 microsoft.com 主题中的 HResult 代码以确定解决错误的故障排除步骤:

问题:托管式节点无法访问 Windows 更新目录或 WSUS

问题:您收到类似如下内容的错误。

Downloading PatchBaselineOperations PowerShell module from https://s3.aws-api-domain/path_to_module.zip to C:\Windows\TEMP\Amazon.PatchBaselineOperations-1.29.zip.

Extracting PatchBaselineOperations zip file contents to temporary folder.

Verifying SHA 256 of the PatchBaselineOperations PowerShell module files.

Successfully downloaded and installed the PatchBaselineOperations PowerShell module.

Patch Summary for

PatchGroup :

BaselineId :

Baseline : null

SnapshotId :

RebootOption : RebootIfNeeded

OwnerInformation :

OperationType : Scan

OperationStartTime : 1970-01-01T00:00:00.0000000Z

OperationEndTime : 1970-01-01T00:00:00.0000000Z

InstalledCount : -1

InstalledRejectedCount : -1

InstalledPendingRebootCount : -1

InstalledOtherCount : -1

FailedCount : -1

MissingCount : -1

NotApplicableCount : -1

UnreportedNotApplicableCount : -1

EC2AMAZ-VL3099P - PatchBaselineOperations Assessment Results - 2020-12-30T20:59:46.169

----------ERROR-------

Invoke-PatchBaselineOperation : Exception Details: An error occurred when attempting to search Windows Update.

Exception Level 1:

Error Message: Exception from HRESULT: 0x80072EE2

Stack Trace: at WUApiLib.IUpdateSearcher.Search(String criteria)

at Amazon.Patch.Baseline.Operations.PatchNow.Implementations.WindowsUpdateAgent.SearchForUpdates(String

searchCriteria)

At C:\ProgramData\Amazon\SSM\InstanceData\i-02573cafcfEXAMPLE\document\orchestration\3d2d4864-04b7-4316-84fe-eafff1ea58

e3\PatchWindows\_script.ps1:230 char:13

+ $response = Invoke-PatchBaselineOperation -Operation Install -Snapsho ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : OperationStopped: (Amazon.Patch.Ba...UpdateOperation:InstallWindowsUpdateOperation) [Inv

oke-PatchBaselineOperation], Exception

+ FullyQualifiedErrorId : Exception Level 1:

Error Message: Exception Details: An error occurred when attempting to search Windows Update.

Exception Level 1:

Error Message: Exception from HRESULT: 0x80072EE2

Stack Trace: at WUApiLib.IUpdateSearcher.Search(String criteria)

at Amazon.Patch.Baseline.Operations.PatchNow.Implementations.WindowsUpdateAgent.SearchForUpdates(String searc

---Error truncated----

原因:此错误可能与 Windows 更新组件,或缺乏连接到 Windows 更新目录或 Windows 服务器更新服务 (WSUS)有关。

解决方案:确认托管式节点已通过互联网网关、NAT 网关或 NAT 实例与 Microsoft 更新目录连接。如果您使用的是 WSUS,请确认该托管式节点已连接到环境中的 WSUS 服务器。如果可以连接到预期目标,请查看 Microsoft 文档中 HResult 0x80072EE2 的其他潜在原因。这可能表明存在操作系统级问题。

问题:无法下载 PatchBaselineOperations (补丁基准操作) PowerShell 模块

问题:您收到类似如下内容的错误。

Preparing to download PatchBaselineOperations PowerShell module from S3.
                    
Downloading PatchBaselineOperations PowerShell module from https://s3.aws-api-domain/path_to_module.zip to C:\Windows\TEMP\Amazon.PatchBaselineOperations-1.29.zip.
----------ERROR-------

C:\ProgramData\Amazon\SSM\InstanceData\i-02573cafcfEXAMPLE\document\orchestration\aaaaaaaa-bbbb-cccc-dddd-4f6ed6bd5514\

PatchWindows\_script.ps1 : An error occurred when executing PatchBaselineOperations: Unable to connect to the remote server

+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException

+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,_script.ps1

failed to run commands: exit status 4294967295

解决方案:检查托管式节点与 Amazon Simple Storage Service (Amazon S3) 的连接和权限。托管式节点的 Amazon Identity and Access Management (IAM) 角色必须使用 SSM Agent 与 Amazon 托管 S3 存储桶进行通信 中引用的最低权限。节点必须通过 Amazon S3 网关端点、NAT 网关或互联网网关与 Amazon S3 端点进行通信。有关 Amazon Systems Manager SSM Agent (SSM Agent)的 VPC 终端节点要求的更多信息,请参阅 步骤 2:创建 VPC 端点

问题:缺少补丁

问题AWS-RunPatchbaseline 已成功完成,但缺少一些补丁。

以下是一些常见原因及其解决方案。

原因 1:基准无效。

解决方案 1:要检查这是否是原因,请使用以下过程。

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Run Command

    -或者-

    如果首先打开 Amazon Systems Manager 主页,选择菜单图标 ( The menu icon ) 打开导航窗格,然后选择 Run Command

  3. 选择命令历史记录选项卡,然后选择要检查其基准的命令。

  4. 选择缺少补丁的托管式节点。

  5. 选择步骤 1 - 输出并查找 BaselineId 值。

  6. 检查分配的补丁基准配置,即补丁基准的操作系统、产品名称、分类和严重性。

  7. 转至微软更新目录

  8. 搜索 Microsoft 知识库 (KB) 文章 ID(例如 KB3216916)。

  9. 确认 Product(产品)下的值与托管式节点的值相匹配,然后选择相应的 Title(标题)。一个新更新详细信息窗口将打开。

  10. 概述选项卡中,分类MSRC 严重性必须与之前找到的补丁基准配置匹配。

原因 2:已替换补丁。

解决方案 2:要检查是否为真,请使用以下过程。

  1. 转至微软更新目录

  2. 搜索 Microsoft 知识库 (KB) 文章 ID(例如 KB3216916)。

  3. 确认 Product(产品)下的值与托管式节点的值相匹配,然后选择相应的 Title(标题)。一个新更新详细信息窗口将打开。

  4. 转至程序包详细信息选项卡。在此更新已被以下更新所替换:标头下面查找条目。

原因 3:相同的补丁可能具有不同的知识库编号,因为 WSUS 和窗口联机更新由 Microsoft 处理为独立的发布渠道。

解决方案 3:检查补丁的资格。如果软件包在 WSUS 下不可用,请安装操作系统构建 14393.3115。如果该软件包适用于所有操作系统构建,请安装操作系统构建 18362.1256 和 18363.1256

联系 Amazon Web Services Support

如果您无法在本节 中的 Systems Manager 问题中找到故障排除解决方案,并且您有开发人员、业务或企业 Amazon Web Services Support 计划,可在 Amazon Web Services Support 创建一个技术支持用例。

在您联系 Amazon Web Services Support 之前,收集以下物品:

  • SSM 代理日志

  • Run Command 命令 ID、维护时段 ID 或自动化执行 ID

  • 对于 Windows Server 托管式节点,还要收集以下内容:

    • %PROGRAMDATA%\Amazon\PatchBaselineOperations\Logs,如 Windows 的选项卡 如何安装补丁 中所描述的那样

    • Windows 更新日志:对于 Windows Server 2012 R2 及更高版本,使用 %windir%/WindowsUpdate.log。对于 Windows Server 2016 及更新版本,首先运行 PowerShell 命令 Get-WindowsUpdateLog,然后再使用 %windir%/WindowsUpdate.log

  • 对于 Linux 托管式节点,还要收集以下内容:

    • 目录 /var/lib/amazon/ssm/instance-id/document/orchestration/Run-Command-execution-id/awsrunShellScript/PatchLinux 的内容