故障診斷 Patch Manager - AWS Systems Manager

故障診斷 Patch Manager

使用以下資訊以協助您對 Patch Manager (AWS Systems Manager 的一項功能) 的問題進行疑難排解。

在 Linux 上執行 AWS-RunPatchBaseline 時發生錯誤

問題:'No such file or directory' (沒有該檔案或目錄) 錯誤

問題:當您執行 AWS-RunPatchBaseline 時,修補會失敗,並顯示下列其中一個錯誤。

IOError: [Errno 2] No such file or directory: 'patch-baseline-operations-X.XX.tar.gz'
Unable to extract tar file: /var/log/amazon/ssm/patch-baseline-operations/patch-baseline-operations-1.75.tar.gz.failed to run commands: exit status 155
Unable to load and extract the content of payload, abort.failed to run commands: exit status 152

原因 1:要執行 AWS-RunPatchBaseline 的兩個命令在同一受管節點上同時執行。這將建立一個競爭條件,導致無法建立或正常存取臨時 file patch-baseline-operations*

原因 2/var 目錄下保留的儲存空間不足。

解決方案 1:確定沒有維護時段具有兩個或更多 Run Command 任務 (以相同優先順序執行 AWS-RunPatchBaseline 的任務和在相同目標 ID 上執行的任務)。如果是這種情形,請重新排序優先順序。Run Command 是 AWS Systems Manager 的功能。

解決方案 2:確保一次只有一個維護時段正在執行 Run Command 任務,這些任務在相同目標依相同排程使用 AWS-RunPatchBaseline。若發生此情形,請變更排程。

解決方案 3:確保只有一個 State Manager 關聯正在依相同排程執行 AWS-RunPatchBaseline,並正在鎖定相同的受管節點。State Manager 是 AWS Systems Manager 功能。

解決方案 4:在 /var 目錄下為更新套件釋放足夠的儲存空間。

問題:'another process has acquired yum lock' (另一個程序已取得 yum 鎖定) 錯誤

問題:當您執行 AWS-RunPatchBaseline 時,修補會失敗,並顯示下列錯誤。

12/20/2019 21:41:48 root [INFO]: another process has acquired yum lock, waiting 2 s and retry.

原因AWS-RunPatchBaseline 文件已經開始在另一個操作中執行的受管節點上執行,並且已經取得套件管理工具 yum 程序。

解決方案:確保沒有 State Manager 關聯、維護時段任務或依排程執行 AWS-RunPatchBaseline 的其他組態大約在同一時間針對同一個受管節點。

問題:'Permission denied / failed to run commands' (許可被拒/無法執行命令) 錯誤

問題:當您執行 AWS-RunPatchBaseline 時,修補會失敗,並顯示下列錯誤。

sh: 
/var/lib/amazon/ssm/instanceid/document/orchestration/commandid/PatchLinux/_script.sh: Permission denied
failed to run commands: exit status 126

原因/var/lib/amazon/ 可能掛載了 noexec 許可。這是一個問題,因為 SSM Agent 將酬載指令碼下載至 /var/lib/amazon/ssm 並從該位置執行指令碼。

解決方案:請確定您已將專屬分割區設定為 /var/log/amazon/var/lib/amazon,並且這些分割區掛載了 exec 許可。

問題:'Unable to download payload' (無法下載酬載) 錯誤

問題:當您執行 AWS-RunPatchBaseline 時,修補會失敗,並顯示下列錯誤。

Unable to download payload: https://s3.DOC-EXAMPLE-BUCKET.region.amazonaws.com/aws-ssm-region/patchbaselineoperations/linux/payloads/patch-baseline-operations-X.XX.tar.gz.failed to run commands: exit status 156

原因:受管節點沒有存取指定 Amazon Simple Storage Service (Amazon S3) 儲存貯體的必要許可。

解決方案:更新您的網路組態,讓 S3 端點可以連線。如需詳細資訊,請參閱 SSM Agent 與 AWS 受管 S3 儲存貯體通訊 中的對 Patch Manager S3 儲存貯體進行必要存取的相關資訊。

問題:'unsupported package manager and python version combination' (不支援的套件管理工具和 python 版本組合) 錯誤

問題:當您執行 AWS-RunPatchBaseline 時,修補會失敗,並顯示下列錯誤。

An unsupported package manager and python version combination was found. Apt requires Python3 to be installed.
failed to run commands: exit status 1

