Patch Manager 문제 해결 - AWS Systems Manager

Patch Manager 문제 해결

다음 정보를 사용하면 AWS Systems Manager의 기능인 Patch 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을 실행하는 2개의 명령이 동일한 관리형 노드에서 동시에 실행되었습니다. 이로 인해 임시 file patch-baseline-operations*가 제대로 생성 또는 액세스되지 않는 경쟁 조건이 발생합니다.

원인 2: /var 디렉터리의 저장 공간이 부족합니다.

해결 방법 1: 유지 관리 기간에 동일한 우선순위 수준으로 AWS-RunPatchBaseline을 실행하고 동일한 대상 ID에서 실행되는 둘 이상의 Run Command 태스크가 없는지 확인합니다. 이 경우 우선순위를 다시 지정합니다. Run Command는 AWS Systems Manager의 기능입니다.

해결 방법 2: 한 번에 하나의 유지 관리 기간만 동일한 대상 및 동일한 일정에서 AWS-RunPatchBaseline을 사용하는 Run Command 태스크를 실행하고 있는지 확인합니다. 이 경우 일정을 변경합니다.

해결 방법 3: 하나의 State Manager 연결만 동일한 일정으로 AWS-RunPatchBaseline을 실행하고 동일한 관리형 노드를 대상으로 하는지 확인합니다. State Manager는 AWS Systems Manager의 기능입니다.

해결 방법 4: 업데이트 패키지를 위해 /var 디렉터리에 충분한 저장 공간을 확보합니다.

문제: '다른 프로세스가 yum 잠금을 획득함(another process has acquired yum lock)' 오류

문제: AWS-RunPatchBaseline 실행 시 다음 오류와 함께 패치가 실패합니다.

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

원인: AWS-RunPatchBaseline 문서가 이미 다른 작업에서 실행 중이고 패키지 관리자 yum 프로세스를 획득한 관리형 노드에서 실행을 시작했습니다.

해결 방법: 일정에 따라 AWS-RunPatchBaseline을 실행하는 State Manager 연결, 유지 관리 기간 태스크 또는 기타 구성이 거의 같은 시간에 동일한 관리형 노드를 대상으로 하지 않도록 합니다.

문제: '권한 거부됨/명령 실행 실패(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 엔드포인트에 연결할 수 있도록 네트워크 구성을 업데이트합니다. 자세한 내용은 AWS 관리형 S3 버킷과 SSM Agent 통신의 Patch Manager에 대한 S3 버킷에 대한 필수 액세스에 대한 정보를 참조하세요.

문제: '지원되지 않는 패키지 관리자 및 python 버전 조합(unsupported package manager and python version combination)' 오류

문제: 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

원인: Debian Server, Raspberry Pi OS 또는 Ubuntu Server 인스턴스에 지원되는 python3 버전이 설치되어 있지 않습니다.

해결 방법: Debian Server, Raspberry Pi OS 및 Ubuntu Server 관리형 노드에 필요한 지원되는 python3 버전(3.0 - 3.9)을 서버에 설치합니다.

문제: 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

원인: 일치하지 않는 제품군/제품 페어로 패치 기준을 만들려고 하면 오류 메시지가 표시됩니다. 가능한 이유는 다음과 같습니다.

  • 유효한 제품군 및 제품 페어를 선택했지만 제품군 선택을 제거했습니다.

  • [사용 가능 및 일치하는 옵션(Available and matching options)] 하위 목록 대신 [폐기되었거나 일치하지 않는 옵션(Obsolete or mismatched options)] 하위 목록에서 제품을 선택했습니다.

    실수로 제품 [사용되지 않거나 일치하지 않는 옵션(Obsolete or mismatched options)] 하위 목록의 항목이 SDK 또는 AWS Command Line Interface(AWS CLI) create-patch-baseline 명령을 통해 입력되었을 수 있습니다. 오타가 있거나 제품이 잘못된 제품군에 할당되었다는 뜻일 수 있습니다. 이전 패치 기준에 지정되었지만 Microsoft에서 제공하는 패치가 없는 경우에도 [사용되지 않거나 일치하지 않는 옵션(Obsolete or mismatched options)] 하위 목록에 제품이 포함됩니다.

해결 방법: 콘솔에서 이 문제를 방지하려면 항상 [현재 사용 가능한 옵션(Currently available options)] 하위 목록에서 옵션을 선택합니다.

AWS CLI에서 describe-patch-properties 명령을 사용하거나 DescribePatchProperties 명령을 사용하여 사용 가능한 패치가 있는 제품을 볼 수도 있습니다.

문제: 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 Update API가 패치 작업을 실행할 수 없음을 나타냅니다.

해결 방법: Microsoft 설명서에서 HResult 코드를 확인하여 오류 해결을 위한 문제 해결 단계를 식별합니다.

문제: 관리형 노드에 Windows 업데이트 카탈로그 또는 WSUS에 대한 액세스 권한이 없습니다.

문제: 다음과 같은 오류가 표시됩니다.

Downloading PatchBaselineOperations PowerShell module from https://s3.aws-api-domain/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 Update 구성 요소, Windows Update 카탈로그 또는 Windows Server Update Services(WSUS)에 대한 연결 부족과 관련이 있을 수 있습니다.

