Patch Manager の AWS-RunPatchBaseline ドキュメントを使用する際の Amazon EC2 Windows インスタンスに関連するパッチの問題をトラブルシューティングする方法を教えてください。
Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスにパッチを適用しようとしていますが、エラーが表示されます。AWS-RunPatchBasline ドキュメントを使用して Windows ノードにパッチを適用する際の問題をトラブルシューティングしたいと考えています。
簡単な説明
AWS Systems Manager の機能である Patch Manager の AWS-RunPatchBaseline ドキュメントを使用する際に、次の問題が発生する場合があります。
- ノードが Amazon Simple Storage Service (Amazon S3) エンドポイントにアクセスできない
- トークンのリクエストが無効である
- Windows 更新プログラムを検索できない
- ダウンロード後に更新がインストールされない
- パッチが見つからない
解決策
ノードが Amazon S3 エンドポイントにアクセスできない
Amazon S3 がリモートサーバーに接続できない場合、次の例のようなエラーメッセージが表示されることがあります。
「Invoke-PatchBaselineOperation : The underlying connection was closed: An unexpected error occurred on a send.」
または
「An error occurred when executing PatchBaselineOperations: Unable to connect to the remote server」
上記のエラーは、ノードが S3 エンドポイントに接続できないために発生します。または、インスタンスにアタッチされている AWS Identity and Access Management (IAM) プロファイルに、S3 への接続に最低限必要なアクセス許可がありません。
これらのエラーを解決するには、次の手順を実行します。
1. インスタンスプロファイル用の IAM アクセス許可がノードにアタッチされていることを確認します。最低限のアクセス許可については、「AWS Systems Manager Agent (SSM Agent) と AWS マネージド S3 バケットとの通信」を参照してください。
2. Amazon S3 エンドポイントへの接続を確認するには、PowerShell で次のコマンドを実行します。
注: <region_id> は、お使いの AWS リージョン ID に置き換えてください。
tnc s3.<region_id>.amazonaws.com -port 443
3. 上記のテストが失敗した場合は、Systems Manager エンドポイントへのインスタンスの接続方法を確認します。
- インスタンスがパブリックサブネットにある場合は、インスタンスにアタッチされている RouteTable がインターネットゲートウェイを使用して 0.0.0.0/0 にルーティングしていることを確認します。
- インスタンスがプライベートサブネットにある場合は、NAT ゲートウェイを使用して接続しているか、S3 ゲートウェイ VPC エンドポイントを作成またはインターフェイス VPC エンドポイントを作成していることを確認します。
トークンのリクエストが無効である
トークンのリクエストが無効であるため、次の例のようなエラーメッセージが表示される場合があります。
「Invoke-PatchBaselineOperation failed with: The security token included in the request is invalid:
または
「Invoke-PatchBaselineOperation: Instance Id i-00fe5918abcdef12 doesn't match the credentials」
上記のエラーは、目的の認証情報とは異なる認証情報を SSM Agent が使用している場合に発生します。例えば、SSM Agent がインスタンスプロファイルではなく共有認証情報ファイルを使用している場合などです。
注: SSM Agent のバージョン 3.1.1927.0 以前の場合、SSM Agent はデフォルトの認証情報プロバイダーチェーンに規定された順序で認証情報を検索します。これは Amazon Elastic Container Service (Amazon ECS) コンテナインスタンスにも適用されます。
SSM Agent のバージョン 3.2.183.0 以降では、SSM Agent は一時的な認証情報のセットを /var/lib/amazon/ssm/credentials (Linux および macOS) または %PROGRAMFILES%\Amazon\SSM\credentials (Windows Server) に保存します。一時的な認証情報には、選択した IAM ロールに指定するアクセス許可があります。IAM ロールには、マネージドノードにアタッチされたインスタンスプロファイルまたは デフォルトのホスト管理設定のアクセス許可があります。
これらのエラーを解決するには、バージョン 3.2.183.0 以降に SSM Agent を更新して、SSM フォルダ内のファイルから認証情報を取得できるようにします。
以前のバージョンの SSM Agent を使用するには、共有認証情報を探して削除し、パッチ適用を再度テストします。
認証情報を検索するには、次の手順を実行します。
1. Windows キーを押して、環境変数を入力します。
2. AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY という名前の変数を検索します。
3. 認証情報を削除し、パッチ適用を再度テストします。
共有認証情報の場所
共有認証情報の場所の例を次に示します。
SystemsProfile
- C:\Windows\System32\config\systemprofile\.aws\
- C:\Windows\System32\config\systemprofile\AppData\Local\AWSToolkit\RegisteredAccounts.json
ユーザープロフィール
- %USERPROFILE%\.aws\
- %USERPROFILE%\AppData\Local\AWSToolkit\RegisteredAccounts.json
Windows 更新プログラムを検索できない
Windows 更新プログラムを検索できない場合、次の例のようなエラーメッセージが表示されることがあります。
「Invoke-PatchBaselineOperation : Exception Details: An error occurred when attempting to search Windows Update.Error Message: Exception from HRESULT: 0x80240437」
または
「Invoke-PatchBaselineOperation : Exception Details: An error occurred when attempting to search Windows Update.Error Message: Exception from HRESULT: 0x80072EE2」
上記のエラーは、Windows Update コンポーネントか、Windows Update カタログまたは Windows Server Update Services (WSUS) への接続の欠如に関連するものです。
これらのエラーを解決するには、次の手順を実行します。
1. Windows Update への接続を確認します。WSUS を使用して、またはプロキシ経由でインスタンスが Microsoft のパッチソースに直接インターネット接続しているかを確認します。
2. グループポリシーまたはレジストリキーを使用して WSUS サーバーを設定できます。WSUS の設定を確認するには、次のコマンドを実行します。
グループポリシーの確認:
gpresult /H %USERPROFILE%\Desktop\report.html
手動で設定されている可能性のあるレジストリキーの確認:
Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU' | Select-Object AUOptions, NoAutoUpdate, UseWUServer
Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate' | Select-Object DisableWindowsUpdateAccess, WUServer, WUStatusServer
プロキシの設定を確認するには、次のコマンドを実行します。
注: プロキシの設定は、パッチ適用オペレーションを実行するシステムユーザーアカウント S-1-5-18 のコンテキストで取得する必要があります。設定を取得するには、AWS Systems Manager の機能である Run Command を AWS-RunPowerShellScript ドキュメントとともに使用します。
Microsoft のウェブサイトから PSExec をダウンロードし、次のコマンドを実行して、システムユーザーのコンテキストで新しい PowerShell プロンプトを起動します。
psexec -i -s C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
AmazonSSMAgent レジストリ設定を確認するには、次のコマンドを実行します。
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\AmazonSSMAgent'
システム環境変数 (http_proxy、https_proxy、no_proxy) を確認するには、次のコマンドを実行します。
Get-Item -Path Env:http_proxy Get-Item -Path Env:https_proxy Get-Item -Path Env:no_proxy
Internet Explorer の設定 (HTTP、セキュア、例外) を確認するには、次のコマンドを実行します。
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | Select-Object ProxyServer, ProxyEnable
WinINet プロキシを確認するには、次のコマンドを実行します。
[System.Net.WebRequest]::DefaultWebProxy
WinHTTP プロキシ設定 (http=、https=、bypass-list=) を確認するには、次のコマンドを実行します。
netsh winhttp show proxy
プロキシが SSM エージェント専用に設定されている場合、Patch Manager は機能しません。これは、Windows Update クライアントがシステム全体のプロキシ設定を使用して更新をスキャンおよびダウンロードするためです。システム全体のプロキシを設定するには、次のコマンドを実行します。
netsh winhttp set proxy proxy-server="hostname:port" bypass-list="169.254.169.254"
接続がある場合は、Windows Update コンポーネントをリセットしてパッチ適用を再度試行してください。
ダウンロード後に更新がインストールされない
ダウンロード後に更新がインストールされない問題を解決するには、次の手順を実行します。
1. C:\Windows\Logs\CBS にあるパッチインストールログを確認し、実行中のコマンドのタイムスタンプと一致させます。その後、ログでエラーメッセージを確認します。
2. パッチで再起動が必要で、再起動後にインストールが失敗する場合は、Amazon EC2 スクリーンショットを使用してログイン画面のメッセージを確認します。
注: パッチがロールバックされ、ブート画面に次のメッセージが表示される場合があります。 「We couldn't complete the updates.Undoing changes.Don't turn off your computer」
3. Component-Based Servicing (CBS) のログファイルで HResult コードを見つけ、Windows Update エラーのドキュメントでそのコードを検索します。
4. Windows Update コンポーネントをリセットし、インストールを再度試行します。
パッチが見つからない
不足しているパッチのトラブルシューティングについては、「Patch Manager を使用して EC2 Windows インスタンスでパッチ適用オペレーションが成功した後、不足している KB パッチのトラブルシューティングを行う方法を教えてください。」を参照してください。
関連情報
関連するコンテンツ
- 質問済み 3年前lg...
- 質問済み 1年前lg...
- 質問済み 9ヶ月前lg...
- 質問済み 7ヶ月前lg...
- 質問済み 6ヶ月前lg...
- AWS公式更新しました 3年前