Amazon WorkSpacesでWindows仮想マシンを作成しOffice 365を導入してみた (その2)

[令和のシンクライアント？Amazon WorkSpacesでWindows仮想マシンを作成しOffice 365を導入してみた](https://qiita.com/yamachan360/items/454c8ad9d2ce6127ba19) の続き？です。インストール後に試したこと、確認してみたこと、ざっくりまとめてみました。

# 仮想マシンのネットワーク周り

まずは Amazon WorkSpaces 上に作成した Windows 仮想マシンのネットワーク周りについて、ざっと見ておきます。ネットワークカードは2つ見えますが、赤枠のカードがインターネットアクセスを提供している模様。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/11396ede-0ae9-5abb-97d1-7df90ab02e25.png)
ちなみに Tracert は以下のような感じで、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/63342ed5-a987-501a-e93d-28ba4803fdf8.png)
外から見える IP Address (たぶんインターネットゲートウェイの外向けアドレス) は以下のような感じでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/021049e3-620a-14d7-efcd-96b8ed4d730a.png)
そして自分は Windows のリモートデスクトップで、コンソールセッションに接続しているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/b5a69310-ef23-5f1c-f034-afaaef82d60e.png)
たぶんですが、もう一枚 (198.19.128.0/18) のネットワークカードのほうが、Amazon WorkSpaces 専用にセットアップされたリモートアクセス用な気がします。

~~【追記】リモートアクセス用かどうか不明ですが、Elastic IP アドレスっぽいです~~

## さらに追記

すみません、探し方が足りませんでした… ネットワークインターフェースありました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/e9b4e6af-561d-f48a-57ac-60cceaf1d006.png)
そして、Elastic IP? がアタッチされていたのは、こちらでした…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/d7454449-2465-877e-11e8-84e7a3673229.png)
そしてディレクトリの設定にある、以下が「有効化」されているので、このパブリックIP付与が実施されていると思われます。(たぶんこれが理由で、この Elastic IP? はコンソールの EIP リストには出てこない)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/da8a4512-15e0-d82b-7f62-7973ddf1af87.png)

## またまた追記

[黒帯セミナー動画](https://www.youtube.com/watch?v=IeIyA6qXHvo) で詳細に説明されていました。スライドを引用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/cba050da-3d4f-bdf3-132f-07d14b6038f0.png)
ちゃんと2つのネットワークインターフェースについて説明されています。(9) の画面のストリーミング (PCoIP) で用いられているのが、↑で謎だったインターフェースですね。次のスライドもわかりやすいので引用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/1b2bb66d-faa1-b6eb-5040-2298ba5fad85.png)
このスライドで右にある "Direct connect/VPN" が、今回の私の場合はインターネットゲートウェイになっています。そして右のオンプレミスがインターネット、って感じですね。

なお同じ [黒帯セミナー動画](https://www.youtube.com/watch?v=IeIyA6qXHvo) の中で、サブネットが2つ作成されている理由も説明がありました。Amazon WorkSpaces では負荷分散と障害対応のため、AZ をわけて2つのサブネットを作成し、WorkSpaces インスタンスを振り分けて配置するとのこと、今回の私の場合、1台しかインスタンスが無いため、片方は空のまま放置されていたわけですw

# WorkSpaces 用に作成された VPC

AWS コンソールから探してみましたが、今回の仮想マシン用の EC2 インスタンスなどは見当たりませんでした。このあたりは Amazon WorkSpaces サービス内部で隠されているのかもしれません。

ただし WorkSpaces 用に作成された VPC 環境は確認できましたので、ちょっと見てみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/b74fe8e5-96f3-d35b-36f9-8f56057e2032.png)
ざっと眺めると、以下の要素が含まれているようです。

* サブネット x2
  * IPv4 172.16.0.0/24
  * IPv4 172.16.1.0/24 (現時点で未使用？)
* ネットワーク ACL
* DHCP オプションセット
* ルートテーブル
* インターネットゲートウェイ

