對維護時段進行故障診斷 - AWS Systems Manager

對維護時段進行故障診斷

使用以下資訊以協助您對維護時段的問題進行故障診斷。

編輯任務錯誤:在可編輯維護時段任務的頁面上,IAM 角色清單傳回錯誤訊息:「我們無法找到為此任務指定的 IAM 維護時段角色。它可能已刪除,也可能尚未建立。」

Problem 1 (問題 1):在建立任務後,會刪除原先指定的 AWS Identity and Access Management (IAM) 維護時段角色。

Possible fixes (可能的修正):(1) 選取不同的 IAM 維護時段角色 (如果您帳戶中有現有的),或者建立新的角色,並為任務選取此角色。(2) 建立或選擇服務連結的 AWS Systems Manager 角色。如需更多詳細資訊,請參閱 我應該使用服務連結角色還是自訂服務角色來執行維護時段任務?

Problem 2 (問題 2):如果任務是使用 AWS Command Line Interface (AWS CLI)、AWS Tools for Windows PowerShell 或 AWS 開發套件建立,則可能指定了一個不存在的 IAM 維護時段角色名稱。例如,在建立任務之前,IAM 維護時段角色可能已遭到刪除,或者角色名稱輸入錯誤,例如 myrole 而不是 my-role

Possible fixes (可能的修正):(1) 選取要使用之 IAM 維護時段角色的正確名稱,或建立新的角色,並為任務指定此角色。(2) 建立或選擇 Systems Manager 服務連結角色。如需更多詳細資訊,請參閱 我應該使用服務連結角色還是自訂服務角色來執行維護時段任務?

並非所有維護時段目標都會更新

問題:您注意到維護時段任務並未在維護時段目標的所有資源上執行。例如,在維護時段的執行結果中,該資源的任務會標示為失敗或逾時。

解決方案:維護時段任務未在目標資源上執行的最常見原因涉及連線和可用性。例如:

  • Systems Manager 在維護時段操作之前或期間失去資源的連線。

  • 在維護時段操作期間,資源已離線或停用。

您可以等待下一個排定的維護時段時間,在資源上執行任務。您可以在無法使用或離線的資源上手動執行維護時段任務。

任務失敗並顯示錯誤消息:「正在驗證和解決步驟輸入時,步驟失敗」

問題:您在任務中使用的 Automation Runbook 或 Systems Manager 命令文件需要您指定輸入,例如 InstanceIdSnapshotId,但未提供值或未正確提供值。

  • Solution 1 (解決方案 1):如果您的任務是針對單一資源 (例如單一執行個體或單一快照),請在任務的輸入參數中輸入其 ID。

  • Solution 2 (解決方案 2):如果您的任務是針對多個資源,例如當您使用 Runbook AWS-CreateImage 時,從多個執行個體建立映像,您可以在輸入參數中使用支援維護時段任務的其中一個虛擬參數來表示命令中的執行個體 ID。

    以下命令使用 AWS CLI 向維護時段註冊 Systems Manager Automation 任務。--targets 值表示維護時段目標 ID。此外,即使 --targets 參數會指定時段目標 ID,Automation Runbook 的參數需要提供執行個體 ID。在這種情況下,命令會使用虛擬參數 {{RESOURCE_ID}} 作為 InstanceId 值。

    AWS CLI 命令

    Linux & macOS

    下列命令會重新啟動屬於維護時段目標群組的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,ID 為 e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE。

    aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE \ --task-arn "AWS-RestartEC2Instance" \ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole \ --task-type AUTOMATION \ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" \ --priority 0 --max-concurrency 10 --max-errors 5 --name "My-Restart-EC2-Instances-Automation-Task" \ --description "Automation task to restart EC2 instances"
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE ^ --task-arn "AWS-RestartEC2Instance" ^ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" ^ --priority 0 --max-concurrency 10 --max-errors 5 --name "My-Restart-EC2-Instances-Automation-Task" ^ --description "Automation task to restart EC2 instances"

    如需使用維護時段任務之虛擬參數的詳細資訊,請參閱 有關虛擬參數任務註冊範例

錯誤訊息:「沒有目標的維護時段任務不支援 MaxConcurrency 值」和「沒有目標的維護時段任務不支援 MaxErrors 值」

問題:當註冊 Run Command 類型任務時,您必須至少指定一個目標,以執行任務。對於其他任務類型 (Automation、AWS Lambda 和 AWS Step Functions),取決於任務性質,目標是選用的。選項 MaxConcurrency (同時執行任務的資源數量) 和 MaxErrors (在任務失敗之前在目標資源上執行任務的失敗次數) 不需要或不支援未指定目標的維護時段任務。如果在沒有指定任務目標時為這些選項的其中之一指定了值,則系統會產生這些錯誤訊息。

解決方案:如果您收到其中一個錯誤,請移除並行和錯誤閾值的值,然後繼續註冊或更新維護時段任務。

如需有關執行未指定目標之任務的詳細資訊,請參閱《AWS Systems Manager 使用者指南》中的 註冊不含目標的維護時段任務