AWS SSM Run Command执行失败显示TERMINATED状态原因排查
问题描述
尝试使用AWS SSM Run Command执行echo 'hello world'(用于测试与Windows应用服务器的通信,后续将运行更复杂的PowerShell脚本),发现部分实例执行成功,部分实例显示失败,但实际命令并未完全失败,详细状态为“terminated”。
使用的SSM命令文档如下:
--- schemaVersion: "2.2" description: "Command Document Example JSON Template" parameters: Message: type: "String" description: "Example" default: "Hello World" mainSteps: - action: "aws:runPowerShellScript" name: "example" inputs: runCommand: - "echo {{Message}}"
命令执行状态截图:
可能的原因分析
- SSM Agent进程异常终止:Windows实例上的
AmazonSSMAgent.exe在命令执行过程中意外崩溃或被系统终止。虽然PowerShell命令已执行完成,但Agent无法正常向SSM服务上报最终状态,导致服务端标记为terminated。可检查实例C:\ProgramData\Amazon\SSM\Logs\amazon-ssm-agent.log日志,查找进程退出相关错误信息。 - 实例资源不足:目标Windows实例的CPU、内存资源耗尽,导致SSM Agent或PowerShell进程被系统强制终止。比如实例处于高负载状态时执行命令,系统为维持运行会终止非关键进程,此时命令可能已执行,但Agent无法完成状态上报。可通过CloudWatch监控或实例本地任务管理器查看资源使用情况。
- PowerShell执行环境异常:部分实例的PowerShell配置存在问题,比如执行策略限制、模块缺失,或者
echo命令执行后输出处理异常,导致SSM Agent的脚本执行流程中断。虽然命令本身输出了内容,但后续的输出捕获或状态上报步骤失败,引发terminated状态。可在实例本地手动执行相同PowerShell命令,检查是否有隐藏错误提示。 - 网络中断:命令执行过程中,实例与AWS SSM服务之间的网络连接临时中断。当Agent尝试上报命令状态时无法连接到服务,SSM服务会在超时后标记命令为
terminated。可检查实例的网络ACL、安全组是否允许出站访问SSM服务端点,或查看实例网络连接日志。 - SSM Agent版本不兼容:部分实例的SSM Agent版本过旧,与当前使用的SSM命令文档(schemaVersion 2.2)存在兼容性问题。旧版本Agent可能无法正确处理文档中的参数替换或脚本执行逻辑,导致执行流程异常终止。建议将所有实例的SSM Agent升级到最新版本后再测试。
内容的提问来源于stack exchange,提问作者PegaChucho
相关产品推荐
相关产品推荐

