Created
November 16, 2019 08:00
-
-
Save jumpeiMano/47578e913c1e4f17131141a6a2a741fb to your computer and use it in GitHub Desktop.
convert cloudformation template yaml file to json file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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"} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The origin file is here