Last active
February 11, 2019 17:41
-
-
Save w-/b747e9d70e959e22bf18a28fb3747241 to your computer and use it in GitHub Desktop.
Cloudformation for a VPC with 2 public subnets, 2 private subnets and 2 private db subnets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AWSTemplateFormatVersion: 2010-09-09 | |
Description: W Workshop VPC example. | |
Resources: | |
VPC: | |
Type: AWS::EC2::VPC | |
Properties: | |
CidrBlock: 10.0.0.0/16 | |
EnableDnsHostnames: true | |
Tags: | |
- Key: Name | |
Value: W Workshop VPC | |
InternetGateway: | |
Type: AWS::EC2::InternetGateway | |
Properties: | |
Tags: | |
- Key: Name | |
Value: W Workshop Internet Gateway | |
AttachGateway: | |
Type: AWS::EC2::VPCGatewayAttachment | |
Properties: | |
VpcId: !Ref VPC | |
InternetGatewayId: !Ref InternetGateway | |
PublicSubnet1: | |
Type: AWS::EC2::Subnet | |
Properties: | |
VpcId: !Ref VPC | |
CidrBlock: 10.0.1.0/24 | |
AvailabilityZone: !Select | |
- '0' | |
- !GetAZs '' | |
Tags: | |
- Key: Name | |
Value: Public Subnet 1 | |
PublicSubnet2: | |
Type: AWS::EC2::Subnet | |
Properties: | |
VpcId: !Ref VPC | |
CidrBlock: 10.0.2.0/24 | |
AvailabilityZone: !Select | |
- '1' | |
- !GetAZs '' | |
Tags: | |
- Key: Name | |
Value: Public Subnet 2 | |
PrivateSubnet1: | |
Type: AWS::EC2::Subnet | |
Properties: | |
VpcId: !Ref VPC | |
CidrBlock: 10.0.3.0/24 | |
AvailabilityZone: !Select | |
- '0' | |
- !GetAZs '' | |
Tags: | |
- Key: Name | |
Value: Private Subnet 1 | |
PrivateSubnet2: | |
Type: AWS::EC2::Subnet | |
Properties: | |
VpcId: !Ref VPC | |
CidrBlock: 10.0.4.0/24 | |
AvailabilityZone: !Select | |
- '1' | |
- !GetAZs '' | |
Tags: | |
- Key: Name | |
Value: Private Subnet 2 | |
DBSubnet1: | |
Type: AWS::EC2::Subnet | |
Properties: | |
VpcId: !Ref VPC | |
CidrBlock: 10.0.5.0/24 | |
AvailabilityZone: !Select | |
- '0' | |
- !GetAZs '' | |
Tags: | |
- Key: Name | |
Value: DB Subnet 1 | |
DBSubnet2: | |
Type: AWS::EC2::Subnet | |
Properties: | |
VpcId: !Ref VPC | |
CidrBlock: 10.0.6.0/24 | |
AvailabilityZone: !Select | |
- '1' | |
- !GetAZs '' | |
Tags: | |
- Key: Name | |
Value: DB Subnet 2 | |
PublicRouteTable: | |
Type: AWS::EC2::RouteTable | |
Properties: | |
VpcId: !Ref VPC | |
Tags: | |
- Key: Name | |
Value: Public Route Table | |
PublicRoute: | |
Type: AWS::EC2::Route | |
Properties: | |
RouteTableId: !Ref PublicRouteTable | |
DestinationCidrBlock: 0.0.0.0/0 | |
GatewayId: !Ref InternetGateway | |
PublicSubnetRouteTableAssociation1: | |
Type: AWS::EC2::SubnetRouteTableAssociation | |
Properties: | |
SubnetId: !Ref PublicSubnet1 | |
RouteTableId: !Ref PublicRouteTable | |
PublicSubnetRouteTableAssociation2: | |
Type: AWS::EC2::SubnetRouteTableAssociation | |
Properties: | |
SubnetId: !Ref PublicSubnet2 | |
RouteTableId: !Ref PublicRouteTable | |
PrivateRouteTable: | |
Type: AWS::EC2::RouteTable | |
Properties: | |
VpcId: !Ref VPC | |
Tags: | |
- Key: Name | |
Value: Private Route Table | |
PrivateSubnetRouteTableAssociation1: | |
Type: AWS::EC2::SubnetRouteTableAssociation | |
Properties: | |
SubnetId: !Ref PrivateSubnet1 | |
RouteTableId: !Ref PrivateRouteTable | |
PrivateSubnetRouteTableAssociation2: | |
Type: AWS::EC2::SubnetRouteTableAssociation | |
Properties: | |
SubnetId: !Ref PrivateSubnet2 | |
RouteTableId: !Ref PrivateRouteTable | |
DBSubnetRouteTableAssociation1: | |
Type: AWS::EC2::SubnetRouteTableAssociation | |
Properties: | |
SubnetId: !Ref DBSubnet1 | |
RouteTableId: !Ref PrivateRouteTable | |
DBSubnetRouteTableAssociation2: | |
Type: AWS::EC2::SubnetRouteTableAssociation | |
Properties: | |
SubnetId: !Ref DBSubnet2 | |
RouteTableId: !Ref PrivateRouteTable | |
NATInstanceSecurityGroup: | |
Type: AWS::EC2::SecurityGroup | |
Properties: | |
GroupName: w-vpc-nat-security-group | |
GroupDescription: W Workshop NAT Security Group | |
VpcId: !Ref VPC | |
SecurityGroupIngress: | |
- IpProtocol: tcp | |
FromPort: 80 | |
ToPort: 80 | |
CidrIp: 10.0.3.0/24 | |
- IpProtocol: tcp | |
FromPort: 443 | |
ToPort: 443 | |
CidrIp: 10.0.3.0/24 | |
- IpProtocol: tcp | |
FromPort: 80 | |
ToPort: 80 | |
CidrIp: 10.0.4.0/24 | |
- IpProtocol: tcp | |
FromPort: 443 | |
ToPort: 443 | |
CidrIp: 10.0.4.0/24 | |
- IpProtocol: tcp | |
FromPort: 22 | |
ToPort: 22 | |
CidrIp: 0.0.0.0/0 | |
Description: SSH For ALL | |
SecurityGroupEgress: | |
- IpProtocol: tcp | |
FromPort: 80 | |
ToPort: 80 | |
CidrIp: 0.0.0.0/0 | |
- IpProtocol: tcp | |
FromPort: 443 | |
ToPort: 443 | |
CidrIp: 0.0.0.0/0 | |
- IpProtocol: tcp | |
FromPort: 22 | |
ToPort: 22 | |
CidrIp: 10.0.3.0/24 | |
Description: SSH For Private Subnet 1 | |
- IpProtocol: tcp | |
FromPort: 22 | |
ToPort: 22 | |
CidrIp: 10.0.4.0/24 | |
Description: SSH For Private Subnet 2 | |
Outputs: | |
VPC: | |
Description: VPC | |
Value: !Ref VPC | |
AZ1: | |
Description: Availability Zone 1 | |
Value: !GetAtt | |
- PublicSubnet1 | |
- AvailabilityZone | |
AZ2: | |
Description: Availability Zone 2 | |
Value: !GetAtt | |
- PublicSubnet2 | |
- AvailabilityZone |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment