Transit Gatewayを試してみました。
どんなもの?
VPCやオンプレ間を単一のゲートウェイで相互に接続できるようにするサービスです。
構成図
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を作成します。

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

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

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

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



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は未対応です。そのうち対応するかなー。