上次更新日期:2021 年 3 月 24 日
我试图使用 AWS Systems Manager Run Command 在我的托管实例上运行命令文档,但运行失败。该如何排查此问题?
解决方法 先决条件AWS Systems Manager Run Command 帮助您实现了常见管理任务的自动化,并可大规模执行一次性配置更改。在使用 Run Command 管理实例之前,您必须配置 AWS Identity and Access Management (IAM) 用户策略。运行命令的任何用户都需要使用此用户策略。
-
验证 Systems Manager 的 IAM 实例配置文件角色是否已附加到 Amazon Elastic Compute Cloud (Amazon EC2) 实例。有关更多详信息,请参阅为 Systems Manager 创建 IAM 实例配置文件。
查看为角色或用户创建的 IAM 策略。该策略必须包括 ec2messages API 调用的权限,因为需要使用终端节点发送和接收命令。
在 Systems Manager 控制台中,实例必须位于 Managed instances (托管实例) 下,且 SSM Agent ping status (SSM 代理 ping 状态) 必须为 Online (在线)。
如果您的实例没有位于 Managed instances (托管实例) 下,请参阅为什么我的 EC2 实例没有出现在 Systems Manager 控制台的托管实例下? 如果 SSM Agent ping status (SSM 代理 ping 状态) 显示为 Connection Lost (连接丢失),请参阅如何对处于连接丢失状态的 Systems Manager 托管实例进行故障排除? 查看 Run Command 状态详细信息-
查看 Run Command 状态详细信息。
打开 AWS Systems Manager 控制台,然后从导航窗格中选择 Run Command。
选择带超链接的命令 ID,打开命令状态页面。
在 Targets and outputs (目标和输出) 部分,选择带超链接的 Instance ID (实例 ID),然后查看输出。
如果输出被截断,请使用 SSH 连接到 EC2 实例,然后导航到以下目录,查看完整的错误详细信息。记下退出状态代码,然后参阅对 Systems Manager Run Command 进行故障排除,了解进一步进行故障排除的步骤。
对于 Linux 和 macOS:
/var/lib/amazon/ssm/<instance-id>/document/orchestration/<command-id>/<Plugin-name>/<Step-name>/stdout/var/lib/amazon/ssm/<instance-id>/document/orchestration/<command-id>/<Plugin-name>/<Step-name>/stderr
对于 Windows:
%ProgramData%\Amazon\SSM\InstanceData\<ManagedInstance-ID>\document\orchestration\<Command-ID>\<plug-in>\<step_number.plug-in>\stdout%ProgramData%\Amazon\SSM\InstanceData\<ManagedInstance-ID>\document\orchestration\<Command-ID>\<plug-in>\<step_number.plug-in>\stderr
查看 SSM 代理日志
有关失败的更多详细信息,请查看 SSM 代理日志:
对于 Linux 和 macOS,可以在以下目录中找到日志:
/var/log/amazon/ssm/amazon-ssm-agent.log /var/log/amazon/ssm/errors.log /var/log/amazon/ssm/audits/amazon-ssm-agent-audit-YYYY-MM-DD对于 Windows,可以在以下目录中找到日志:
%PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log %PROGRAMDATA%\Amazon\SSM\Logs\errors.log %PROGRAMDATA%\Amazon\SSM\Logs\audits\amazon-ssm-agent-audit-YYYY-MM-DD