AWS Tools for Windowsの提供が終了した後のWindows Server AMIを確認してみた

2023.06.22

しばたです。

以前の記事でWindows環境向けの開発ツールをまとめた統合インストーラーであるAWS Tools for Windowsの提供が終了する件をお伝えしました。

AWS Tools for Windowsの提供は今月1日(2023年6月1日)をもって終了しました。 *1

そしてこのAWS Tools for WindowsはWindows Server AMIの初期セットアップに使われていました。
今月からはAWS Tools for Windows無しでAMIのセットアップが行われています。

本記事では最新のAMIが従来のものと比べどう異なるか調査した結果を共有します。

Windows Server AMIの更新履歴

Windows Server AMIの更新履歴は以下のページにまとまっています。

今月の更新は2023年6月14日のリリースになります。

こちらに

The AWS Tools for Windows installation package has been deprecated, and no longer appears as an installed program on Windows AMIs provided by AWS.

とある様に今月からAWS Tools for Windowsが除外されたことが明記されています。
加えて、

The AWSPowerShell Module is now installed at C:\ProgramFiles\WindowsPowerShell\Modules\AWSPowerShell.
The .NET SDK remains located at C:\ProgramFiles (x86)\AWS SDK for .NET.

とある様にAWS Tools for PowerShell(AWSPowerShellモジュール)とAWS SDK for .NETが個別にインストールされる様になりました。
これにより従来のAMIとの互換性を維持しようとしています。

比較してみた

ここからは実際に今月のAMIと先月のAMIを比較して差異を調べていきます。

環境は私の検証用AWSアカウントの東京リージョンで以下のAMIからインスタンスを作成しています。

  • 今月のAMI (AWS Tools for Windows未使用)
    • ami-02d019195385b83ae (Windows_Server-2022-Japanese-Full-Base-2023.06.14)
  • 先月のAMI
    • ami-0373bd2f6665b3540 (Windows_Server-2022-Japanese-Full-Base-2023.05.10)

アプリと機能

今月のAMIの「アプリと機能」を確認すると確かにAWS Tools for Windowsは無くなっていました。

それ以外にインストールされているアプリケーションは変わりませんでした。

AWS Tools for PowerShell

前述の通りAWS Tools for PowerShell(AWSPowerShellモジュール)は個別にインストールされています。

これまでAWS Tools for PowerShellは独自のフォルダにインストールされていましたが、これからはPowerShellモジュールの標準フォルダに格納される様になります。

  • これまで (独自) : C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell
  • これから (標準) : C:\Program Files\WindowsPowerShell\Modules\AWSPowerShell\バージョン番号\

前の記事では「MSIインストーラーでインストールされるのでは?」と予想してましたが、調べた結果PowerShellGetを使ってインストールされていました。
このためGet-InstalledModuleコマンドでモジュール情報を参照できます。

# 新しいAMIでは Get-InstalledModule コマンドでモジュールを参照可能
PS C:\> Get-InstalledModule

Version    Name                                Repository           Description
-------    ----                                ----------           -----------
4.1.346    AWSPowerShell                       PSGallery            The AWS Tools for Windows PowerShell lets develo...

# 補足 : 古いAMIはGet-InstalledModule コマンドで参照できない(何もヒットしない)
PS C:\> Get-InstalledModule
PS C:\>

そして、PowerShellGetを使う様になったためPSModulePath環境変数に独自のパスを追加することも無くなっています。

# 新しいAMIでは PSModulePath環境変数 のカスタマイズは無くなった
# ※以下の3つのパスは標準で設定される
PS C:\> $env:PSModulePath -split ';'
C:\Users\Administrator\Documents\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files\WindowsPowerShell\Modules

# 補足 : 古いAMIはPSModulePath環境変数をカスタマイズしている
PS C:\> $env:PSModulePath -split ';'
C:\Users\Administrator\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files (x86)\AWS Tools\PowerShell\

新しいAMIでもモジュールの暗黙ロードは可能ですので基本的な動作に差は無いはずです。

