Search

3Subnet-3AZ

Description: 3Subnet-3AZ Parameters: EnvironmentName: Description: prefixed to resource names Type: String Default: "wsi" VpcCIDR: Description: VPC-CIDR Type: String Default: 10.0.0.0/16 PublicSubnet1CIDR: Description: Public1-CIDR Type: String Default: 10.0.0.0/24 PublicSubnet2CIDR: Description: Public2-CIDR Type: String Default: 10.0.1.0/24 PublicSubnet3CIDR: Description: Public2-CIDR Type: String Default: 10.0.2.0/24 PrivateSubnet1CIDR: Description: Private1-CIDR Type: String Default: 10.0.3.0/24 PrivateSubnet2CIDR: Description: Private2-CIDR Type: String Default: 10.0.4.0/24 PrivateSubnet3CIDR: Description: Private3-CIDR Type: String Default: 10.0.5.0/24 ProtectedSubnet1CIDR: Description: ProtectedSubnet1-CIDR Type: String Default: 10.0.6.0/24 ProtectedSubnet2CIDR: Description: ProtectedSubnet2-CIDR Type: String Default: 10.0.7.0/24 ProtectedSubnet3CIDR: Description: ProtectedSubnet3-CIDR Type: String Default: 10.0.8.0/24 Resources: #VPC VPC: Type: AWS::EC2::VPC Properties: CidrBlock: !Ref VpcCIDR EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: !Sub ${EnvironmentName}-vpc #InternetGateway InternetGateway: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Name Value: !Sub ${EnvironmentName}-igw InternetGatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: InternetGatewayId: !Ref InternetGateway VpcId: !Ref VPC #Subnet #Public Subnet PublicSubnet1: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [0, !GetAZs ""] CidrBlock: !Ref PublicSubnet1CIDR MapPublicIpOnLaunch: true Tags: - Key: Name Value: !Sub ${EnvironmentName}-public-a PublicSubnet2: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [1, !GetAZs ""] CidrBlock: !Ref PublicSubnet2CIDR MapPublicIpOnLaunch: true Tags: - Key: Name Value: !Sub ${EnvironmentName}-public-b PublicSubnet3: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [2, !GetAZs ""] CidrBlock: !Ref PublicSubnet3CIDR MapPublicIpOnLaunch: true Tags: - Key: Name Value: !Sub ${EnvironmentName}-public-c #Private Subnet PrivateSubnet1: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [0, !GetAZs ""] CidrBlock: !Ref PrivateSubnet1CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub ${EnvironmentName}-private-a PrivateSubnet2: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [1, !GetAZs ""] CidrBlock: !Ref PrivateSubnet2CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub ${EnvironmentName}-private-b PrivateSubnet3: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [2, !GetAZs ""] CidrBlock: !Ref PrivateSubnet3CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub ${EnvironmentName}-private-c #Protected Subnet ProtectedSubnet1: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [0, !GetAZs ""] CidrBlock: !Ref ProtectedSubnet1CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub ${EnvironmentName}-protected-a ProtectedSubnet2: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [1, !GetAZs ""] CidrBlock: !Ref ProtectedSubnet2CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub ${EnvironmentName}-protected-b ProtectedSubnet3: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: !Select [2, !GetAZs ""] CidrBlock: !Ref ProtectedSubnet3CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub ${EnvironmentName}-Protected-c #NatGateway NatGateway1EIP: Type: AWS::EC2::EIP DependsOn: InternetGatewayAttachment Properties: Domain: vpc NatGateway2EIP: Type: AWS::EC2::EIP DependsOn: InternetGatewayAttachment Properties: Domain: vpc NatGateway3EIP: Type: AWS::EC2::EIP DependsOn: InternetGatewayAttachment Properties: Domain: vpc NatGateway1: Type: AWS::EC2::NatGateway Properties: AllocationId: !GetAtt NatGateway1EIP.AllocationId SubnetId: !Ref PublicSubnet1 Tags: - Key: Name Value: !Sub ${EnvironmentName}-nat-a NatGateway2: Type: AWS::EC2::NatGateway Properties: AllocationId: !GetAtt NatGateway2EIP.AllocationId SubnetId: !Ref PublicSubnet2 Tags: - Key: Name Value: !Sub ${EnvironmentName}-nat-b NatGateway3: Type: AWS::EC2::NatGateway Properties: AllocationId: !GetAtt NatGateway3EIP.AllocationId SubnetId: !Ref PublicSubnet3 Tags: - Key: Name Value: !Sub ${EnvironmentName}-nat-c #Route Table #Public Route Table PublicRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub ${EnvironmentName}-public-rt DefaultPublicRoute: Type: AWS::EC2::Route DependsOn: InternetGatewayAttachment Properties: RouteTableId: !Ref PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGateway PublicSubnet1RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet1 PublicSubnet2RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet2 PublicSubnet3RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet3 #Private route Table PrivateRouteTable1: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub ${EnvironmentName}-private-a-rt DefaultPrivateRoute1: Type: AWS::EC2::Route Properties: RouteTableId: !Ref PrivateRouteTable1 DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref NatGateway1 PrivateSubnet1RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PrivateRouteTable1 SubnetId: !Ref PrivateSubnet1 PrivateRouteTable2: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub ${EnvironmentName}-private-b-rt DefaultPrivateRoute2: Type: AWS::EC2::Route Properties: RouteTableId: !Ref PrivateRouteTable2 DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref NatGateway2 PrivateSubnet2RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PrivateRouteTable2 SubnetId: !Ref PrivateSubnet2 PrivateRouteTable3: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub ${EnvironmentName}-private-c-rt DefaultPrivateRoute3: Type: AWS::EC2::Route Properties: RouteTableId: !Ref PrivateRouteTable3 DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref NatGateway3 PrivateSubnet3RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PrivateRouteTable3 SubnetId: !Ref PrivateSubnet3 # Protected Route Table # ProtectedRouteTable1: # Type: AWS::EC2::RouteTable # Properties: # VpcId: !Ref VPC # Tags: # - Key: Name # Value: !Sub ${EnvironmentName}-protected-a-rt ProtectedRouteTable1: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub ${EnvironmentName}-protected-rt ProtectedSubnet1RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref ProtectedRouteTable1 SubnetId: !Ref ProtectedSubnet1 # ProtectedRouteTable2: # Type: AWS::EC2::RouteTable # Properties: # VpcId: !Ref VPC # Tags: # - Key: Name # Value: !Sub ${EnvironmentName}-protected-b-rt ProtectedSubnet2RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref ProtectedRouteTable1 SubnetId: !Ref ProtectedSubnet2 # ProtectedRouteTable3: # Type: AWS::EC2::RouteTable # Properties: # VpcId: !Ref VPC # Tags: # - Key: Name # Value: !Sub ${EnvironmentName}-protected-c-rt ProtectedSubnet3RouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref ProtectedRouteTable1 SubnetId: !Ref ProtectedSubnet3 Outputs: VPC: Description: "VPC" Value: !Ref VPC Export: Name: "Fn::Sub": "${AWS::StackName}-VPC" PublicSubnets: Description: A list of the public subnets Value: !Join [",", [!Ref PublicSubnet1, !Ref PublicSubnet2, !Ref PublicSubnet3]] PrivateSubnets: Description: A list of the private subnets Value: !Join [ ",", [!Ref PrivateSubnet1, !Ref PrivateSubnet2, !Ref PrivateSubnet3], ] ProtectedSubnets: Description: A list of the private subnets Value: !Join [ ",", [!Ref ProtectedSubnet1, !Ref ProtectedSubnet2, !Ref ProtectedSubnet3], ] Publicsubnet1: Description: "Public Subnet AZ a" Value: !Ref PublicSubnet1 Export: Name: "Fn::Sub": "${AWS::StackName}-public-a" PublicSubnet2: Description: "Public Subnet AZ b" Value: !Ref PublicSubnet2 Export: Name: "Fn::Sub": "${AWS::StackName}-public-b" PublicSubnet3: Description: "Public Subnet AZ c" Value: !Ref PublicSubnet3 Export: Name: "Fn::Sub": "${AWS::StackName}-public-c" PrivateSubnet1: Description: "Private Subnet AZ a" Value: !Ref PrivateSubnet1 Export: Name: "Fn::Sub": "${AWS::StackName}-private-a" PrivateSubnet2: Description: "Private Subnet AZ b" Value: !Ref PrivateSubnet2 Export: Name: "Fn::Sub": "${AWS::StackName}-private-b" PrivateSubnet3: Description: "Private Subnet AZ c" Value: !Ref PrivateSubnet3 Export: Name: "Fn::Sub": "${AWS::StackName}-private-c" ProtectedSubnet1: Description: "Protected Subnet AZ a" Value: !Ref ProtectedSubnet1 Export: Name: "Fn::Sub": "${AWS::StackName}-protected-a" ProtectedSubnet2: Description: "Protected Subnet AZ b" Value: !Ref ProtectedSubnet2 Export: Name: "Fn::Sub": "${AWS::StackName}-protected-b" ProtectedSubnet3: Description: "Protected Subnet AZ c" Value: !Ref ProtectedSubnet3 Export: Name: "Fn::Sub": "${AWS::StackName}-protected-c"
YAML
복사