Skip to content

Instantly share code, notes, and snippets.

@jumpeiMano
Created November 16, 2019 08:00
Show Gist options
  • Save jumpeiMano/47578e913c1e4f17131141a6a2a741fb to your computer and use it in GitHub Desktop.
Save jumpeiMano/47578e913c1e4f17131141a6a2a741fb to your computer and use it in GitHub Desktop.
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
Copy link
Author

The origin file is here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment