CloudFormation を利用した環境構築について連載3回目。
本章「ルートテーブル」編では以下の環境について構築を行います。
・ルーテーブルを作成
・パブリック用とプライベート用のルートを作成
・パブリック用ルートに作成したインターネットゲートウェイを追加
・各ルートに作成したサブネットを設定
イメージ図
それでは実際にコードを確認しながら説明していきます。
AWSTemplateFormatVersion: 2010-09-09
Description: Creation of Route Table and Set Subnet Range.
Parameters:
VPC:
Type: String
Default: vpc
Description: Set stack output value
INTERNETGATEWAY:
Type: String
Default: igw
Description: Set stack output value
TAGpublic:
Type: String
Default: public
Description: Please set a name
TAGprivate:
Type: String
Default: private
Description: Please set a name
SUBNETCIDRpublicAZa:
Type: String
Default: subnet-public-apne1a
Description: Set stack output value
SUBNETCIDRpublicAZc:
Type: String
Default: subnet-public-apne1c
Description: Set stack output value
SUBNETCIDRprivateAZa:
Type: String
Default: subnet-private-apne1a
Description: Set stack output value
SUBNETCIDRprivateAZc:
Type: String
Default: subnet-private-apne1c
Description: Set stack output value
Resources:
ROUTETABLEpublic:
DeletionPolicy: Delete
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !ImportValue
'Fn::Sub': '${VPC}'
Tags:
- Key: Name
Value:
Fn::Sub: rtb-${TAGpublic}
ROUTETABLEprivate:
DeletionPolicy: Retain
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !ImportValue
'Fn::Sub': '${VPC}'
Tags:
- Key: Name
Value:
Fn::Sub: rtb-${TAGprivate}
ROUTE:
DeletionPolicy: Delete
Type: 'AWS::EC2::Route'
Properties:
RouteTableId: !Ref ROUTETABLEpublic
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !ImportValue
'Fn::Sub': '${INTERNETGATEWAY}'
ASSOCIATIONpublicAZa:
DeletionPolicy: Delete
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref ROUTETABLEpublic
SubnetId: !ImportValue
'Fn::Sub': '${SUBNETCIDRpublicAZa}'
ASSOCIATIONpublicAZc:
DeletionPolicy: Delete
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref ROUTETABLEpublic
SubnetId: !ImportValue
'Fn::Sub': '${SUBNETCIDRpublicAZc}'
ASSOCIATIONprivateAZa:
DeletionPolicy: Delete
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref ROUTETABLEprivate
SubnetId: !ImportValue
'Fn::Sub': '${SUBNETCIDRprivateAZa}'
ASSOCIATIONprivateAZc:
DeletionPolicy: Delete
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref ROUTETABLEprivate
SubnetId: !ImportValue
'Fn::Sub': '${SUBNETCIDRprivateAZc}'
Type: 'AWS::EC2::RouteTable'
ルートテーブルを作成
Type: 'AWS::EC2::RouteTable'
ルートテーブルにルートを作成
Type: 'AWS::EC2::SubnetRouteTableAssociation'
ルートにサブネットを設定
VpcId: !ImportValue
'Fn::Sub': '${VPC}'
別スタックで作成したVPCを参照
SubnetId: !ImportValue
'Fn::Sub': '${SUBNETCIDRprivateAZa}'
別スタックで作成したサブネットを参照
※例:プライベートサブネットのゾーンAを参照
AWS CloudFormationテンプレートリファレンス
AWS::EC2::RouteTable