我想对我的补丁管理器(Linux)操作失败进行故障排除。
简短描述
修补操作可能因多种原因而失败,错误的故障排除可能会因所使用的操作系统而异。您可以在 AWS 管理控制台或 API 响应中找到错误。但是,控制台输出被截断为 48,000 个字符,这限制了对某些问题的了解。对于这些问题,最佳实践是查看存储在托管节点上的完整输出。您还可以使用发送到 Amazon CloudWatch(CloudWatch)和 Amazon Simple Storage Service(Amazon S3)的输出来进一步进行故障排除。
以下是补丁管理器(Linux)操作失败时可能收到的错误:
- 权限被拒绝/无法运行命令
- 无法下载有效负载
- 没有此类文件或目录
- 另一个进程获得了 yum 锁定
- 不受支持的包管理器和 Python 版本组合
- 不受支持的操作系统
- 输出被截断
解决方法
要解决补丁管理器(Linux)操作失败时可能收到的错误,请完成以下步骤:
权限被拒绝/无法运行命令
当使用 noexec 权限挂载 /var/lib/amazon 时,会出现以下示例错误:
/var/lib/amazon/ssm/<instanceid>/document/orchestration/<commandid>/PatchLinux/_script.sh: Permission deniedfailed to run commands: exit status 126
要解决此错误,请确保您已将专有分区配置为 /var/log/amazon 和 /var/lib/amazon,并且使用 exec 权限挂载了这些分区。
无法下载有效负载
当托管节点没有访问指定的 Amazon S3 桶所需的权限时,会出现以下错误示例:
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 S3 端点可访问。有关详细信息,请参阅 SSM Agent 与 AWS 托管 S3 桶的通信。
没有此类文件或目录
以下示例错误的发生原因如下:
- 两个运行 AWS-RunPatchBaseline 的命令在同一个托管节点上同时运行。
- /var 目录上缺少可用磁盘空间
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
要解决此错误,请完成以下步骤:
- 确保没有维护时段具有两个或更多 Run Command 任务在运行 AWS-RunPatchBaseline。任务不能具有相同的优先级,也不能在相同的目标 ID 上运行。如有必要,重新排列优先级。
- 确保只有一个状态管理器关联在按相同的计划运行 AWS-RunPatchBaseline,并以相同的托管节点为目标。
- 释放 /var 目录下的磁盘空间。
另一个进程获得了 yum 锁定
当 AWS-RunPatchBaseline 在已在运行 yum 的托管节点上运行,而另一个进程已锁定数据库时,会出现以下示例错误:
MM/DD/YYYY HH:MM:SS root [INFO]: another process has acquired yum lock, waiting 2 s and retry.
要解决此错误,请确保满足以下条件:
- 任何按计划运行 AWS-RunPatchBaseline 的状态管理器关联、维护时段任务或其他配置都不会同时针对同一个托管节点。
- 没有同时运行任何手动 yum 操作。
不受支持的包管理器和 Python 版本组合
当 RHEL、Debian Server、Raspberry Pi 或 Ubuntu Server 实例上未安装支持的 Python 3 版本时,会出现以下错误示例:
An unsupported package manager and python version combination was found. Dnf requires Python 2 or Python 3 to be installed.
要解决此错误,请在所需的服务器上安装一个 Python 3(3.0 - 3.9)版本。
不受支持的操作系统
操作系统不受支持时会出现以下错误示例:
An error occurred (UnsupportedOperatingSystem) when calling the GetDeployablePatchSnapshotForInstance operation: patch_common.exceptions. PatchManagerError: ('Unsupported Operating System', 146)
要解决此错误,请使用受支持的操作系统。
输出被截断
当修补操作失败且控制台输出被截断,从而导致无法查看错误时,就会出现此错误。控制台输出被截断为 48,000 字。
要解决此错误,请在以下位置查看实例的完整输出:
**注意:**确保将所有 example 字符串替换为所需的值。
/var/lib/amazon/ssm/<example-instance-id>/document/orchestration/<example-command-id>/awsrunShellScript/PatchLinux/stdout
您也可以将操作配置为将 Run Command 输出发送到 Amazon S3 或 CloudWatch。