AWSTemplateFormatVersion: '2010-09-09' Description: Template for a Default Network Stack Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Network Parameters: - vpccidr - subpublicAcidr - subpublicBcidr ParameterLabels: vpccidr: default: VPC cidr range for the central Internet access VPC subpublicAcidr: default: Subnet PublicA cidr range subpublicBcidr: default: Subnet PublicB cidr range ############################################################### ### Parameters ############################################################### Parameters: vpccidr: Type: String Default: 172.100.0.0/16 AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})" ConstraintDescription: Must be a valid CIDR range in the form x.x.x.x/16 subpublicAcidr: Type: String Default: 172.100.1.0/24 AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})" ConstraintDescription: Must be a valid CIDR range in the form x.x.x.x/xx subpublicBcidr: Type: String Default: 172.100.2.0/24 AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})" ConstraintDescription: Must be a valid CIDR range in the form x.x.x.x/xx ############################################################### ### Resources ############################################################### Resources: ############################################################### ### VPC VPC: Type: "AWS::EC2::VPC" Properties: CidrBlock: !Ref vpccidr EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: Workshop-VPC ############################################################### ### GWs ### IGW IGW: Type: "AWS::EC2::InternetGateway" Properties: Tags: - Key: Name Value: Workshop-IGW GatewayAttach: Type: "AWS::EC2::VPCGatewayAttachment" Properties: InternetGatewayId: !Ref IGW VpcId: !Ref VPC ############################################################### ### SUBNETs SubnetPublicA: Type: "AWS::EC2::Subnet" Properties: AvailabilityZone: !Select [0, !GetAZs ] CidrBlock: !Ref subpublicAcidr MapPublicIpOnLaunch: true VpcId: !Ref VPC Tags: - Key: Name Value: Workshop-PublicA SubnetPublicB: Type: "AWS::EC2::Subnet" Properties: AvailabilityZone: !Select [1, !GetAZs ] CidrBlock: !Ref subpublicBcidr MapPublicIpOnLaunch: true VpcId: !Ref VPC Tags: - Key: Name Value: Workshop-PublicB SubnetRouteTableAssociatePublicA: Type: "AWS::EC2::SubnetRouteTableAssociation" Properties: RouteTableId: !Ref RouteTablePublic SubnetId: !Ref SubnetPublicA SubnetRouteTableAssociatePublicB: Type: "AWS::EC2::SubnetRouteTableAssociation" Properties: RouteTableId: !Ref RouteTablePublic SubnetId: !Ref SubnetPublicB ############################################################### ### ROUTETABLEs RouteTablePublic: Type: "AWS::EC2::RouteTable" Properties: VpcId: !Ref VPC Tags: - Key: Name Value: Workshop-Public ############################################################### ### ROUTEs PublicDefaultRoute: Type: "AWS::EC2::Route" DependsOn: GatewayAttach Properties: DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref IGW RouteTableId: !Ref RouteTablePublic ############################################################### ### Outputs ############################################################### Outputs: VPCExp: Value: !Ref VPC Description: VPC Export: Name: VPC IGWExp: Value: !Ref IGW Description: IGW Export: Name: VPC-IGW SubnetPublicAExp: Value: !Ref SubnetPublicA Description: Public Subnet A Id Export: Name: VPC-SubPublicA SubnetPublicBExp: Value: !Ref SubnetPublicB Description: Public Subnet B Id Export: Name: VPC-SubPublicB RouteTablePublicExp: Value: !Ref RouteTablePublic Description: Public Route Table Export: Name: VPC-RouteTablePublic