原因:python3 沒有安裝在 Debian Server、Raspberry Pi OS 或 Ubuntu Server 執行個體上。

解決方案:在服務器上安裝 python3,這是 Debian Server、Raspberry Pi OS 和 Ubuntu Server 受管節點必需的。

問題:Patch Manager 不會套用指定的規則來排除某些套件

問題:您已嘗試透過在 /etc/yum.conf 檔案中指定套件以排除某些套件,格式為 exclude=package-name,但在 Patch Manager Install 操作期間,不會排除這些套件。

原因:Patch Manager 未包含 /etc/yum.conf 檔案中指定的排除項目。

解決方案:若要排除特定套件,請建立自訂修補基準,並建立規則以排除您不想安裝的套件。

問題:修補失敗,且 Patch Manager 報告 TLS 的伺服器名稱指示延伸項目無法使用

問題:修補操作會發出下列訊息。

/var/log/amazon/ssm/patch-baseline-operations/urllib3/util/ssl_.py:369: 
SNIMissingWarning: An HTTPS request has been made, but the SNI (Server Name Indication) extension
to TLS is not available on this platform. This may cause the server to present an incorrect TLS 
certificate, which can cause validation failures. You can upgrade to a newer version of Python 
to solve this. 
For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

原因:此訊息並不表示錯誤。相反,這是一個警告,即與作業系統分發的舊版 Python 不支援 TLS 伺服器名稱指示。Systems Manager 修補程式酬載指令碼在連線至支援 SNI 的 AWS API 時會發出此警告。

解決方案:若要在報告此訊息時對任何修補故障進行故障診斷,請檢閱 stdoutstderr 檔案的內容。如果尚未將修補基準設定為將這些檔案存放在 Amazon S3 儲存貯體或 Amazon CloudWatch Logs 中,則您可以在 Linux 受管節點的下列位置找到這些檔案。

/var/lib/amazon/ssm/instance-id/document/orchestration/Run-Command-execution-id/awsrunShellScript/PatchLinux

問題:Patch Manager 報告 'No more mirrors to try' (沒有更多鏡像可以嘗試)

問題:修補操作會發出下列訊息。

[Errno 256] No more mirrors to try.

原因:受管節點上設定的儲存庫無法正常運作。可能的原因包括:

  • yum 快取已毀損。

  • 由於網路相關問題,無法連線儲存庫 URL。

解決方案:Patch Manager 會使用受管節點的預設套件管理工具來執行修補操作。再次檢查儲存庫是否已設定並正常運作。

在 Windows Server 上執行 AWS-RunPatchBaseline 時發生錯誤

問題:產品系列/產品配對不相符

問題:當您在 Systems Manager 主控台中建立修補基準時,您會指定產品系列和產品。例如,您可能選擇:

  • 產品系列Office

    產品Office 2016

原因:如果您嘗試以不符合的產品系列/產品配對來建立修補基準,則會出現錯誤訊息。以下為此狀況發生的原因:

  • 您已選擇有效的產品系列和產品配對,但將該產品系列選擇移除了。

  • 您選擇了 Obsolete or mismatched options (已淘汰或不符合的選項) 子清單中的產品,而非 Available and matching options (可用和符合的選項) 子清單中的產品。

    在產品 Obsolete or mismatched options (已淘汰或不符合的選項) 子清單中的項目,可能是透過開發套件或 AWS Command Line Interface (AWS CLI) create-patch-baseline 命令而錯誤輸入的。這可能代表著導入了拼寫錯誤或產品被指派給錯誤的產品系列。如果已為之前的修補基準指定,但沒有 Microsoft 提供的修補程式,則產品也會包含在 Obsolete or mismatched options (已淘汰或不符合的選項) 子清單中。

解決方案:為了避免在主控台中出現此問題,請一律從 Currently available options (目前可用的選項) 子清單中進行選擇。

您也可以使用 AWS CLI 或 DescribePatchProperties API 命令中的 describe-patch-properties 命令以檢視擁有可用修補程式的產品。

問題:AWS-RunPatchBaseline 輸出會傳回 HRESULT (Windows Server)

問題:您收到以下錯誤:

----------ERROR-------
Invoke-PatchBaselineOperation : Exception Details: An error occurred when 
attempting to search Windows Update.
Exception Level 1:
 Error Message: Exception from HRESULT: 0x80240437
 Stack Trace: at WUApiLib.IUpdateSearcher.Search(String criteria)..
