AWSTemplateFormatVersion: 2010-09-09 Description: Lab template # Lab VPC with public subnet and Internet Gateway Parameters: LabVpcCidr: Type: String Default: 10.0.0.0/20 PublicSubnetCidr: Type: String Default: 10.0.0.0/24 Resources: Bucket: Type: AWS::S3::Bucket ########### # VPC with Internet Gateway ########### LabVPC: Type: AWS::EC2::VPC Properties: CidrBlock: !Ref LabVpcCidr EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: Lab VPC IGW: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Name Value: Lab IGW VPCtoIGWConnection: Type: AWS::EC2::VPCGatewayAttachment DependsOn: - IGW - LabVPC Properties: InternetGatewayId: !Ref IGW VpcId: !Ref LabVPC ########### # Public Route Table ########### PublicRouteTable: Type: AWS::EC2::RouteTable DependsOn: LabVPC Properties: VpcId: !Ref LabVPC Tags: - Key: Name Value: Public Route Table PublicRoute: Type: AWS::EC2::Route DependsOn: - PublicRouteTable - IGW Properties: DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref IGW RouteTableId: !Ref PublicRouteTable ########### # Public Subnet ########### PublicSubnet: Type: AWS::EC2::Subnet DependsOn: LabVPC Properties: VpcId: !Ref LabVPC MapPublicIpOnLaunch: true CidrBlock: !Ref PublicSubnetCidr AvailabilityZone: !Select - 0 - !GetAZs Ref: AWS::Region Tags: - Key: Name Value: Public Subnet PublicRouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation DependsOn: - PublicRouteTable - PublicSubnet Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet ########### # App Security Group ########### AppSecurityGroup: Type: AWS::EC2::SecurityGroup DependsOn: LabVPC Properties: GroupName: App GroupDescription: Enable access to App VpcId: !Ref LabVPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 Tags: - Key: Name Value: App ########### # Outputs ########### Outputs: LabVPCDefaultSecurityGroup: Value: !Sub ${LabVPC.DefaultSecurityGroup}