【AWS】Direct Connectと接続するためのリソースをCloudFormationで作成する
本記事では、Direct Connectと接続するためのリソースをCloudFormationで作成する方法について解説する。

本記事では、Direct Connectと接続するためのリソースとして、DXGW(Direct Connect ゲートウェイ)とVGW(仮想プライベートゲートウェイ)をCloudFormationで作成する方法について解説する。おまけとしてNLBの作成についても説明する。
前提
以下のような構成図を想定する。
オンプレシステム → DX → DXGW → VGW → NLB …
VGWは各VPCにつき一つ必要だが、DXGWはVGWの数だけ必要というわけではない。
今回は固定IPとしてNLBが必要だったため、NLBまでを作成対象とする。NLBの後段にはALB、EC2があるような構成とする。
説明
はじめに、DXGWはCloudFormationでは現状作成できないため、手動で作成する。その他のリソースはCloudFormationで作成する。
NLB
NLBターゲットグループについて
- NLBターゲットグループ → NLB → NLBリスナーの順番で必要なリソースを作成する。
- 後段のALBをターゲットとする。ALBをターゲットとして登録する場合、プロトコルはTCPのみ利用可能とする。
NLB
- インターネットに公開するわけではないので、スキーマはInternalとする。
- 固定IPを付与するために、PrivateIPv4AddressにIPを指定する。
- NLBの削除保護を有効化するために、deletion_protection.enabledタグをTrueにする。
CloudFormationテンプレート
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
System:
Type: String
Default: System-name
Env:
Type: String
Default: Env-Name
Region:
Type: String
Default: Region-Name
VPCID:
Type: String
Default: vpc-xxxxxxxxxx
SubnetId:
Type: String
Default: subnet-xxxxxxxxx
ALB:
Type: String
Default: ALB arn
SecurityGroup:
Type: String
Default: sg-xxxxxxxxx
PrivateIPv4Address:
Type: String
Default: IP
Resources:
NLBTargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
VpcId: !Sub ${VpcId}
Name: !Sub "${System}-${Env}-${Region}-nlb-target-group"
Protocol: TCP
Port: 443
HealthCheckPath: /
HealthCheckProtocol: HTTPS
Targets:
- Id: !Sub ${ALB}
Port: 443
TargetType: alb
NLB:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: !Sub "${System}-${Env}-${Region}-nlb"
Type: network
Scheme: internal
SecurityGroups:
- !Sub ${SecurityGroup}
SubnetMappings:
- SubnetId: !Sub ${SubnetId}
PrivateIPv4Address: !Sub ${PrivateIPv4Address}
LoadBalancerAttributes:
- Key: "deletion_protection.enabled"
Value: true
NLBListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
DefaultActions:
- TargetGroupArn: !Ref NLBTargetGroup
Type: forward
LoadBalancerArn: !Ref NLB
Port: 443
Protocol: TCP
VGW
VGW
- ASNは64512~65534の中から選択する必要がある。DXGWのASNを64512にするため、64513を選択する。
VPC接続
- VGW作成後にVPCと接続を行うため、DependsOnを挿入する。
ルート伝播
- ルート伝播については、AWSのルートテーブル伝播についてでとてもわかりやすくまとめられている。簡単に説明すると以下の通り。
- ルート伝播をオンにすると、ルートテーブルにおいて動的にルートが追加されるようになる。オンプレシステムがDXに接続された際に、動的にルートが接続されるように設定する。
CloudFormationテンプレート
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
System:
Type: String
Default: System-Name
Env:
Type: String
Default: Env-Name
Region:
Type: String
Default: Region-Name
AmazonSideAsn:
Type: Number
Description: AmazonSideASN
Default: 64513
VpcId:
Type: String
Description: vpc-xxxxxxxx
RouteTableID:
Type: String
Description: RouteTableID
Resources:
VGW:
Type: AWS::EC2::VPNGateway
Properties:
AmazonSideAsn: !Ref 'AmazonSideAsn'
Type: ipsec.1
Tags:
- Key: Name
Value: !Sub "${System}-${Env}-${Region}-vgw"
AttachVPNGateway:
Type: AWS::EC2::VPCGatewayAttachment
DependsOn: VGW
Properties:
VpcId: !Ref 'VpcId'
VpnGatewayId: !Ref 'VGW'
EnableVGWPropagation:
Type: AWS::EC2::VPNGatewayRoutePropagation
DependsOn: AttachVPNGateway
Properties:
RouteTableIds:
- !Ref 'RouteTableID'
VpnGatewayId: !Ref 'VGW'
DXGW
DXGW
- Direct Connectの左ペインから、『Direct Connect ゲートウェイ』 → 『Direct Connect ゲートウェイの作成』をクリックする。
- 名前とASNを設定する(ASNは64512~65534の中から選択する)。
VGWとの関連付け
- Direct Connectの左ペインから、『仮想プライベートゲートウェイ』 → 『Direct Connect ゲートウェイの関連付け』をクリックする。
- 上で作成したDXGWを選択する。