(Windows updates)
11/22/2020 09:17:30 UTC | Info | Searching for Windows Updates.
11/22/2020 09:18:59 UTC | Error | Searching for updates resulted in error: Exception from HRESULT: 0x80240437
----------ERROR-------
failed to run commands: exit status 4294967295

原因:這個輸出表示原生的 Windows 更新 API 無法執行修補操作。

解決方案:檢查 Microsoft 文件中的 HResult 程式碼以識別解決錯誤的故障診斷步驟。

問題:受管節點無法存取 Windows 更新目錄或 WSUS

問題:您收到以下錯誤:

Downloading PatchBaselineOperations PowerShell module from https://s3.amazonaws.com/path_to_module.zip to C:\Windows\TEMP\Amazon.PatchBaselineOperations-1.29.zip.

Extracting PatchBaselineOperations zip file contents to temporary folder.

Verifying SHA 256 of the PatchBaselineOperations PowerShell module files.

Successfully downloaded and installed the PatchBaselineOperations PowerShell module.

Patch Summary for

PatchGroup :

BaselineId :

Baseline : null

SnapshotId :

RebootOption : RebootIfNeeded

OwnerInformation :

OperationType : Scan

OperationStartTime : 1970-01-01T00:00:00.0000000Z

OperationEndTime : 1970-01-01T00:00:00.0000000Z

InstalledCount : -1

InstalledRejectedCount : -1

InstalledPendingRebootCount : -1

InstalledOtherCount : -1

FailedCount : -1

MissingCount : -1

NotApplicableCount : -1

UnreportedNotApplicableCount : -1

EC2AMAZ-VL3099P - PatchBaselineOperations Assessment Results - 2020-12-30T20:59:46.169

----------ERROR-------

Invoke-PatchBaselineOperation : Exception Details: An error occurred when attempting to search Windows Update.

Exception Level 1:

Error Message: Exception from HRESULT: 0x80072EE2

Stack Trace: at WUApiLib.IUpdateSearcher.Search(String criteria)

at Amazon.Patch.Baseline.Operations.PatchNow.Implementations.WindowsUpdateAgent.SearchForUpdates(String

searchCriteria)

At C:\ProgramData\Amazon\SSM\InstanceData\i-02573cafcfEXAMPLE\document\orchestration\3d2d4864-04b7-4316-84fe-eafff1ea58

e3\PatchWindows\_script.ps1:230 char:13

+ $response = Invoke-PatchBaselineOperation -Operation Install -Snapsho ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : OperationStopped: (Amazon.Patch.Ba...UpdateOperation:InstallWindowsUpdateOperation) [Inv

oke-PatchBaselineOperation], Exception

+ FullyQualifiedErrorId : Exception Level 1:

Error Message: Exception Details: An error occurred when attempting to search Windows Update.

Exception Level 1:

Error Message: Exception from HRESULT: 0x80072EE2

Stack Trace: at WUApiLib.IUpdateSearcher.Search(String criteria)

