AWS Systems Manager の機能である Patch Manager を使用して、Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスで不足しているパッチのトラブルシューティングを行実行したいです。
簡単な説明
次の事例は、パッチが見つからない 場合の最も一般的な理由です。
- パッチがインスタンスOSタイプに適用されない。
- Microsoft Knowledge Base (KB) パッケージの詳細がベースライン構成と一致しない。
- 後続のパッチがすでにリリースされている。
- パッチがWindows Server Update Services (WSUS) リリースチャネルで利用できない。
- 既にインスタンスにパッチがインストールされている。
解決方法
このパッチは、インスタンス OS タイプには適用できません
インスタンスにパッチを適用可能かどうかを確認するには、次の手順を実行してください。
- Windows Update カタログを開きます。
- Microsoft KB 記事の ID を検索するには、パッチ ID を使用します。パッチ ID の例: KB3216916
- [製品] で、値がマネージドノードの値と一致しているかどうかを確認します。
- 管理対象ノードの製品名は、[システム設定] (Microsoft Web サイト) で確認できます。
KB パッケージの詳細がベースラインの構成と一致しません
KB 分類、重大度、およびリリース日がベースライン構成と一致しているかどうかを確認するには、以下の手順を実行します。
- AWS Systems Manager コンソールを開きます。
- ナビゲーションペインの [ノード管理] で、[実行コマンド] を選択します。
- [コマンド履歴] タブを選択します。
- パッチ適用用の [コマンド ID] を選択して、マネージドノードを選択します。
- [出力] を選択して [ベースライン] パラメータの設定を確認します。
分類、重大度、および承認の遅延日は、Microsoft Update カタログのパッケージの詳細と一致する必要があります。デフォルトのパッチベースラインを使用しており、パッチ分類が基準と異なる場合は、カスタムパッチベースラインを作成する必要があります。
次のいずれかの方法で特定の KB がパッチベースラインで承認されているかどうかを確認できます。
**注:**次のコマンドを実行するには、最新の AWS コマンドラインインターフェイス (AWS CLI) と AWS Tools for PowerShell をローカルマシンまたは EC2 インスタンスにインストールします。
パッチベースラインに関する効果的なパッチの説明 AWS CLI コマンド
特定の KB がパッチベースラインで承認されているかどうかを確認するには、describe-effective-patches-for-patch-baseline を実行します。
以下は、KB2124261 がパッチベースライン pb-abdce123456789fgh で承認されているかどうかを確認するコマンドの例です。
aws ssm describe-effective-patches-for-patch-baseline --baseline-id pb-abdce123456789fgh --query "EffectivePatches[][Patch][?KbNumber=='KB2124261'][]"
GetDeployablePatchSnapshotForInstance API
GetDeployablePatchSnapshotForInstance API を使用してスナップショットを生成するコマンドの例です。以下は、スナップショット ファイルをデスクトップにダウンロードする PowerShell コマンドの例です。
注: アタッチされた IAM インスタンスプロファイルから取得した認証情報を用いて、ターゲット EC2 インスタンスから次の PowerShell コマンドを実行します。IAM インスタンスプロファイルが、アタッチされたターゲット EC2 インスタンスからのコマンドを実行しない場合、無効なトークンリクエストエラーが表示される場合があります。
$instanceId = Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/instance-id
$snap = Get-SSMDeployablePatchSnapshotForInstance -SnapshotId '521c3536-930c-4aa9-950e-01234567abcd' -InstanceId $instanceId -Verbose
(New-Object Net.WebClient).DownloadFile($snap.SnapshotDownloadUrl, "$env:UserProfile\Desktop\01-snapshot.json")
**注:**スナップショット ID は任意の GUID と置き換えることができます。New-GUID コマンドを使用して、PowerShell からスナップショット ID の置換を生成します。
後のパッチはすでにリリースされています
次の手順を実行すると、新しいパッチがリリースされているかどうかを確認できます。
- Windows Update カタログを開きます。
- Microsoft KB 記事の ID を検索するには、パッチ ID を使用します。パッチ ID の例: KB5015808
- [製品] で、値がマネージドノードの値と一致しているかどうかを確認します。次に、対応するタイトルを選択して、新規に [アップデートの詳細] ウィンドウを開きます。
- [パッケージの詳細] タブを選択します。次に、[このアップデートは次のアップデートに置き換えられました] に、新しいパッチがあるかどうかを確認します。
この更新プログラムを WSUS リリースチャネル内で利用することはできません
パッチマネージャーは、Microsoft Windows OS 上で、マイクロソフトが Microsoft Update で発行して WSUS で自動的に利用可能になっている、利用可能な更新プログラムの一覧を取得します。パッチが WSUS リリースチャネル内で使用できないとき、パッチマネージャーがその特定のパッチを選択することはありません。
パッチの利用可能性を確認するには、以下の手順を実行します。
- Windows Update カタログを開きます。
- Microsoft KB 記事の ID を検索するには、パッチ ID を使用します。パッチ ID の例: KB5015808
- **[詳細情報]**で、サポート記事を選択します。たとえば、2022 年 7 月 12 日 - KB5015808 (OS ビルド 14393.5246) を参照することができます。
- Microsoft のサポート記事で、[リリースチャネル] セクションを参照することもできます。次に、アップデートプログラムが Windows Server Update Services (WSUS) リリースチャネルで利用可能かどうかを確認します。
既にインスタンスにパッチがインストールされた状態です
パッチは、手動によるパッチ適用などでインスタンスにすでにインストール済みである可能性があります。次のいずれかの方法で、パッチがインスタンスにインストール済みであることを確認できます。
Windows Update OS のログ
インストール済みの更新プログラムの一覧は、Get-Hotfix コマンドまたは PSWindowsUpdate モジュールを使用することで取得できます。以下のコマンド例では PSWindowsUpdate モジュールを使用しています。このコマンドは、デスクトップに、WindowsUpdates.txt ファイルをダウンロードします。
Install-Module PSWindowsUpdate
Get-WUHistory | ForEach-Object { new-object psobject -Property @{Date = $_.Date; KB = $_.KB; Title = ($_ | Select-Object -ExpandProperty Title) } } | Out-File $env:UserProfile\Desktop\WindowsUpdates.txt
フリートマネージャーコンソール
AWS Systems Manager の機能であるフリートマネージャーを使用することで、パッチがインスタンスにすでにインストールされているかどうかを確認できます。フリートマネージャーコンソールを使用するには、以下の手順を実行してください。
- AWS Systems Manager コンソールを開きます。
- ナビゲーションペインで、[フリートマネージャー] を選択します。
- マネージドノードを選択し、[ノードの概要] を選択します。
- [パッチ] で、見つからない KB を検索します。
describe-instance-patches AWS CLI コマンド
パッチがプログラムによってインストールされているかどうかを確認するには、describe-instance-patches コマンドを実行します。
以下は、KB4521862 を検索しているAWS CLI コマンドの例です。
aws ssm describe-instance-patches --instance-id "i-0b806abcdef12345" --filters "Key=KBId,Values=KB4521862"