跳至內容

如何對 Systems Manager Run Command 逾時問題進行疑難排解?

2 分的閱讀內容
0

我想針對使用 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 狀態詳細資訊的完整清單,請參閱瞭解命令狀態。

解決方法

請完成下列步驟:

  1. 開啟 Systems Manager console (Systems Manager 主控台)。
  2. 在導覽窗格中,選取 Run Command (執行命令)。
  3. (選用) 若要查看先前使用的 Run Command,請選擇 Command history (命令歷史記錄) 索引標籤。
  4. 選擇與該命令對應的 Command ID (命令 ID),開啟 Command status (命令狀態) 頁面。
  5. 在 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 失敗問題?

AWS 官方已更新 6 個月前