2つ作成されていたサブネットのうち、仮想マシンのローカルアドレスは 172.16.0.170 だったことから、以下のサブネットに含まれると思われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/f19b3c9a-b35f-313b-7704-2951cb9494a5.png)
このサブネットのルートテーブルを確認すると、VPC (172.16.0.0/16) 内のアクセス以外は、インターネットゲートウェイに飛ばすよう設定されていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/dce5d551-b350-a264-8968-2bacc9a82545.png)
[ガイド](https://docs.aws.amazon.com/ja_jp/workspaces/latest/adminguide/amazon-workspaces-vpc.html) にある図を改変して、今の状況を整理してみました。NAT ゲートウェイは見当たらなかったので、クイックスタートで作成した環境を利用者から見た構成としては、たぶんこんな感じなのかと思いますw
![2020-05-10 23_09_27-Meowbit.odp - LibreOffice Impress.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/a9751d81-f1b6-2a2e-e997-7154997dafb0.png)
【追記】[Amazon WorkSpaces で IPアドレスを固定する](https://qiita.com/nakanishi-m/items/d62a809d0840c2c0e0ae) などを読みますと、上記で **X** になっている public subnet と NAT ゲートウェイを追加し、それに EIP (Elastic IP アドレス) を付与して、private subnet のルーティング先をそれに変更すれば固定アドレスを設定できそうです。なるほどなぁ。

## インターネットアクセスに関する追記

[インターネットゲートウェイ](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Internet_Gateway.html) のドキュメントを参照すると、以下のような記述がありました。

> IPv4 でインターネット通信できるようにするには、パブリック IPv4 アドレス、またはインスタンスのプライベート IPv4 アドレスに関連付けられる Elastic IP アドレスが必要です。インスタンスは、VPC とサブネット内で定義されたプライベート（内部）IP アドレス空間のみを認識します。

> インターネットゲートウェイはインスタンスに代わって 1 対 1 の NAT を論理的に行います。そのため、トラフィックが VPC サブネットから出てインターネットへ向かうとき、返信アドレスフィールドは、インスタンスのプライベート IP アドレスではなくパブリック IPv4 アドレスまたは Elastic IP アドレスに設定されます。

やはりインターネットゲートウェイには NAT 機能があり、これが使われているような気がします。高速セットアップしたせいかもしれませんが、WorkSpaces インスタンスの詳細がコンソールから確認できないのですが…

上記の説明に合致する設定としては、WorkSpaces インスタンスのネットワークカードに「Elastic IP アドレス」が関連付けられている、と考えられます。

~~そして同じガイドページの図にある「Elastic IP アドレス」の例が、仮想マシンで実行した ipconfig の結果として出てきた、2つ目のネットワークカードと同じ 198. アドレスで始まっていますね。public / private サブネットは異なりますが。ほほぉ…~~ 違ってました、もう一方のほうでした
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/66e59a70-7129-7862-371c-9d836f8f5d2a.png)

VPC (EC2) 周りは AWS を理解するうえで最重要な気がするので、もう少し学んで、クリアにしていきたいと思いますー。

# いろいろインストールしてみる

デスクトップエクスペリエンス無しの (しかも機能追加オプションに無い気がする…) Windows Server 環境ですので、登録アプリが少ない状態です。幾つかインストールしてみます。

## CPU-Z

vCPU がどんな拡張命令をサポートしているか確認したくて [CPU-Z](https://forest.watch.impress.co.jp/library/software/cpuz/) を入れてみました。結果は以下のような感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/6084966e-3364-cd28-db10-d4ab0df5af2c.png)
てかこれ、拡張命令のサポートだけでなく、コア数以外は家のメインマシンよりスペック良いですね… さすがはパフォーマンスバンドル！

なおデフォルトのままインストールすると、C ドライブに配置されるので、バックアップの対象外となります。バンドル変更とかで、アプリ消えちゃいそうですね。

## afxw

X68000 の TF.x からの由緒正しき系譜(?)、2画面ファイラーの [afxw](http://akt.d.dooo.jp/akt_afxw.html) をインストールします。何故か c: ドライブが見えないので、d:\Users 配下に作成された自分用のフォルダ内に、解凍したファイルを置いて起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/ec1839de-fb11-ded4-5913-3e9950426fbc.png)
設定を変えてもエクスプローラーに出てこない謎の c: ドライブも、afxw からは普通にアクセス可能のようです。

## nodist + node

node を直接インストールしても良いのですが、今回はバージョン管理ツール [Nodist](https://github.com/nullivex/nodist/releases) の最新版 (v0.9.1) をインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/ef126029-86c0-21c1-ea81-abca7b20ef2f.png)
v11.13.0 の node コマンドが設定されたので、安定してそうな偶数バージョンの v12.16.3 に変更しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/a7e20a31-31d9-80d9-4160-f45876a0d080.png)
一応、バージョンを確認しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/9f24aaa3-a055-e970-e6e4-2b335817f3a1.png)

なおデフォルトのままインストールすると、nodist も node も C ドライブに配置され、バックアップの対象外となります。これもバンドル変更とかで、アプリ消えちゃいそうですね。

## Visual Studio Code

開発者に人気のテキストエディタ [Visual Studio Code](https://code.visualstudio.com/) もインストールします。オプションはお好みで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/f7df158c-81fe-410e-22f1-cd9fcb16db5f.png)
特に問題なくインストールできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/aa110c79-faab-3609-1b19-73fd45571c01.png)
拡張機能が豊富なので、テキストエディタと言うより、もはや総合開発環境な気がしますね。

## パズルゲームとか

手元にあった DRM Free のパズルゲームをインストール (ユーザーディレクトリ配下に解凍して実行) してみました。激しいアクションとかは厳しいかも？ですが、これぐらいなら普通に遊べますねー。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/117eee1f-09e7-54b7-5e8a-643a1a18a899.png)

## Hyper-V はさすがに駄目

仮想環境なので無理っぽいとは思ったのですが、一応は試してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/ff87bb0e-2411-2f62-1229-5b4b8d125a9b.png)
と、入りそうな風なのですが、実行すると…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/0864b944-c370-ac7b-6c14-6e7e4767a255.png)
やはり駄目でした。まあ、そりゃそーですよねw

# というわけで

Amazon WorkSpaces 上の Windows 仮想環境ですが、Office 365 がインストール出来た時点で、既に OA 環境としては必要十分な気もします。今回、自分が普段使うツールを幾つか導入してみましたが、特に大きな問題は無いようでした。

ただし Hyper-V が使えないので Docker が、WSL も機能リストに無くて、そしてストアが無いので Windows Terminal が無いのが個人的に寂しいかな。ただこれ、素直に Linux 仮想マシン使えばいいじゃん、コンテナは ECS/EKS 使えばいいじゃん、なんて気もしてきます。Windows に依存した、私自身の開発スタイルも観直さないとな、ということかも。

というわけで、まとまりのないメモになってしまいましたが、もしどなたかのお役に立つ情報が含まれていましたら嬉しいです。

【追記】[その3 Tips](https://qiita.com/yamachan360/items/222bf3978a60fcf3e6a7) も投稿してみました

それではまた！