非常に細かい話で可能性は極めて低いでしょうが、新しいAMIではPowerShell内部でのモジュール参照順が微妙に変わるため、複数モジュールを組み合わせて使っている環境ではなにか問題が起きるかもしれません。
懸念があるとすればこれくらいだと思います。

補足 : 32bit版PowerShellに関して

PowerShellモジュールの標準インストール先は64bit版と32bit版で異なるため、32bit版PowerShellでGet-InstalledModuleコマンドを実行してもAWS Tools for PowerShellを見つけることはできません。

# 32bit版PowerShellではAWS Tools for PowerShellは見つからない
PS C:\> [System.Environment]::Is64BitProcess
False
PS C:\> Get-InstalledModule
PS C:\>

ただしPSModulePathの内容が64bit版モジュールの保存先も参照する様になっているのでAWS Tools for PowerShellの利用は問題無く行えます。

# 32bit版PowerShellでも64bit版モジュールの参照はしてくれる
PS C:\> [System.Environment]::Is64BitProcess
False
PS C:\> $env:PSModulePath -split ';'
C:\Users\Administrator\Documents\WindowsPowerShell\Modules
C:\Program Files (x86)\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files\WindowsPowerShell\Modules

# 特に問題無く各種コマンドレットを使用可能
PS C:\> Get-AWSPowerShellVersion

AWS Tools for Windows PowerShell
Version 4.1.346
Copyright 2012-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# ・・・後略・・・

AWS SDK for .NET

AWS SDK for .NETは新旧AMI変わらずC:\Program Files (x86)\AWS SDK for .NET配下にインストールされています。
ディレクトリ構成は旧バージョン(past-release)の構成だけ若干変わっていました。

  • 新AMI
    • Version-2フォルダのみ存在
    • Version-2フォルダ直下に各アセンブリが保存されている
  • 旧AMI
    • Version-1、Version-2フォルダ存在
    • Version-2フォルダ配下にランタイム毎のフォルダ(Net35Net45など)が存在

さすがにこのフォルダにあるVer.2系のSDKを使っている(使い続けている)方はいないと思いますが、何らかの理由で該当する方はパスが変わるのでご注意ください。

なお、どの様な手段でインストールしているかは分かりませんでした。
雰囲気としてはZipファイルをダウンロードして展開している様に見受けられます。

AWS Toolkit for Visual Studio

AWS Toolkit for Visual Studioは新しいAMIにはインストールされなくなりました。
AWS Tools for PowerShellの終了とともにC:\Program Files (x86)\AWS Toolsフォルダも無くなり、このフォルダ配下にあったツールは全て消失しています。

AWS CodeCommit Credential Helper (git-credential-AWSS4.exe)

AWS Toolkit for Visual Studio同様にgit-credential-AWSS4.exeもインストールされなくなっています。
前の記事でも触れた様にこのツールの代わりにgit-remote-codecommitを使う様にしてください。

余談

Windows Server 2012 RTM and Windows Server 2012 R2 will reach End of Support (EOS) on October 10, 2023 and will no longer receive regular security updates from Microsoft.
On this date, AWS will no longer publish or distribute Windows Server 2012 RTM or Windows Server 2012 R2 AMIs.
Existing RTM/R2 instances and custom AMIs in your account will not be impacted, and you can continue to use them after the EOS date.

ということでWindows Server 2012およびWindows Server 2012 R2のEOLが近づいています。
Windows Server 2008 R2の時と同様にEOLを迎えた後は新規AMIの提供が無くなります。既存AMIおよびインスタンスは自己責任において利用可能な点も変わりません。

EOLに向けて新しいOSへ切り替える、脱Windowsするなどよしなに対応してください。

最後に

以上となります。

本記事で触れた変更点は非常に細かい点や旧バージョンの話がほとんどのため、一般的な利用においては変更点をなんら意識すること無く従来通りの利用ができると思います。
あまり気にせず新しいAMIを使っていくのが良いでしょう。

脚注

  1. 一応、本日時点で最終版のMSIインストーラーをダウンロードすることであれば可能です