해결 방법: 관리형 노드가 인터넷 게이트웨이, NAT 게이트웨이 또는 NAT 인스턴스를 통해 Microsoft Update 카탈로그에 연결되어 있는지 확인합니다. WSUS를 사용하는 경우 관리형 노드가 환경의 WSUS 서버에 연결되어 있는지 확인합니다. 의도한 대상에 연결할 수 있는 경우 Microsoft 설명서에서 HResult 0x80072EE2의 다른 잠재적 원인을 확인합니다. 이는 운영 체제 수준 문제를 나타낼 수 있습니다.

문제: PatchBaselineOperations PowerShell 모듈을 다운로드할 수 없음

문제: 다음과 같은 오류가 표시됩니다.

Preparing to download PatchBaselineOperations PowerShell module from S3.
                    
Downloading PatchBaselineOperations PowerShell module from https://s3.aws-api-domain/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) 역할이 AWS 관리형 S3 버킷과 SSM Agent 통신에 언급된 최소 권한을 사용해야 합니다. 노드는 Amazon S3 게이트웨이 엔드포인트, NAT 게이트웨이 또는 인터넷 게이트웨이를 통해 Amazon S3 엔드포인트와 통신해야 합니다. AWS Systems ManagerSSM Agent (SSM Agent)에 대한 VPC 엔드포인트 요구 사항에 대한 자세한 내용은 6단계: VPC 엔드포인트 생성 섹션을 참조하세요.

문제: 패치 누락

문제: AWS-RunPatchbaseline이 성공적으로 완료되었지만 일부 누락된 패치가 있습니다.

다음은 몇 가지 일반적인 원인과 해결 방법입니다.

원인 1: 기준이 유효하지 않습니다.

해결 방법 1: 이것이 원인인지 확인하려면 다음 절차를 따릅니다.

  1. AWS Systems Manager 콘솔(https://console.aws.amazon.com/systems-manager/)을 엽니다.

  2. 탐색 창에서 Run Command를 선택합니다.

    -또는-

    AWS Systems Manager 홈 페이지가 처음 열리면 메뉴 아이콘( )을 선택하여 탐색 창을 연 다음 [Run Command]를 선택합니다.

  3. [명령 기록(Command history)] 탭을 선택하고 기준을 확인할 명령을 선택합니다.

  4. 패치가 누락된 관리형 노드를 선택합니다.

  5. [1단계 - 출력(Step 1 - Output)]을 선택하고 BaselineId 값을 찾습니다.

  6. 할당된 패치 기준 구성, 즉 운영 체제, 제품 이름, 분류 및 패치 기준의 심각도를 확인합니다.

  7. Microsoft Update 카탈로그로 이동합니다.

  8. Microsoft 기술 자료(KB) 문서 ID(예: KB3216916)를 검색합니다.

  9. 제품(Product) 아래의 값이 관리형 노드의 값과 일치하는지 확인하고 해당 제목(Title)을 선택합니다. 새로운 [세부 정보 업데이트(Update Details)] 창이 열립니다.

  10. [개요(Overview)] 탭의 [분류(classification)] 및 [MSRC 심각도(MSRC severity)]가 이전에 찾은 패치 기준 구성과 일치해야 합니다.

원인 2: 패치가 교체되었습니다.

해결 방법 2: 이것이 맞는지 확인하려면 다음 절차를 따릅니다.

  1. Microsoft Update 카탈로그로 이동합니다.

  2. Microsoft 기술 자료(KB) 문서 ID(예: KB3216916)를 검색합니다.

  3. 제품(Product) 아래의 값이 관리형 노드의 값과 일치하는지 확인하고 해당 제목(Title)을 선택합니다. 새로운 [세부 정보 업데이트(Update Details)] 창이 열립니다.

  4. [패키지 세부 정보(Package Details)] 탭으로 이동합니다. [이 업데이트는 다음 업데이트로 대체되었습니다.(This update has been replaced by the following updates:)] 헤더 아래에서 항목을 찾습니다.

원인 3: WSUS 및 Window 온라인 업데이트는 Microsoft에서 독립적인 릴리스 채널로 처리하기 때문에 동일한 패치의 KB 번호가 다를 수 있습니다.

해결 방법 3: 패치 적격성을 확인합니다. WSUS에서 패키지를 사용할 수 없는 경우 OS 빌드 14393.3115를 설치합니다. 모든 운영 체제 빌드에 패키지를 사용할 수 있는 경우 OS 빌드 18362.1256 및 18363.1256을 설치합니다.

AWS Support 문의

이 섹션이나 AWS re:Post의 Systems Manager 개발자 포럼에서 문제 해결 방법을 찾을 수 없고 Developer, Business 또는 Enterprise AWS Support 플랜이 있는 경우 AWS Support에서 기술 지원 사례를 생성할 수 있습니다.

AWS Support에 연락하기 전에 다음 항목을 수집합니다.

  • SSM Agent 로그

  • Run Command 명령 ID, 유지 관리 기간 ID 또는 Automation 실행 ID

  • Windows Server 관리형 노드를 위해서는 다음 항목도 수집합니다.

    • 패치 설치 방법ㅂ의 [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의 내용