我想針對使用 AWS Systems Manager 的 Run Command 功能,在受管 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行 AWS Systems Manager 文件時發生的逾時錯誤進行疑難排解。
簡短說明
若要疑難排解 Run Command 的相關逾時錯誤,請查看命令狀態詳細資訊,以及 AWS Systems Manager Agent (SSM Agent) 日誌。接著,請根據調查結果針對逾時錯誤進行疑難排解。
Run Command 逾時狀態的詳細資訊包含以下值:
- 執行逾時
預設的執行逾時值由 Systems Manager 文件決定。以 AWS-RunShellScript 文件為例,其預設時間為 3600 秒 (1 小時)。172800 秒 (48 小時) 是可設定的執行逾時上限。
- 傳送逾時
您會在傳送命令時指定傳送逾時值。您可以使用主控台的 Timeout (seconds) (逾時 (秒)) 欄位,或 SendCommand API 呼叫。Systems Manager 沒有在傳送逾時期限結束前把命令送達受管節點。600 秒 (10 分鐘) 是傳送逾時的預設值。
- 總逾時
將傳送逾時值與執行逾時值相加,即可得到總逾時值。Systems Manager 文件若未包含執行逾時設定,Systems Manager 便採用預設的執行逾時值。
注意: DeliveryTimedOut (傳送逾時) 狀態表示傳送逾時期限到期時,SSM Agent 仍未收到命令。ExecutionTimedOut (執行逾時) 狀態表示命令已開始執行,但未能在執行逾時期限內完成。
如需 Run Command 狀態詳細資訊的完整清單,請參閱瞭解命令狀態。
解決方法
請完成下列步驟:
- 開啟 Systems Manager console (Systems Manager 主控台)。
- 在導覽窗格中,選取 Run Command (執行命令)。
- (選用) 若要查看先前使用的 Run Command,請選擇 Command history (命令歷史記錄) 索引標籤。
- 選擇與該命令對應的 Command ID (命令 ID),開啟 Command status (命令狀態) 頁面。
- 在 Targets and outputs (目標與輸出) 區段中,選擇與 Amazon EC2 執行個體對應的 Instance ID (執行個體 ID),然後檢閱輸出。
如果系統截斷輸出內容,請使用 SSH 連線至執行個體,再前往以下目錄查看完整的錯誤詳細資訊:
重要: 只有特定作業系統可執行部分外掛程式,這些外掛程式可能僅支援 Windows Server 執行個體或 Linux 執行個體。如需命令文件可指定的外掛程式及其平台相依性清單,請參閱命令文件外掛程式參考。
Linux 和 macOS:
- /var/lib/amazon/ssm/example-instance-ID/document/orchestration/example-command-id/example-plugin-name/example-step-name/stdout
- /var/lib/amazon/ssm/example-instance-ID/document/orchestration/example-command-id/example-plugin-name/example-step-name/stderr
Windows:
- %ProgramData%\Amazon\SSM\InstanceData\example-instance-ID\document\orchestration\example-command-id\example-plugin-name\example-step-name\stdout
- %ProgramData%\Amazon\SSM\InstanceData\example-instance-ID\document\orchestration\example-command-id\example-plugin-name\example-step-name\stderr
注意: 請將 example-instance-ID 替換為 EC2 執行個體的 ID。請將 example-command-ID 替換為您的命令 ID。請將 example-plugin-name 替換為您在 Command 文件中指定的外掛程式名稱。請將 example-step-name 替換為您在 Command 文件的 mainSteps 區段內指定之外掛程式所對應的 name 值。
檢閱結束詳細資訊中的結束狀態碼,再使用這些狀態碼來疑難排解 Run Command。
檢閱 SSM Agent 日誌
檢閱 SSM Agent 日誌,以取得更多失敗相關詳細資訊。
注意: 自 2026 年 4 月 30 日起,AWS Systems Manager CloudWatch 儀表板將不再提供。您仍可前往 Amazon CloudWatch 主控台,繼續管理、建立及檢視 CloudWatch 儀表板。如需更多資訊,請參閱使用 Amazon CloudWatch 儀表板。
如果 SSM Agent 日誌沒有提供解決錯誤所需的資訊,請啟用偵錯記錄並重現問題。
疑難排解逾時問題
執行以下動作:
- 確認命令能在執行逾時與傳送逾時這兩個期限內完成。命令必須在執行逾時所限定的時間內完成。命令必須在傳送逾時所限定的時間內抵達受管節點。SSM 文件或主控台的 Execution Timeout (執行逾時) 欄位會定義執行逾時。主控台 Timeout (seconds) (逾時 (秒)) 欄位中的輸入值就是傳送逾時。您也能透過 SendCommand API 呼叫的 timeout 參數設定此值。如需設定逾時值的方法,請參閱在執行手冊中處理逾時。
- 如果執行個體未列為受管節點,或 SSM Agent 的 ping 狀態不是 Online (線上),請對離線的 SSM Agent 或執行個體進行疑難排解。
- 如果 Run Command 執行的指令碼會重新啟動受管節點,節點可能中斷連線並引發逾時問題。確認您使用正確的結束碼。如需更多資訊,請參閱執行命令時處理重新啟動。
- 檢查 SSM Agent 的運作情形是否正常。如需資訊,請參閱疑難排解 SSM Agent。
- 確認目前使用的是最新版 SSM Agent。您可以設定 SSM Agent 自動更新。
注意: SSM Agent 2.0.913.0 版及更新版本支援的執行逾時上限為 172800 秒 (48 小時)。
- 若命令是由 AWS Systems Manager 的維護時段或 State Manager 功能執行,請前往 AWS CloudTrail 查看 SendCommand API 呼叫傳回的回應。查看輸出,確認命令已順利執行。
相關資訊
AWS Systems Manager 文件
設定 AWS Systems Manager 的受管節點
如何疑難排解 Systems Manager Run Command 失敗問題?