ブログ

AWS Systems Manager で Windows 環境の AWS ドライバーを自動更新してみた

入社3年目のクラウドエンジニアのしんちゃんです。

本ブログでは AWS Systems Manager を用いて Windows 環境の各種 AWS ドライバーを自動更新する方法をご紹介します。AWS の Windows 環境で AWS ドライバーの更新を手動で実行しているエンジニアの方は、是非ご覧ください。

AWS Systems Manager で前提条件をクリアしているか確認

<前提条件>
  • WindowsServer を利用している。(バージョン問わず)
  • 対象の EC2 に「AmazonSSMManagedInstanceCore」を付与した IAM ロールをアタッチしている。
  • パブリックサブネット(EIP が付与)されている。
    もしくはプライベートサブネットで AWS Systems Manager に対して通信可能になっている。
    ※ NATGateway でルーティング、通信できている。(us-east-1 以外は VPC エンドポイントは不可)
  • WindowsServer の OS に SSM エージェントがインストール及び起動している。

前提条件をクリアしているか確認する方法

Systems Manager > フリートマネージャー > マネージドノード 上に、対象 EC2 が表示されていることを確認してください。

もし表示されていなければ、前提条件を満たせていないので、環境を見直してみてください。

AWS Systems Manager で自動更新する AWS ドライバー

AWS Systems Manager を利用して以下のドライバーの自動更新を実行し、最新のドライバーにアップグレードします。

  • AWS PV ドライバー
  • AWS ENA ドライバー
  • AWS NVMe ドライバー

AWSドライバーのバージョン確認方法

OS にログインして PowerShell で実行していきます。

AWS PV ドライバー

バージョン確認コマンド(PowerShell)

Get-ItemProperty HKLM:\SOFTWARE\Amazon\PVDriver | Select-Object Version

実行結果の例

アップグレード前の PV ドライバーは「8.4.3」。
執筆時の最新は「8.5.0」です。

AWS ENA ドライバー

バージョン確認コマンド(PowerShell)

# Windows Server 2016 以降
Get-CimInstance -ClassName Win32_SystemDriver |
    Where-Object { $_.Name -eq 'ena' } |
    Select-Object Name, Caption, @{Name = 'Version'; Expression = { (Get-Item $_.PathName).VersionInfo.FileVersionRaw.ToString() } }

# Windows Server 2012 R2以前
function GetFileVersionString ([IO.FileInfo]$FileInfo) {
    $ver = $FileInfo.VersionInfo
    return ("{0}.{1}.{2}.{3}" -f $ver.FileMajorPart, $ver.FileMinorPart , $ver.FileBuildPart , $ver.FilePrivatePart )
}
Get-WmiObject -ClassName Win32_SystemDriver |
    Where-Object { $_.Name -eq 'ena' } |
    Select-Object Name, Caption, @{Name = 'Version'; Expression = { GetFileVersionString (Get-Item $_.PathName) } }

実行結果の例

アップグレード前の ENA ドライバーは「2.7.0.0」。
執筆時の最新は「2.8.0.0」です。

AWS NVMe ドライバー

バージョン確認コマンド(PowerShell)

# Windows Server 2016 以降
Get-CimInstance -ClassName Win32_SystemDriver |
Where-Object { $_.Name -eq 'awsnvme'} |
Select-Object Name, Caption, @{Name='Version'; Expression={(Get-Item $_.PathName).VersionInfo.FileVersionRaw.ToString()}}

# Windows Server 2012 R2以前
function GetFileVersionString ([IO.FileInfo]$FileInfo) {
$ver = $FileInfo.VersionInfo
return ("{0}.{1}.{2}.{3}" -f $ver.FileMajorPart, $ver.FileMinorPart , $ver.FileBuildPart , $ver.FilePrivatePart )
}
Get-WmiObject -ClassName Win32_SystemDriver |
Where-Object { $_.Name -eq 'awsnvme'} |
Select-Object Name, Caption, @{Name='Version'; Expression={GetFileVersionString (Get-Item $_.PathName)}}

実行結果の例

アップグレード前の NVMe ドライバーは「1.5.0.33」。
執筆時の最新は「1.6.0.35」です。

Windows 環境の AWS ドライバーを自動更新する方法(AWS Systems Manager)

実行前に複数回、EC2 が再起動されることに注意してください。

① Systems Manager > ドキュメント のページへ移動

東京リージョンであれば「こちら」で移動できます。

※別リージョンで利用したい場合は適宜変更してください。

② ドキュメントの検索ワードに「AWSSupport-UpgradeWindowsAWSDrivers」と入力して検索

検索すると以下画像の通り検索結果が表示されるので「AWSSupport-UpgradeWindowsAWSDrivers」のリンクから飛びます。

こちらの詳しい仕様については以下の公式ドキュメントを参照ください。
AWSSupport-UpgradeWindowsAWSDrivers - AWS Systems Manager オートメーションランブックリファレンス

③ 処理の仕組みについて

以下のページに遷移したかと思いますので、処理の仕組みについて簡単に説明します。

今回はオンライン環境で実行のためフロー図的には左側を想定して実行します。

フロー図の処理的には以下の順序で実行されていきます。

  • aws:assertAwsResourceProperty:入力インスタンスが Windows インスタンスであることを確認します。
  • aws:assertAwsResourceProperty:入力インスタンスがマネージド インスタンスであることを確認します。
    (オンラインアップグレード)入力インスタンスがマネージドインスタンスの場合
  • aws:createImage: AMI バックアップを作成します。
  • aws:createTags: AMI バックアップにタグを付けます。
  • aws:runCommand: AWS-ConfigureAWSPackage を使用して ENA ネットワーク ドライバーをインストールします。
  • aws:runCommand: AWS-ConfigureAWSPackage を使用して NVMe ドライバーをインストールします。
  • aws:runCommand: AWS-ConfigureAWSPackage を使用して AWS PV ドライバーをインストールします。

④ 画面の右上のオートメーションを実行

⑤ Execute automation runbook の画面で対象 EC2 を選択

今回その他のパラメータの変更はありませんが、必要に応じて設定してください。

⑥ 右下の「Execute」で実行(自動アップグレード開始)

Step 1 から Step 9 までがオンラインアップグレードの内容となりますので、すべて「Success」になるまで待ちます。

実行結果のアウトプットも確認できます。
NVMe ドライバーが正常にインストールされたようです。

PV ドライバーと ENA ドライバーも正常にインストールされていそうです。

STEP 1 から STEP 9 まですべて「Success」になりました。

Overall status が「Success」になっているのですべて成功しています。

⑦ 対象 EC2 にログインしてバージョンを確認

PV ドライバーが「8.4.3」→「8.5.0」になりました。成功です。

ENA ドライバーが「2.7.0.0」→「2.8.0.0」になりました。成功です。

NVMe ドライバーが「1.5.0.33」→「1.6.0.35」になりました。成功です。

以上で AWS ドライバーの自動更新が完了しました。お疲れ様でした!

AWS Systems Manager で Windows 環境の AWS ドライバーを自動更新してみた(まとめ)

今回、AWS Systems Manager を利用して Windows 環境の AWS ドライバーを自動更新してみました。

インスタンスタイプの最新化、OSのドライバー更新はクラウドエンジニアの永遠の課題だと思います。この自動更新を取り入れてみて少しでもお役に立てれば幸いです!

AWS についてのお困りごとがございましたらお気軽にお問い合わせください。
AWS 認定資格を取得した弊社のエンジニアが、豊富な実績をもとにサポートさせていただきます。

元記事発行日: 2025年01月15日、最終更新日: 2025年01月17日