Transit Gateway(以下TGW)をVPCに接続する際には、TGWアタッチメントENIの専用サブネットを作成することがベストプラクティスとして推奨されている。来月あたりには詳細を忘れてそうなので、備忘として情報を整理。
TGWアタッチメントについて
Transit Gateway Deep Dive アーキテクチャガイドによると、TGWにネットワークをくっつけることを「アタッチメント」という。
さらに、Black Belt によると、アタッチメントでは、各AZの1つのサブネットにだけENIを作成している。
他にサブネットがあっても、TGWへのルートテーブルが設定されていれば、アタッチメントで指定したサブネットに配置されたENIを経由してTGWにアクセスできる。
TGWアタッチメント専用サブネットとは何か?
アタッチメントがENIを配置するためだけに作成されたサブネットのことを指す。
「TGWアタッチメント専用サブネット」という正式な用語があるわけではない。
公式ドキュメントのTransit Gateway 設計のベストプラクティスによると、この専用サブネットを作成することがベストプラクティスとして推奨されている。
各 Transit Gateway VPC アタッチメントに個別のサブネットを使用します。各サブネットに対して、小さな CIDR (/28 など) を使用して、EC2 リソースのアドレスが増えるようにします。別のサブネットを使用する場合は、次の項目を設定できます:
引用の通り、小さな CIDR (/28 など)を設定することが推奨されている。ENI以外配置しないのなら、多数のIPアドレスは必要ないのでVPC内のIPを節約する。
なぜTGWアタッチメント専用サブネットを作成するのか?
専用サブネットの必要性については、Black BeltのQAで解説されている。
Q. VPC をアタッチするときに指定するサブネットをアタッチ専用のサブネットとする必要性について、もう少し具体例を挙げて説明していただきたいです。そのサブネットの内部のEC2 インスタンスのルーティングに影響あるとのことでしたが、どのような影響があるのか?などを教えていただきたいです。
A. Transit Gateway (TGW) のアタッチメントがついているサブネットと同一のサブネットに EC2 インスタンスが存在する場合に、その EC2 インスタンスはTGWと同じルーティングテーブルを参照します。
例えば インライン監査用の VPC の TGW の ENI がある Subnet 上に EC2 インスタンスを設置してしまうと、その EC2 インスタンスは必ずインライン監査のミドルボックス ENI に吸い込まれてしまい、EC2 インスタンスの意図するルーティングテーブルを作れなくなってしまいます。こういったことを防ぐために、TGW 専用のサブネットを作ることをお薦めしています。
こちらおよびこちらの資料を併せてご参照ください。
アタッチメントENIとEC2を同じサブネットに配置すると、同じルーティングテーブルを参照してしまうため、EC2のルーティングの柔軟性が下がってしまう、と解釈している。
下記の記事はさらにネットワーク図を用いながら丁寧に説明されていたのでわかりやすい。
参考資料