基本的な2AZにまたがったネットワーク構成になります。
AWSTemplateFormatVersion: 2010-09-09
Parameters:
VPCCidrBlock:
Description: The primary IPv4 CIDR block for the VPC.
Type: String
MinLength: '9'
MaxLength: '18'
Default: 10.0.0.0/16
AllowedPattern: '(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})'
SubnetCidrBits:
Description: Subnet CidrBits, alowed bitween 8 and 30.
Type: String
MinLength: '1'
MaxLength: '2'
Default: '24'
AllowedPattern: '(\d{1,2})'
PJPrefix:
Type: String
Default: base
Mappings:
CidrBits:
'30':
bit: 2
'29':
bit: 3
'28':
bit: 4
'27':
bit: 5
'26':
bit: 6
'25':
bit: 7
'24':
bit: 8
'23':
bit: 9
'22':
bit: 10
'21':
bit: 11
'20':
bit: 12
'19':
bit: 13
'18':
bit: 14
'17':
bit: 15
'16':
bit: 16
'15':
bit: 17
'14':
bit: 18
'13':
bit: 19
'12':
bit: 20
'11':
bit: 21
'10':
bit: 22
'9':
bit: 23
'8':
bit: 24
Resources:
VPC:
Type: 'AWS::EC2::VPC'
Properties:
EnableDnsSupport: 'true'
EnableDnsHostnames: 'true'
CidrBlock: !Ref VPCCidrBlock
Tags:
- Key: Name
Value: !Sub '${PJPrefix}-VPC'
PublicSubnet1:
Type: 'AWS::EC2::Subnet'
Properties:
AvailabilityZone: !Select
- 0
- 'Fn::GetAZs': !Ref 'AWS::Region'
CidrBlock:
Fn::Select:
- 0
- Fn::Cidr:
- Fn::GetAtt:
- VPC
- CidrBlock
- 4
- Fn::FindInMap:
- CidrBits
- !Ref SubnetCidrBits
- bit
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub '${PJPrefix}-PublicSubnet1'
VpcId: !Ref VPC
PublicSubnet2:
Type: 'AWS::EC2::Subnet'
Properties:
CidrBlock:
Fn::Select:
- 1
- Fn::Cidr:
- Fn::GetAtt:
- VPC
- CidrBlock
- 4
- Fn::FindInMap:
- CidrBits
- !Ref SubnetCidrBits
- bit
AvailabilityZone: !Select
- 1
- 'Fn::GetAZs': !Ref 'AWS::Region'
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub '${PJPrefix}-PublicSubnet2'
VpcId: !Ref VPC
PrivateSubnet1:
Type: 'AWS::EC2::Subnet'
Properties:
CidrBlock:
Fn::Select:
- 2
- Fn::Cidr:
- Fn::GetAtt:
- VPC
- CidrBlock
- 4
- Fn::FindInMap:
- CidrBits
- !Ref SubnetCidrBits
- bit
AvailabilityZone: !Select
- 0
- 'Fn::GetAZs': !Ref 'AWS::Region'
Tags:
- Key: Name
Value: !Sub '${PJPrefix}-PrivateSubnet1'
VpcId: !Ref VPC
PrivateSubnet2:
Type: 'AWS::EC2::Subnet'
Properties:
CidrBlock:
Fn::Select:
- 3
- Fn::Cidr:
- Fn::GetAtt:
- VPC
- CidrBlock
- 4
- Fn::FindInMap:
- CidrBits
- !Ref SubnetCidrBits
- bit
AvailabilityZone: !Select
- 1
- 'Fn::GetAZs': !Ref 'AWS::Region'
Tags:
- Key: Name
Value: !Sub '${PJPrefix}-PrivateSubnet2'
VpcId: !Ref VPC
InternetGateway:
Type: 'AWS::EC2::InternetGateway'
DependsOn: VPC
Properties:
Tags:
- Key: Name
Value: InternetGateway
VPCGatewayAttachment:
Type: 'AWS::EC2::VPCGatewayAttachment'
DependsOn:
- VPC
- InternetGateway
Properties:
VpcId: !Ref VPC
InternetGatewayId: !Ref InternetGateway
PublicRouteTable:
Type: 'AWS::EC2::RouteTable'
Properties:
Tags:
- Key: Name
Value: PublicRouteTable
VpcId: !Ref VPC
PublicRoute:
Type: 'AWS::EC2::Route'
DependsOn: VPCGatewayAttachment
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
PublicSubnetRouteTableAssociation1:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
DependsOn:
- PublicSubnet1
- PublicRouteTable
Properties:
SubnetId: !Ref PublicSubnet1
RouteTableId: !Ref PublicRouteTable
PublicSubnetRouteTableAssociation2:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
DependsOn:
- PublicSubnet2
- PublicRouteTable
Properties:
SubnetId: !Ref PublicSubnet2
RouteTableId: !Ref PublicRouteTable
ElasticIP1:
Type: 'AWS::EC2::EIP'
Properties:
Domain: vpc
Tags:
- Key: Name
Value: ElasticIP1
ElasticIP2:
Type: 'AWS::EC2::EIP'
Properties:
Domain: vpc
Tags:
- Key: Name
Value: ElasticIP2
NATGateway1:
Type: 'AWS::EC2::NatGateway'
Properties:
AllocationId: !GetAtt
- ElasticIP1
- AllocationId
SubnetId: !Ref PublicSubnet1
Tags:
- Key: Name
Value: NATGateway1
NATGateway2:
Type: 'AWS::EC2::NatGateway'
Properties:
AllocationId: !GetAtt
- ElasticIP2
- AllocationId
SubnetId: !Ref PublicSubnet2
Tags:
- Key: Name
Value: NATGateway2
PrivateRoutetable1:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: PrivateRouteTable1
PrivateRoute1:
Type: 'AWS::EC2::Route'
DependsOn:
- NATGateway1
Properties:
RouteTableId: !Ref PrivateRoutetable1
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NATGateway1
PrivateSubnetRouteTableAssociation1:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref PrivateRoutetable1
SubnetId: !Ref PrivateSubnet1
PrivateRoutetable2:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: PrivateRouteTable2
PrivateRoute2:
Type: 'AWS::EC2::Route'
Properties:
RouteTableId: !Ref PrivateRoutetable2
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NATGateway2
PrivateSubnetRouteTableAssociation2:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
SubnetId: !Ref PrivateSubnet2
RouteTableId: !Ref PrivateRoutetable2
PrivateRoutetable3:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: PrivateRouteTable3