[注意喚起] Amazon WorkSpacesのWSP 1.0プロトコルが廃止されます

2023.01.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

先日からAmazon WorkSpacesを利用している環境に対して「Amazon WorkSpacesのWSP 1.0プロトコルが廃止される」旨の内容の通知が届く様になりました。
冒頭の一節だけ引用すると以下の内容となります。

In November, 2022, we launched version 2.0 of WorkSpaces Streaming Protocol (WSP) and encourage all customers to update and make use of the new performance enhancements. On July 15, 2023, WSP host agent version 1.0 will be discontinued. If you are an Amazon WorkSpaces customer who uses WSP bundle(s), you must update your WorkSpaces host agents and clients to support WSP version 2.0 [1] by this date, or you will lose access to your WorkSpace.

これ以降の詳細はAWSからのメールかAWS Health Dashboardでご確認ください。

本記事ではこの通知の詳細と対応方法について解説します。

どういうことか?

Amazon WorkSpacesの通信で使用するプロトコルは当初PCoIP (PC over IP)だけでしたが、2020年より新たにAWS独自のプロトコルであるWSP (Amazon WorkSpaces Streaming Protocol)が使える様になりました。

このWSPプロトコルはその後2022年11月に新バージョンとなるWSP 2.0がリリースされています。

新バージョンがリリースされたことを受け、旧バージョンによる通信が2023年7月15日をもって廃止されるのが今回の通知内容となります。

誰が影響を受けるのか?

WSPプロトコルを使うWorkSpace環境を持つユーザー全員となります。
PCoIPを使うWorkSpace環境は影響を受けません。

対応方法

対応方法としては以下の2点が必要です。

  1. WorkSpacesクライアントの更新
  2. WorkSpace内部にあるWSP Host Agentのバージョン更新

利用者側のクライアントとWorkSpace内部のWSP Host Agentのバージョンの両方とも新しくなっていればWSP 2.0を自動的に使う様になるとのことです。

1. WorkSpacesクライアントのバージョン更新

AWSからの通知によればWorkSpacesクライアントは以下のバージョンである必要があります。

  • Windows native client version 5.4.0 or higher
  • macOS native client version 5.5.0 or higher
  • Web access

本日時点での最新バージョンはVer.5.6.xですので、あまり深く考えず「とりあえず最新バージョン」にしておけば大丈夫です。

現在使用中のバージョンを確認するには、Windows Clientであればメニューから「Amazon WorkSpaces → Amazon WorkSpacesについて」を選ぶと表示されます。

クライアントの自動更新機能を使っても良いですし、自分で最新バージョンのインストーラーをダウンロードしてインストールしても構いません。

補足 : その他クライアント

上記に無いiPad client、Android client、Linux clientは元々PCoIP専用でWSP非対応です。

2. WSP Host Agentのバージョン更新

WSP Host AgentはWorkSpace環境内部にあるエージェントプログラムです。
WSP 2.0リリース当時のアナウンスによれば、

WSP ホストエージェントを最新のバージョンに更新するには、既存の Amazon WorkSpaces を再起動する必要があります。

とのことで、WorkSpace環境を再起動すれば自動で更新されるため大抵の場合において既に問題の無いバージョンになっているはずです。

WSP 2.0のために要求されるバージョンは以下の通りです。

  • Windows host agent version 2.0.0.312 or above
  • Ubuntu host agent version 2.1.0.501 or above
  • Amazon Linux 2 host agent version 2.0.0.596 or above

各WorkSpace環境で使われているバージョンを確認し、上記より古いバージョンの場合はWorkSpace環境を再起動してバージョンを更新してください。

なお、各WorkSpaceのプロトコルがPCoIPかWSPかはマネジメントコンソールで確認してください。

2-1. Windows Server 2019 WorkSpaceの場合

Windows Server 2019環境の場合、WSP Host Agentのバージョンは「設定」の「アプリと機能」から確認可能です。
WSPアプリケーションのバージョン番号が該当します。

ちなみにPowerShellからこの値を取りたい場合は以下の様なコマンドを実行すると良いでしょう。

# WSP関連のインストール済みバージョンを取得
Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' | 
    ForEach-Object { [PSCustomObject]@{ DisplayName = $_.GetValue('DisplayName'); DisplayVersion = $_.GetValue('DisplayVersion') } } |
    Where-Object { $_.DisplayName -like 'WSP*' }

今回確認用に新規に作成した環境では以下の結果となりVer.2.0.0.593がインストール済みでした。

# 本日新規に用意したWindows Server 2019環境の結果
PS D:\> Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' |
>>     ForEach-Object { [PSCustomObject]@{ DisplayName = $_.GetValue('DisplayName'); DisplayVersion = $_.GetValue('DisplayVersion') } } |
>>     Where-Object { $_.DisplayName -like 'WSP*' }

DisplayName        DisplayVersion
-----------        --------------
WSP-legacy-plugins 2.0.0.54
WSP-service        2.0.0.593
WSP-legacy-service 2.0.0.54

上記ではWSP関連のプログラムを全部拾いたかったためWSP-legacy-pluginsWSP-legacy-serviceといったプログラムのバージョンも表示されていますが、WSP-serviceだけに絞り込みたい場合は以下の様にしてください。

# WSP-service だけに絞りたい場合
Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' | 
    ForEach-Object { [PSCustomObject]@{ DisplayName = $_.GetValue('DisplayName'); DisplayVersion = $_.GetValue('DisplayVersion') } } |
    Where-Object { $_.DisplayName -like 'WSP-service' }

