AWS Transit Gateway のリソース
AWS Transit Gateway は、複数の VPC、オンプレミスネットワーク、さらには他の AWS リージョン間を接続するための中央ハブとして機能します。このブログでは、CloudFormation を使って Transit Gateway の構成を自動化するための主要リソースを詳しく解説します。
Transit Gateway 関連リソースの役割
1. AWS::EC2::TransitGatewayRouteTableAssociation
-
役割:
- Transit Gateway Attachment を Transit Gateway Route Table に関連付けます。
- アタッチメントが使用するルートテーブルを指定することで、ルートの適用範囲を制御します。
-
使用例:
Resources: MyTransitGatewayRouteTableAssociation: Type: AWS::EC2::TransitGatewayRouteTableAssociation Properties: TransitGatewayAttachmentId: !Ref MyTransitGatewayAttachment TransitGatewayRouteTableId: !Ref MyTransitGatewayRouteTable
-
補足:
- この設定がないと、アタッチメントはデフォルトのルートテーブルを使用します。
2. AWS::EC2::TransitGatewayRouteTablePropagation
-
役割:
- 特定の Transit Gateway Attachment から Transit Gateway Route Table へのルート情報の伝播を有効にします。
- 伝播されたルート情報は自動的にルートテーブルに追加されます。
-
使用例:
Resources: MyTransitGatewayRouteTablePropagation: Type: AWS::EC2::TransitGatewayRouteTablePropagation Properties: TransitGatewayAttachmentId: !Ref MyTransitGatewayAttachment TransitGatewayRouteTableId: !Ref MyTransitGatewayRouteTable
-
補足:
- 伝播が有効になると、アタッチメントが持つルート情報(例: VPC CIDR)が自動的に指定したルートテーブルに追加されます。
伝播の詳細説明
伝播 (Propagation) とは、Transit Gateway Attachment が持つルート情報を Transit Gateway Route Table に自動で共有する仕組みです。
伝播を使うメリット:
- 手動でルートを追加する手間が省ける。
- ネットワーク変更時も自動的にルートが更新される。
- 大規模なネットワーク環境での管理が簡単になる。
伝播がない場合の課題:
- 必要なルートをすべて手動で追加する必要があり、設定ミスのリスクが高まる。
3. AWS::EC2::TransitGatewayRoute
-
役割:
- Transit Gateway Route Table にカスタムルートを追加します。
- 手動で特定の宛先(CIDR ブロック)に対するルートを指定する場合に使用します。
-
使用例:
Resources: MyTransitGatewayRoute: Type: AWS::EC2::TransitGatewayRoute Properties: DestinationCidrBlock: 192.168.100.0/24 TransitGatewayAttachmentId: !Ref MyTransitGatewayAttachment TransitGatewayRouteTableId: !Ref MyTransitGatewayRouteTable
-
補足:
- このリソースを使うことで、特定の CIDR ブロックへの通信を任意のアタッチメント経由でルーティングできます。
Blackhole
プロパティをtrue
に設定すると、その CIDR ブロックへのトラフィックが破棄されます。
4. AWS::EC2::TransitGatewayPeeringAttachment
-
役割:
- 別リージョンまたは別アカウントの Transit Gateway と接続するための Peering 接続を作成します。
-
使用例:
Resources: MyTransitGatewayPeeringAttachment: Type: AWS::EC2::TransitGatewayPeeringAttachment Properties: PeerAccountId: 123456789012 PeerRegion: us-west-2 PeerTransitGatewayId: tgw-0abc123de456fghij TransitGatewayId: !Ref MyTransitGateway
-
補足:
- Peering 接続はグローバルネットワークを構築する際に非常に有用です。
- 接続後はルートテーブルに適切なルートを追加して通信を有効にします。
伝播と関連付けの違い
機能 | 伝播 (Propagation) | 関連付け (Association) |
---|---|---|
役割 | アタッチメントからルート情報をルートテーブルに自動的に反映。 | アタッチメントを特定のルートテーブルに関連付けて、そのルートテーブルのルールを適用。 |
必要なリソースタイプ | AWS::EC2::TransitGatewayRouteTablePropagation |
AWS::EC2::TransitGatewayRouteTableAssociation |
影響 | 伝播されたルートは、ルートテーブルに自動的に追加され、他のネットワークからもルートが見えるようになる。 | 関連付けられたアタッチメントは、特定のルートテーブルのルールに従って通信を行う。 |
CloudFormation を使った統合例
以下は、Transit Gateway とそのリソースを統合的に管理するための CloudFormation テンプレート例です。
Resources:
MyTransitGateway:
Type: AWS::EC2::TransitGateway
Properties:
Description: "My Transit Gateway"
DefaultRouteTableAssociation: enable
DefaultRouteTablePropagation: enable
MyTransitGatewayRouteTable:
Type: AWS::EC2::TransitGatewayRouteTable
Properties:
TransitGatewayId: !Ref MyTransitGateway
MyTransitGatewayAttachment:
Type: AWS::EC2::TransitGatewayVpcAttachment
Properties:
TransitGatewayId: !Ref MyTransitGateway
SubnetIds:
- subnet-12345678
- subnet-87654321
VpcId: vpc-1a2b3c4d
MyTransitGatewayRouteTableAssociation:
Type: AWS::EC2::TransitGatewayRouteTableAssociation
Properties:
TransitGatewayAttachmentId: !Ref MyTransitGatewayAttachment
TransitGatewayRouteTableId: !Ref MyTransitGatewayRouteTable
MyTransitGatewayRouteTablePropagation:
Type: AWS::EC2::TransitGatewayRouteTablePropagation
Properties:
TransitGatewayAttachmentId: !Ref MyTransitGatewayAttachment
TransitGatewayRouteTableId: !Ref MyTransitGatewayRouteTable
MyTransitGatewayRoute:
Type: AWS::EC2::TransitGatewayRoute
Properties:
DestinationCidrBlock: 10.0.0.0/16
TransitGatewayAttachmentId: !Ref MyTransitGatewayAttachment
TransitGatewayRouteTableId: !Ref MyTransitGatewayRouteTable
AWS Transit Gateway を活用することで、スケーラブルかつ効率的なネットワークアーキテクチャを構築できます。特に、CloudFormation を用いた自動化は運用の効率化に大きく貢献します。