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」というエラーがでていました。

この画面にもあるように「ライセンス認証(slui.exe)が失敗しました。」と表示されています。
どうも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のライセンス問題に直面

無事アクセスできるようにはなったのですが、なぜかライセンスが利用できないという表示が。

「No license available」と表示がでています。
このままでも使えていたのですが、それもあまりいいとは思えなかったので、今度は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からの展開ではまったという話でした。

Next Post Previous Post