Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
convert cloudformation template yaml file to json file
{
"Description": "This template deploys a VPC, with a pair of public and private subnets spread\nacross two Availability Zones. It deploys an Internet Gateway, with a default\nroute on the public subnets. It deploys a pair of NAT Gateways (one in each AZ),\nand default routes for them in the private subnets.",
"Parameters": {
"EnvironmentName": {
"Description": "An environment name that will be prefixed to resource names",
"Type": "String"
},
"VpcCIDR": {
"Description": "Please enter the IP range (CIDR notation) for this VPC",
"Type": "String",
"Default": "10.192.0.0/16"
},
"PublicSubnet1CIDR": {
"Description": "Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone",
"Type": "String",
"Default": "10.192.10.0/24"
},
"PublicSubnet2CIDR": {
"Description": "Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone",
"Type": "String",
"Default": "10.192.11.0/24"
},
"PrivateSubnet1CIDR": {
"Description": "Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone",
"Type": "String",
"Default": "10.192.20.0/24"
},
"PrivateSubnet2CIDR": {
"Description": "Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone",
"Type": "String",
"Default": "10.192.21.0/24"
}
},
"Resources": {
"VPC": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": {"Ref": "VpcCIDR"},
"EnableDnsSupport": true,
"EnableDnsHostnames": true,
"Tags": [
{
"Key": "Name",
"Value": {"Ref": "EnvironmentName"}
}
]
}
},
"InternetGateway": {
"Type": "AWS::EC2::InternetGateway",
"Properties": {
"Tags": [
{
"Key": "Name",
"Value": {"Ref": "EnvironmentName"}
}
]
}
},
"InternetGatewayAttachment": {
"Type": "AWS::EC2::VPCGatewayAttachment",
"Properties": {
"InternetGatewayId": {"Ref": "InternetGateway"},
"VpcId": {"Ref": "VPC"}
}
},
"PublicSubnet1": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"VpcId": {"Ref": "VPC"},
"AvailabilityZone": {"Fn::Select": [0, {"Fn:GetAZs": ""}]},
"CidrBlock": {"Ref": "PublicSubnet1CIDR"},
"MapPublicIpOnLaunch": true,
"Tags": [
{
"Key": "Name",
"Value": {"Fn::Sub": "${EnvironmentName} Public Subnet (AZ1)"}
}
]
}
},
"PublicSubnet2": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"VpcId": {"Ref": "VPC"},
"AvailabilityZone": {"Fn::Select": [1, {"Fn::GetAZs": ""}]},
"CidrBlock": {"Ref": "PublicSubnet2CIDR"},
"MapPublicIpOnLaunch": true,
"Tags": [
{
"Key": "Name",
"Value": {"Fn::Sub": "${EnvironmentName} Public Subnet (AZ1)"}
}
]
}
},
"PrivateSubnet1": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"VpcId": {"Ref": "VPC"},
"AvailabilityZone": {"Fn::Select": [0, {"Fn::GetAZs": ""}]},
"CidrBlock": {"Ref": "PrivateSubnet1CIDR"},
"MapPublicIpOnLaunch": false,
"Tags": [
{
"Key": "Name",
"Value": {"Fn::Sub": "${EnvironmentName} Private Subnet (AZ1)"}
}
]
}
},
"PrivateSubnet2": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"VpcId": {"Ref": "VPC"},
"AvailabilityZone": {"Fn::Select": [1, {"Fn::GetAZs": ""}]},
"CidrBlock": {"Ref": "PrivateSubnet2CIDR"},
"MapPublicIpOnLaunch": false,
"Tags": [
{
"Key": "Name",
"Value": {"Fn::Sub": "${EnvironmentName} Private Subnet (AZ2)"}
}
]
}
},
"NatGateway1EIP": {
"Type": "AWS::EC2::EIP",
"DependsOn": "InternetGatewayAttachment",
"Properties": {
"Domain": "vpc"
}
},
"NatGateway2EIP": {
"Type": "AWS::EC2::EIP",
"DependsOn": "InternetGatewayAttachment",
"Properties": {
"Domain": "vpc"
}
},
"NatGateway1": {
"Type": "AWS::EC2::NatGateway",
"Properties": {
"AllocationId": {"Fn::GetAtt": ["NatGateway1EIP", "AllocationId"]},
"SubnetId": {"Ref": "PublicSubnet1"}
}
},
"NatGateway2": {
"Type": "AWS::EC2::NatGateway",
"Properties": {
"AllocationId": {"Fn::GetAtt": ["NatGateway2EIP", "AllocationId"]},
"SubnetId": {"Ref": "PublicSubnet2"}
}
},
"PublicRouteTable": {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"VpcId": {"Ref": "VPC"},
"Tags": [
{
"Key": "Name",
"Value": {"Fn::Sub": "${EnvironmentName} Public Routes"}
}
]
}
},
"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"}
}
},
"PrivateRouteTable1": {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"VpcId": {"Ref": "VPC"},
"Tags": [
{
"Key": "Name",
"Value": {"Fn::Sub": "${EnvironmentName} Private Routes (AZ1)"}
}
]
}
},
"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": {"Fn::Sub": "${EnvironmentName} Private Routes (AZ2)"}
}
]
}
},
"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"}
}
},
"NoIngressSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupName": "no-ingress-sg",
"GroupDescription": "Security group with no ingress rule",
"VpcId": {"Ref": "VPC"}
}
}
},
"Outputs": {
"VPC": {
"Description": "A reference to the created VPC",
"Value": {"Ref": "VPC"}
},
"PublicSubnets": {
"Description": "A list of the public subnets",
"Value": {"Fn::Join": [",", [{"Ref": "PublicSubnet1"}, {"Ref": "PublicSubnet2"}]]}
},
"PrivateSubnets": {
"Description": "A list of the private subnets",
"Value": {"Fn::Join": [",", [{"Ref": "PrivateSubnet1"}, {"Ref": "PrivateSubnet2"}]]}
},
"PublicSubnet1": {
"Description": "A reference to the public subnet in the 1st Availability Zone",
"Value": {"Ref": "PublicSubnet1"}
},
"PublicSubnet2": {
"Description": "A reference to the public subnet in the 2nd Availability Zone",
"Value": {"Ref": "PublicSubnet2"}
},
"PrivateSubnet1": {
"Description": "A reference to the private subnet in the 1st Availability Zone",
"Value": {"Ref": "PrivateSubnet1"}
},
"PrivateSubnet2": {
"Description": "A reference to the private subnet in the 2nd Availability Zone",
"Value": {"Ref": "PrivateSubnet2"}
},
"NoIngressSecurityGroup": {
"Description": "Security group with no ingress rule",
"Value": {"Ref": "NoIngressSecurityGroup"}
}
}
}
@jumpeiMano

This comment has been minimized.

Copy link
Owner Author

jumpeiMano commented Nov 16, 2019

The origin file is here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.