AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS CloudFormation Template: VPC with 2 Public and 2 Private Subnets.'
Resources:
MyVPC:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: MyVPC
PublicSubnetOne:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.0.1.0/24
MapPublicIpOnLaunch: true
AvailabilityZone: !Select [0, !GetAZs '']
Tags:
- Key: Name
Value: PublicSubnetOne
PublicSubnetTwo:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.0.2.0/24
MapPublicIpOnLaunch: true
AvailabilityZone: !Select [1, !GetAZs '']
Tags:
- Key: Name
Value: PublicSubnetTwo
PrivateSubnetOne:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.0.3.0/24
AvailabilityZone: !Select [0, !GetAZs '']
Tags:
- Key: Name
Value: PrivateSubnetOne
PrivateSubnetTwo:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.0.4.0/24
AvailabilityZone: !Select [1, !GetAZs '']
Tags:
- Key: Name
Value: PrivateSubnetTwo
Outputs:
VPCId:
Description: VPC ID
Value: !Ref MyVPC
PublicSubnetOneId:
Description: ID of the first public subnet
Value: !Ref PublicSubnetOne
PublicSubnetTwoId:
Description: ID of the second public subnet
Value: !Ref PublicSubnetTwo
PrivateSubnetOneId:
Description: ID of the first private subnet
Value: !Ref PrivateSubnetOne
PrivateSubnetTwoId:
Description: ID of the second private subnet
Value: !Ref PrivateSubnetTwo