AWS Transit Gateway(TGW)をCloudFormationで構築する方法

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 を用いた自動化は運用の効率化に大きく貢献します。

Last modified: 2024-12-17

Author