2-2. Windows Server 2016 WorkSpaceの場合

Windows Server 2016環境の場合、WSP Host Agentのバージョンは「設定」の「アプリと機能」では確認できません。
WSPアプリケーションはあれどバージョン番号が非表示となっています。

Windows Server 2016ではコントロールパネルから「プログラムのアンインストールまたは変更」を選ぶと良いでしょう。
こちらではバージョン番号が確認できます。

PowerShellを使う場合はWindows Server 2019と同様のコマンドでOKです。

# Windows Server 2016環境の場合
PS D:\> Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' |
>>     ForEach-Object { [PSCustomObject]@{ DisplayName = $_.GetValue('DisplayName'); DisplayVersion = $_.GetValue('DisplayVersion') } } |
>>     Where-Object { $_.DisplayName -like 'WSP*' }

DisplayName DisplayVersion
----------- --------------
WSP-service 1.0.1.1866
WSP-plugins 1.0.1.1866

再起動でバージョンが更新されない?

今回動作確認用に新規にWindows Server 2016環境を用意した結果が上記なのですが、バージョンがVer.1.0.1.1866と古いままでした。
おそらくベースイメージの更新日が古いからだと思われます。

AWSの通知に従いこのイメージを再起動したのですがエージェントのバージョンが更新されない事象に遭遇してしまいました。
何度か再起動をリトライしても事象は改善しませんでした。

その後Windows Updateを行い、Windows Updateと再起動を併せて行う形にしたらエージェントのバージョンは更新されました。
根本原因が不明なため何が悪かったのか断定できないのですが、古いイメージだったので必要なセキュリティ更新が未適用?といった理由かもしれません...

最終的にバージョンが更新された後の結果は下図の通りでVer.2.0.0.593になりました。

PowerShellの結果もこの通りです。

# Windows Update + 再起動後の結果
PS D:\> Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' |
>>     ForEach-Object { [PSCustomObject]@{ DisplayName = $_.GetValue('DisplayName'); DisplayVersion = $_.GetValue('DisplayVersion') } } |
>>     Where-Object { $_.DisplayName -like 'WSP*' }

DisplayName        DisplayVersion
-----------        --------------
WSP-legacy-plugins 2.0.0.54
WSP-service        2.0.0.593
WSP-legacy-service 2.0.0.54

余談になりますがエージェントのアップデート処理自体はWindows Updateとは別物でWorkSpaceインスタンスの起動の都度実行されるスクリプト *1で行われている様です。
処理が複雑で全部読み切れなかったのですが、自身の環境をチェックした後にAWS Managedなネットワーク側からインストーラーをダウンロードして更新処理を行っている様でした。

この様な感じでインストーラーは公開されておらず、WSP Host Agentのバージョンが更新されず原因も特定できない場合はAWSサポートに問い合わせるしか無さそうです。

追記 : 再起動後放置すると良さそう

再起動でバージョンが更新されない件について改めて調査してたのですが、WSPのアップデートに際しユーザーがログイン済みかをチェックしていました。
ユーザーがログインしている場合は以下の様なログを残しアップデート処理をスキップします。

# ユーザーのログインを検知すると直ちに処理をExitしている
[Information] (update-wsp.ps1) Users found logged in to the workspace.
[Information] (update-wsp.ps1) Exiting update-wsp.ps1

再起動後しばらく(10~20分くらい)放置してからログインするとバージョンが更新されていました。

2-3. Amazon Linux 2 WorkSpaceの場合

本日時点において通常リージョンでWSPのAmazon Linux 2イメージはありません。
WSPを使うAmazon Linux 2環境はAWS GovCloud (US-West)リージョンだけの提供なので特に気にしないで大丈夫でしょう。

Q: Is there an Amazon Linux WorkSpaces bundle using WSP?

A: Yes. Amazon WorkSpaces offers Linux with WSP in the AWS GovCloud (US-West) Region with support for smart cards, keyboard and mouse input, and audio output.

2-4. Ubuntu WorkSpaceの場合

逆にUbuntu環境は全てWSPでPCoIP環境はありません。

UbuntuのWSP Host Agentのバージョンを取得する方法をドキュメントから見つけることができなかったのですが、勘でエージェントの実体であるwspdcvhostadapter(/usr/bin/wspdcvhostadapter)を叩いてみたら欲しい値が取れました。

# ターミナルから --version パラメーターを付けて実行
sudo wspdcvhostadapter --version

本日作成したUbuntu環境のバージョンはVer.2.1.0.501でした。

$ sudo wspdcvhostadapter --version
2.1.0.501

WSP 2.0を使っているか確認する方法

マネジメントコンソールおよびWorkSpaces ClientのUIからWSPプロトコルのバージョンを確認する方法は無い様です。
ただし、WorkSpaces Clientのアプリケーションログを調べてみたところ一応それっぽいものがありました。

# WSP 1.0のログ
[INF] WSPLogs:WSP Workspace StreamingSuccess

# WSP 2.0のログ
[INF] WSPv2 Workspace StreamingSuccess

微妙な文言の違いですが、これくらいしか見つけることができませんでした...

最後に

以上となります。

大抵の場合であればWorkSpaces Clientを最新にするだけで大丈夫だと思いますが、WSP 1.0の廃止まで約半年と若干期間が短いので早めに対応しておくことをお勧めします。

脚注

  1. C:\Program Files\Amazon\WorkspacesConfig\ 配下にそれっぽいPowerShellスクリプトが幾つかある