NICE DCV の Windows AMI を使って、リモートアクセスしてみた

# はじめに

[NICE DCV](https://aws.amazon.com/jp/hpc/dcv/) は、さまざまなネットワーク条件で利用できる高性能なリモートアクセスプロトコルです。グラフィックスを多用する用途でもスムーズな表示を提供する特徴があります。例えば、EC2 上で NICE DCV サーバーを構築し、そのサーバー上で動画編集や HPC などで利用できます。

EC2 上で NICE DCV は追加料金が不要で利用できます。EC2 以外の場合はライセンスの購入が必要です。

EC2 で NICE DCV としてアクセスする方法が不明だったので、検証をしてみましょう。



# NICE DCV サーバーを作成

NICE DCV は、独自にインストールすることもできますが、AMI として提供されているのでこれを利用するのが楽です。EC2 の構築画面で、Browse more AMIs を選択します。

![image-20230606230755850.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c1f52aef-d909-35f7-88f6-4acb0ed6e3fc.png)



NICE DCV で検索すると色々出てきます。NICE DCV for Windows を選択します。

![image-20230606230906727.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/813fa50f-00b2-d1c5-5fb6-cae8464d2724.png)



Instance Type を選択して、Continue を押します。なお、MarletPlace であっても、NICE DCV の Software 部分は $0 で利用できます。

![image-20230606230937343.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ca792be9-383e-53e3-c04d-f05c708468ec.png)



名前やネットワークを指定して、Launch をおします。

![image-20230606231016919.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/96063a09-a397-88ef-2c0e-6973a6ba4c8c.png)



# Security Group の指定

- NICE DCV は、[デフォルトで TCP / UDP 8443 が利用](https://docs.aws.amazon.com/ja_jp/dcv/latest/adminguide/manage-port-addr.html)されます。8443 Port を公開します。

![image-20230606232800241.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/af7a3bad-652e-8bf4-582d-ff44e14d86aa.png)



# Windows の NICE DCV Client をインストール

アクセス元の端末で、NICE DCV Client をインストールします。インストーラーは次の URL でダウンロードできます。

https://docs.aws.amazon.com/ja_jp/dcv/latest/userguide/client-windows.html

![image-20230606233037176.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c5dc38a1-ce8a-b1a8-d363-e748b7ddda38.png)



# NICE DCV でアクセス

インストール後に、「NICE DCV Client 」を起動します。

![image-20230606233225405.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3f2a1ac7-7309-aacb-ceb5-ca0c166220e2.png)



EC2 Instance の Public IP を指定して、Connect を押します。

![image-20230606233328028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c9ed742c-c244-1682-8a99-e40ada3ba288.png)



Trust and Connect を押します。

![image-20230606233419531.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/99372e16-77c6-5486-affe-9037f4b91bd5.png)



Windows のローカルの Administrator と、Password を入れて Login を押します。

![image-20230606233826162.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/7f9e1671-259c-e3ce-9e87-ab2b6c0b9164.png)



接続できました。普通に Windows のデスクトップ画面が開けます。

![image-20230606234248995.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c99dbdbe-611b-7f83-e5fe-61ff358ce222.png)



# Tips1 : ドメインユーザーで接続

上記の手順は、Windows Server のローカル Administrator を使ったアクセスでした。一方、Active Directory を導入している環境では、ドメインユーザーでアクセスがしたいです。ドメインユーザーを使ったアクセスを試してみましょう。

まず、ドメインは参加してなかったため、参加をします。

![image-20230606235613018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/5e53b902-1b32-84dc-e14d-d32c900dd289.png)



次に、NICE DCV サーバー上のセッションを設定変更する必要があります。コマンドプロンプト上で次のコマンドを実行し、現在立ち上がっているセッションを確認します。

```
"C:\Program Files\NICE\DCV\Server\bin\dcv.exe" list-sessions
```



実行例

- Administrator ユーザーを対象に、console セッションが立ち上がっています。

```
C:\Users\Administrator>"C:\Program Files\NICE\DCV\Server\bin\dcv.exe" list-sessions
Session: 'console' (owner:Administrator type:console)
```



console セッションは、同時に 1 つしか利用できないため、現在立ち上がっているセッションを終了します。NICE DCV としてアクセスいている Administrator は、このタイミングで接続できなくなります。(代わりにリモートデスクトップなどでアクセスしましょう)

```
"C:\Program Files\NICE\DCV\Server\bin\dcv.exe” close-session console
```



ドメインユーザー `cloud.sugi.local\Admin` を指定して、セッションを起動します。

```
"C:\Program Files\NICE\DCV\Server\bin\dcv.exe" create-session^
    --owner cloud.sugi.local\Admin^
    --name admin-session^
    console
```



起動されたか確認します。

```
"C:\Program Files\NICE\DCV\Server\bin\dcv.exe" list-sessions
```



以下のように、`cloud.sugi.local\Admin` が Owner として起動されました。

```
C:\Users\Administrator>"C:\Program Files\NICE\DCV\Server\bin\dcv.exe" list-sessions
Session: 'console' (owner:cloud.sugi.local\Admin type:console name:admin-session)
```



準備が出来たので、ドメインユーザーからアクセスしてみましょう。

![image-20230607000249565.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/48adc4d8-c609-eaea-8913-76da27a11795.png)



アクセスできました！

![image-20230607164537714.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/881ddeb4-9586-0c40-f629-987705ec15f1.png)



# Tips2 : Windows 上で複数セッションを作成できない

Windows Server に NICE DCV を使ってアクセスするときに、同時に 1 セッションまで利用できます。次の Document に記載があります。

https://docs.aws.amazon.com/ja_jp/dcv/latest/adminguide/managing-sessions.html

![image-20230607161927063.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/3d079113-04e4-0f59-464f-98090e867286.png)



2 つ Session を起動するとどうなるか見てみましょう。list-sessions コマンドで、既に 1 個の Session が起動されていることがわかります。

```
C:\Users\Administrator>"C:\Program Files\NICE\DCV\Server\bin\dcv.exe" list-sessions
Session: 'console' (owner:cloud.sugi.local\Admin type:console name:admin-session)
```



create-session で 2 個目を作成してみます。

```
"C:\Program Files\NICE\DCV\Server\bin\dcv.exe" create-session^
    --owner Administrator^
    --name admin-session2^
    console2
```



想定通りエラーになりました。

```
Could not create session. The maximum number of sessions has been reached
```





# 検証を通じてわかったこと

- NICE DCV の AMI は、MarketPlace を通じて提供されている。MarketPlace 経由でも、NICE DCV 自体のソフトウェアは追加課金無しで利用が可能。通常の EC2 インスタンスと同じ料金で提供がされている。
- NICE DCV サーバーへリモートアクセスするときの認証は、デフォルトでローカル Administrator となりドメインユーザーは利用できない。設定変更を加えることで、ドメインのユーザーでもアクセスが可能。
  - https://dev.classmethod.jp/articles/nice-dcv-createsession/
- NICE DCV で Windows サーバーにリモートアクセスする場合は、同時に 1 個の Session しか作成できない。同時に 2 人以上のユーザーが、異なる画面でアクセスすることはできない
- Administrator 用の Session を削除して、別のユーザー用の Session を作成することで、異なるユーザーを使ってアクセスが可能
  - Systems Manager の Run Command と連携して、ユーザーの切り替えを自動的にすることは出来そう