Transit Gatewayを試してみた

Transit Gatewayを試してみました。

# どんなもの？
VPCやオンプレ間を単一のゲートウェイで相互に接続できるようにするサービスです。


# 構成図

![aws-transit-gateway.png](https://qiita-image-store.s3.amazonaws.com/0/192584/d395b850-be48-7257-d7d0-d26ddc714b88.png)


|VPC|public/private|Subnet CIDR|EC2|EC2 IP|
|---|---|---|---|---|
|VPC1|public|10.10.0.0/24|EC2①|10.10.0.210|
|VPC1|public|10.10.1.0/24| | |
|VPC1|private|10.10.10.0/24| | |
|VPC1|private|10.10.11.0/24|EC2②|10.10.11.200|
|VPC2|public|10.20.0.0/24| | |
|VPC2|public|10.20.1.0/24|EC2③|10.20.1.4|
|VPC3|public|10.30.0.0/24|EC2④|10.30.0.152
|VPC3|public|10.30.1.0/24| | |
# 1. VPC・Subnet・EC2を作成する

構成図にあるVPC・Subnet・EC2を作成します。
全て同じリージョンに作成する必要があります。

# 2. Transit Gatewayを作成する

VPCのコンソールからTransit Gatewayを作成します。

<img width="922" alt="1_create_tg.png" src="https://qiita-image-store.s3.amazonaws.com/0/192584/af5c8fe8-1b83-4eb1-4786-80d6232a464f.png">


# 3. Transit GatewayをVPCにアタッチする

続けて作成したTransit GatewayをVPC1とVPC2にアタッチします。
VPCにアタッチする際にSubnetを指定する必要がありますが
指定していないSubnetに作成したEC2からも疎通が通ることを確認するために
ここでは全てPublic Subnetを指定しておきます。

<img width="896" alt="2_attach.png" src="https://qiita-image-store.s3.amazonaws.com/0/192584/19e3e38e-cfd3-a52d-ccca-3f9e60153831.png">

VPC3は別AWSアカウントなので、Resource Access ManagerでTransit Gatewayを共有してからVPC3にアタッチします。

<img width="1556" alt="3_share.png" src="https://qiita-image-store.s3.amazonaws.com/0/192584/b9b7fe79-63b4-f88c-cc77-05192dfdafd9.png">

# 4. ルートを追加する

Transit Gateway Route Tableには、アタッチしたVPCへのルートが既に設定されています。

<img width="1438" alt="4_tg_rt.png" src="https://qiita-image-store.s3.amazonaws.com/0/192584/3dd53640-8562-2c08-0f17-6263ba63d6a9.png">

個別のVPCに対しては、自分でルートを設定する必要があります。

##### VPC1
<img width="1431" alt="4_vpc1.png" src="https://qiita-image-store.s3.amazonaws.com/0/192584/e5d03431-b61a-5802-b7c4-075c7560f37a.png">
##### VPC2
<img width="1429" alt="4_vpc2.png" src="https://qiita-image-store.s3.amazonaws.com/0/192584/25ad8560-ff5e-bac7-2673-86a855d5b74f.png">
##### VPC3
<img width="1428" alt="4_vpc3.png" src="https://qiita-image-store.s3.amazonaws.com/0/192584/3c359263-f836-5736-e658-e6fb1bbf5a5a.png">

# 5. 疎通をテストする
各EC2のセキュリティーグループを編集し各VPCのCIDRからのsshを許可した後、EC2間でsshの疎通を確認します。
EC2②は、Transit GatewayをVPC1にアタッチする際に指定したサブネット(Public Subnet)でないサブネット(Private Subnet)にありますが、ちゃんと疎通が通ることが確認できます。

##### EC2① → EC2③
```
[ec2-user@ip-10-10-0-210 ~]$ ssh -i *****.pem ec2-user@10.20.1.4

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-20-1-4 ~]$
```
##### EC2① → EC2④
```
[ec2-user@ip-10-10-0-210 ~]$ ssh -i *****.pem ec2-user@10.30.0.152
       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-30-0-152 ~]$
```
##### EC2② → EC2③
```
[ec2-user@ip-10-10-11-200 ~]$ ssh -i *****.pem ec2-user@10.20.1.4

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-20-1-4 ~]$
```
##### EC2② → EC2④
```
[ec2-user@ip-10-10-11-200 ~]$ ssh -i *****.pem ec2-user@10.30.0.152

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-30-0-152 ~]$
```

# 雑感
VPC peeringはリージョン間の接続に対応していますが、Transit Gatewayは未対応です。そのうち対応するかなー。