at Amazon.Patch.Baseline.Operations.PatchNow.Implementations.WindowsUpdateAgent.SearchForUpdates(String searc

---Error truncated----

原因:這個錯誤可能與 Windows 更新元件相關,或缺乏至 Windows 更新目錄或 Windows 伺服器更新服務 (WSUS) 的連線。

解決方案:確認您的受管節點已透過網際網路閘道、NAT 閘道或 NAT 執行個體連線至 Microsoft 更新目錄。如果使用 WSUS,請確認受管節點已連線至您環境中的 WSUS 伺服器。如果連線能夠提供給預定的目的地,請查看 Microsoft 文件,了解 HResult 0x80072EE2 的其他潛在原因。這可能表示作業系統層級有問題。

問題:PatchBaselineOperations PowerShell 模組無法下載

問題:您收到以下錯誤:

Preparing to download PatchBaselineOperations PowerShell module from S3.
                    
Downloading PatchBaselineOperations PowerShell module from https://s3.amazonaws.com/path_to_module.zip to C:\Windows\TEMP\Amazon.PatchBaselineOperations-1.29.zip.
----------ERROR-------

C:\ProgramData\Amazon\SSM\InstanceData\i-02573cafcfEXAMPLE\document\orchestration\aaaaaaaa-bbbb-cccc-dddd-4f6ed6bd5514\

PatchWindows\_script.ps1 : An error occurred when executing PatchBaselineOperations: Unable to connect to the remote server

+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException

+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,_script.ps1

failed to run commands: exit status 4294967295

解決方案:檢查受管節點的連線和 Amazon Simple Storage Service (Amazon S3) 的許可。受管節點的 AWS Identity and Access Management (IAM) 角色必須使用 SSM Agent 與 AWS 受管 S3 儲存貯體通訊 中引用的最低許可。節點必須透過 Amazon S3 閘道端點、NAT 閘道或網際網路閘道與 Amazon S3 端點進行通訊。如需 AWS Systems Manager SSM Agent (SSM Agent) VPC 端點需求的詳細資訊,請參閱 步驟 6:(選用) 建立 Virtual Private Cloud 端點

問題:缺少修補程式

問題AWS-RunPatchbaseline 成功完成,但有一些缺少的修補程式。

以下是一些常見原因及其解決方案。

原因 1:基準無效。

解決方案 1:如需檢查這是否為原因,請使用下列處理程序。

  1. 開啟位於 AWS Systems Managerhttps://console.aws.amazon.com/systems-manager/ 的 主控台。https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Run Command

    -或-

    如果 AWS Systems Manager 首頁先開啟,選擇選單圖示 ( ) 以開啟導覽窗格,然後選擇 Run Command

  3. 選取 Command history (命令歷史記錄) 索引標籤,然後選取您要檢查其基準的命令。

  4. 選取缺少修補程式的受管節點。

  5. 選擇 Step 1 - Output (步驟 1 – 輸出) 並尋找 BaselineId 值。

  6. 檢查指派的修補基準組態,即修補基準的作業系統、產品名稱、分類和嚴重性。

  7. 前往 Microsoft 更新目錄

  8. 搜尋 Microsoft 知識庫 (KB) 文章 ID (例如 KB3216916)。

  9. 確認 Product (產品) 下的該值是否與受管節點的值相符,並選取相應的 Title (標題)。新的 Update Details (更新詳細資訊) 時段將會開啟。

  10. Overview (概觀) 索引標籤上,classification (分類) 和 MSRC severity (MSRC 嚴重性) 必須符合您先前找到的修補基準組態。

原因 2:修補程式已被取代。

解決方案 2:如需檢查這是否為真實情形,請使用下列處理程序。

  1. 前往 Microsoft 更新目錄

  2. 搜尋 Microsoft 知識庫 (KB) 文章 ID (例如 KB3216916)。

  3. 確認 Product (產品) 下的該值是否與受管節點的值相符,並選取相應的 Title (標題)。新的 Update Details (更新詳細資訊) 時段將會開啟。

  4. 前往 Package Details (套件詳細資訊) 索引標籤。尋找 This update has been replaced by the following updates: (此更新已由以下更新取代) 標頭下的項目。

原因 3:相同的修補程式可能有不同的 KB 數,因為 WSUS 和 Windows 線上更新會作為獨立的 Microsoft 發行通道處理。

解決方案 3:檢查修補程式的資格。如果 WSUS 下無法使用套件,請安裝 OS Build 14393.3115。如果套件適用於所有作業系統組建,請安裝作業系統組建 18362.1256 和 18363.1256

聯絡 AWS Support

如果您在本節AWS re:Post 的 Systems Manager 問題中找不到疑難排解解決方案,且您擁有開發人員、商業或企業 AWS Support 計畫,則您可以在 AWS Support 建立技術支援案例。

在您聯絡 AWS Support 之前,請收集下列項目:

  • SSM 代理程式日誌

  • Run Command 命令 ID、維護時段 ID 或 Automation 執行 ID

  • 對於 Windows Server 受管節點,也會收集下列項目:

    • 如何安裝修補程式Windows (Windows) 索引標籤中所述的 %PROGRAMDATA%\Amazon\PatchBaselineOperations\Logs

    • Windows 更新日誌:對於 Windows Server 2012 R2 和更舊版本,請使用 %windir%/WindowsUpdate.log。對於 Windows Server 2016 和更新版本,請在使用 %windir%/WindowsUpdate.log 之前首先執行 PowerShell 命令 Get-WindowsUpdateLog

  • 對於 Linux 受管節點,也會收集下列項目:

    • 檔案 /var/lib/amazon/ssm/instance-id/document/orchestration/Run-Command-execution-id/awsrunShellScript/PatchLinux 的內容