AWS workspacesを使用して、開発担当者からの情報漏洩を防止したガッチガチの開発環境を作る（2）

#はじめに
今回は、VPCの作成と関連するルートテーブル等の設定について記載します。
以後の章で設定を変更する箇所があるはずですので、ここでは最初の段取りが中心になります。
調べながら設定を行った際の手順をベースにまとめていますので、ひょっとしたらこの箇所いらんやんってところがあるかもしれません。

基本はAmazonの解説を基準に進めていますので以下が参考リンクとなります。
[Amazon WorkSpaces での VPC の設定]
https://docs.aws.amazon.com/ja_jp/workspaces/latest/adminguide/amazon-workspaces-vpc.html

#(1)NATゲートウェイ用 Elastic IPの取得
VPCと外部との通信を行うNATゲートウェイに使用するElastic IPを予め取得します。
実は、最終的にはSquid(プロキシ)を外部とのアクセスゲートウェイとして設置して許可対象のみアクセス可能となるよう管理を行い、NATゲートウェイは使わない状態になるので実は不要な工程かもしれません。ただ、Amazonの解説に沿う流れでやった方がわかりやすいかもしれませんのでこのまま進めます。

Elastic IPの取得方法自体は説明不要かと思いますので詳細割愛します。
[EC2ダッシュボード→ネットワーク＆セキュリティ→ElasticIP→新しいアドレスの割り当て]
![eip.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/aa9352f3-df45-f7eb-ec72-1ef458eeeb74.jpeg)
#(2)VPCの作成
さて、VPCを作成します。
[サービス→ネットワーキングとコンテンツ配信→VPC]
を選択します。
VPCダッシュボードに遷移したら「VPCウイザードの起動」ボタンを選択。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/64b8246a-00f0-8f0a-aeca-c5c2fff582b3.jpeg)
次に「パブリックとプライベート サブネットを持つ VPC」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/0d8f2838-425a-9a88-2446-7f13f974a4b6.png)
必要な内容を入力します。
今回は以下の内容で指定します。
CIDRブロックはVPCで必要とするIPアドレスの数を見込んで設定ください。
今回は特にシビアに設定を行う必要はないので、サブネット毎に251個も使用できれば無問題として若干適当な指定になっています。
NATゲートウェイの詳細指定では、「Elastic IP 割り当てID」に先ほど取得したElastic IPのアロケーションIDを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/07a8cfbd-9744-b081-3351-c301e12adafe.png)
「VPCの作成」を選択し、次に進めます。
作成の処理が開始します。なんか表示崩れてますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/1f23c065-d446-44cc-0f25-f8a5c9cd0333.png)
VPCが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/51298b3b-3b0c-48da-9288-97795c59b486.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/49913888-18c0-5508-df10-f2b4899941a6.png)
#(3)プライベートサブネットの追加とルートテーブルの確認
この時点で作成したVPCにはパブリックサブネットとプライベートサブネットがそれぞれ１つ存在しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/2ae4df43-ab8d-3506-a7a8-81040cd3e0f7.png)
次にAmazonの解説通りにプライベートサブネットを一つ追加します。
[VPC→サブネット→サブネットの作成]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/c89dacd2-1c38-1d91-5fe2-cc2f50b29ee4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/7c1cae9e-bd42-396a-cbbf-a6009ca07d0d.png)
次に、作成した各サブネットのルートテーブル設定を確認します。
まずはパブリックサブネットのみを選択状態にし、下部のタブにて「ルートテーブル」を選択します。
ローカル(10.0.0.0/16)と外部(0.0.0.0/0)の設定が既にされています。
外部向けはインターネットゲートウェイ(igw-xxxxxxx)が割り当てられていますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/8a751a01-3ff6-d6cd-1f8c-aefb6bde69c8.png)
解説に従いますと、ここでルートテーブルに名前を付けておきます。
ルートテーブルのID(rtb-0xxxxxxxxxx)がリンクになっていますので、クリックしてルートテーブル画面に遷移します。
Nameが空白になっているので名前を付けます。パブリック用かプライベート用かを判別できるような名前がいいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/bd480adc-7306-7d8d-24fc-326c1a737d45.png)
サブネット画面に戻り、一つ目のプライベートサブネットを選択して確認します。
ローカル(10.0.0.0/16)と外部(0.0.0.0/0)の設定が既にされています。
外部向けはパブリックと異なり、VPC作成時にElastic IPを割り当てたNATゲートウェイに指定されています。
パブリックと同じ手順でルートテーブルに名前を付けておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/8911a801-ae77-46fd-c838-eb5d812e6d4e.png)
次に、追加した２つ目のプライベートサブネットを選択して確認します。
一つ目のプライベートサブネットと異なるルートテーブルが指定されている場合は、同じルートテーブルに変更します。
「ルートテーブルの関連付けの編集」をクリックし、一つ目のプライベートサブネットと同じルートテーブルを指定して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/882b466d-df39-4aa7-3ea7-8dc8e6ee74a4.png)
#(4)ここまでの進捗
ここまでの設定状態を図示しますと以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/c6823e84-1eb9-6520-b01d-d6cf45b9ffa7.png)
とりあえずVPCとサブネットを作成して土台ができたところですね。

[「AWS workspacesを使用して、開発担当者からの情報漏洩を防止したガッチガチの開発環境を作る（序章）」](https://qiita.com/kyo_naga/items/fbf1cdc372740e1f305b)にある完成状態のシステム構成図と比較してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405875/f9adf34c-c7ad-bad7-d25f-fd65ac0667bc.png)
はい、全然まだまだですね・・・・・
今回はここまでにしたいと思います。

次回は、作成したVPC内でディレクトリ管理を行うworkspacesの構築について記載したいと思います。