AWSでNICE DCVが繋がらない!~AMIコピーから起動で失敗したこと
AWSのEC2のWindowsサーバー上に編集端末やCG端末を構築したときにNICE DCVで苦労しましたので、今回はその苦労をTECHブログに書いてみました。
NICE DCVとは
リモートデスクトップのソリューションの一つですが、Windowsのリモートデスクトップよりもパフォーマンスの高いソリューションです。
そのため放送局の中でも編集機やCG制作のワークステーションをAWSのEC2上に構築する際に使っています。操作感としては手元にあるのと同じぐらいのパフォーマンスが得られるということで、これらGPUを必要とするワークステーションのクラウド化には必須のソリューションだと個人的には感じています。
しかも、このソリューションAWS上のサーバーに構築する場合、無料で使用できます。
またAWSのMarketplaceには、すでにインストールされた状態のAMIもあり、構築も簡単です。
そんな簡単に構築できるソリューションでどこにつまづいたかというと、NICE DCVのインストールされたAMIから編集用のソフトなどをいれたWindowsサーバーを構築したあと、プライベートAMIを作成し、そのプライベートAMIからインスタンス起動したときにハマりました。
NICE DCVの入った状態のAMIからインスタンス起動してもNICE DCVでアクセスできない
編集端末として構築したWindowsサーバーのAMIから、インスタンス起動しようとしたのですが、NICE DCVでアクセスできないという問題に直面しました。
RDP(tcp3889)では問題なくアクセスできているし、セキュリティグループもきちんとNICE DCV用の(TCP8443)をオープンにしていますが、駄目です。
これでは、せっかくAMIを作って必要に応じて編集端末をスケールして用意することを考えていたのに、その構想がくずれてしまいます。
毎回MarketplaceのAMIから構築では大変です。
ということで原因を探しました。
WindowsサービスでDCV Serverが開始していない
原因調査をしていくとサーバー側のサービスとして「DCV Server」というサービスが「開始中」で止まっていることがわかりました。
まずここが原因であることは間違いなさそうです。
そこでなぜ「実行中」にならないかをさらに調査しました。
Windowsのイベントログにエラー発見
Windowsのイベントログを探っていると、編集ソフトをいれたAMIから起動したインスタンスのサーバーでは「Security-SPP」というエラーがでていました。
どうもWindowsのライセンス認証で失敗しているようです。
NICE DCVと関係ないようにも思いましたが、念の為対策をとることにしました。
詳細はAWSのドキュメントにあります。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/common-messages.html#activate-windows
こちらのとおりに作業を行いました。
まずは管理者権限でWindows のPowerShellを起動し
Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1"
次に
Add-Routes
を実行し
Set-Activationsettings
最後に
cscript "${env:SYSTEMROOT}\system32\slmgr.vbs" /ato
AWSの説明のとおりですが、これを実行するとWindows Serverの認証がとおるようになりました。
すると何故かNICE DCVの「DCV Server」のサービスも「実行中」へとかわりました。
NICE DCVでアクセスできるようになったが今度はNICE DCVのライセンス問題に直面
無事アクセスできるようにはなったのですが、なぜかライセンスが利用できないという表示が。
このままでも使えていたのですが、それもあまりいいとは思えなかったので、今度はNICE DCVのライセンス対策を調査しました。
こちらもAWSのドキュメントに対策が書かれていました。
https://docs.aws.amazon.com/ja_jp/dcv/latest/adminguide/setting-up-license.html
NICE DCVのライセンス用のS3エンドポイントにインスタンスが到達できればよいようです。
ということで、EC2にここに記載されているポリシーをもったIAMロールをアタッチしようと思ったのですが、ポリシーがつくれない!!
ドキュメントに書かれたようにJSONを書いてもエラーで登録できません。
ここは次のようなポリシーに書き直したらよかったようです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::dcv-license.ap-northeast-1/*"
]
}
]}
とすればよかったみたい"ap-northeast-1"はご利用のリージョンにあわせて変更してください。
AWSのドキュメントの誤植か?それとも古いのか?
なにはともあれこのロールによってNICE DCVライセンスが利用できないという表示もきえて無事にプライベートAMIからの展開が終わりました。
ちょっとしたことなのですが、NICE DCVのAMIからの展開ではまったという話でした。