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

排除 Patch Manager 的故障

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

在 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.9),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 may 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 文件的内容。如果您尚未配置补丁基准以将这些文件存储在 Amazon 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 使用托管式节点的默认软件包管理器执行修补操作。双重检查存储库是否已配置并正常运行。

在 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 文档中的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 终端节点要求的更多信息,请参阅 第 6 步:创建 VPC 端点

问题:缺少补丁

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

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

原因 1:基准无效。

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

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

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

    -或者-

    如果首先打开 Amazon Systems Manager 主页,选择菜单图标 ( ) 打开导航窗格,然后选择 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 的内容