{
  "Resources": {
    "MyVpcF9F0CA6F": {
      "Type": "AWS::EC2::VPC",
      "Properties": {
        "CidrBlock": "10.0.0.0/16",
        "EnableDnsHostnames": true,
        "EnableDnsSupport": true,
        "InstanceTenancy": "default",
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc"
          }
        ]
      }
    },
    "MyVpcPublicSubnet1SubnetF6608456": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "CidrBlock": "10.0.0.0/19",
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "AvailabilityZone": "test-region-1a",
        "MapPublicIpOnLaunch": true,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "Public"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Public"
          },
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet1"
          }
        ]
      }
    },
    "MyVpcPublicSubnet1RouteTableC46AB2F4": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet1"
          }
        ]
      }
    },
    "MyVpcPublicSubnet1RouteTableAssociation2ECEE1CB": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPublicSubnet1RouteTableC46AB2F4"
        },
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet1SubnetF6608456"
        }
      }
    },
    "MyVpcPublicSubnet1DefaultRoute95FDF9EB": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPublicSubnet1RouteTableC46AB2F4"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": {
          "Ref": "MyVpcIGW5C4A4F63"
        }
      },
      "DependsOn": [
        "MyVpcVPCGW488ACE0D"
      ]
    },
    "MyVpcPublicSubnet1NatInstanceInstanceProfile2FD934CB": {
      "Type": "AWS::IAM::InstanceProfile",
      "Properties": {
        "Roles": [
          {
            "Ref": "MyVpcNatRoleF1616EE9"
          }
        ]
      }
    },
    "MyVpcPublicSubnet1NatInstance8E94E5F7": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "AvailabilityZone": "test-region-1a",
        "IamInstanceProfile": {
          "Ref": "MyVpcPublicSubnet1NatInstanceInstanceProfile2FD934CB"
        },
        "ImageId": "ami-1234",
        "InstanceType": "t3.small",
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "MyVpcNatSecurityGroupAA76397E",
              "GroupId"
            ]
          }
        ],
        "SourceDestCheck": false,
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet1SubnetF6608456"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet1/NatInstance"
          }
        ],
        "UserData": {
          "Fn::Base64": "#!/bin/bash"
        }
      },
      "DependsOn": [
        "MyVpcNatRoleF1616EE9"
      ]
    },
    "MyVpcPublicSubnet2Subnet492B6BFB": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "CidrBlock": "10.0.32.0/19",
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "AvailabilityZone": "test-region-1b",
        "MapPublicIpOnLaunch": true,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "Public"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Public"
          },
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet2"
          }
        ]
      }
    },
    "MyVpcPublicSubnet2RouteTable1DF17386": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet2"
          }
        ]
      }
    },
    "MyVpcPublicSubnet2RouteTableAssociation227DE78D": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPublicSubnet2RouteTable1DF17386"
        },
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet2Subnet492B6BFB"
        }
      }
    },
    "MyVpcPublicSubnet2DefaultRoute052936F6": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPublicSubnet2RouteTable1DF17386"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": {
          "Ref": "MyVpcIGW5C4A4F63"
        }
      },
      "DependsOn": [
        "MyVpcVPCGW488ACE0D"
      ]
    },
    "MyVpcPublicSubnet2NatInstanceInstanceProfile5AB09EF6": {
      "Type": "AWS::IAM::InstanceProfile",
      "Properties": {
        "Roles": [
          {
            "Ref": "MyVpcNatRoleF1616EE9"
          }
        ]
      }
    },
    "MyVpcPublicSubnet2NatInstance04BCE4E3": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "AvailabilityZone": "test-region-1b",
        "IamInstanceProfile": {
          "Ref": "MyVpcPublicSubnet2NatInstanceInstanceProfile5AB09EF6"
        },
        "ImageId": "ami-1234",
        "InstanceType": "t3.small",
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "MyVpcNatSecurityGroupAA76397E",
              "GroupId"
            ]
          }
        ],
        "SourceDestCheck": false,
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet2Subnet492B6BFB"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet2/NatInstance"
          }
        ],
        "UserData": {
          "Fn::Base64": "#!/bin/bash"
        }
      },
      "DependsOn": [
        "MyVpcNatRoleF1616EE9"
      ]
    },
    "MyVpcPublicSubnet3Subnet57EEE236": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "CidrBlock": "10.0.64.0/19",
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "AvailabilityZone": "test-region-1c",
        "MapPublicIpOnLaunch": true,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "Public"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Public"
          },
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet3"
          }
        ]
      }
    },
    "MyVpcPublicSubnet3RouteTable15028F08": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PublicSubnet3"
          }
        ]
      }
    },
    "MyVpcPublicSubnet3RouteTableAssociation5C27DDA4": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPublicSubnet3RouteTable15028F08"
        },
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet3Subnet57EEE236"
        }
      }
    },
    "MyVpcPublicSubnet3DefaultRoute3A83AB36": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPublicSubnet3RouteTable15028F08"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": {
          "Ref": "MyVpcIGW5C4A4F63"
        }
      },
      "DependsOn": [
        "MyVpcVPCGW488ACE0D"
      ]
    },
    "MyVpcPrivateSubnet1Subnet5057CF7E": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "CidrBlock": "10.0.96.0/19",
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "AvailabilityZone": "test-region-1a",
        "MapPublicIpOnLaunch": false,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "Private"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Private"
          },
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PrivateSubnet1"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet1RouteTable8819E6E2": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PrivateSubnet1"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet1RouteTableAssociation56D38C7E": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPrivateSubnet1RouteTable8819E6E2"
        },
        "SubnetId": {
          "Ref": "MyVpcPrivateSubnet1Subnet5057CF7E"
        }
      }
    },
    "MyVpcPrivateSubnet1DefaultRouteA8CDE2FA": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPrivateSubnet1RouteTable8819E6E2"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "InstanceId": {
          "Ref": "MyVpcPublicSubnet1NatInstance8E94E5F7"
        }
      }
    },
    "MyVpcPrivateSubnet2Subnet0040C983": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "CidrBlock": "10.0.128.0/19",
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "AvailabilityZone": "test-region-1b",
        "MapPublicIpOnLaunch": false,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "Private"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Private"
          },
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PrivateSubnet2"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet2RouteTableCEDCEECE": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PrivateSubnet2"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet2RouteTableAssociation86A610DA": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPrivateSubnet2RouteTableCEDCEECE"
        },
        "SubnetId": {
          "Ref": "MyVpcPrivateSubnet2Subnet0040C983"
        }
      }
    },
    "MyVpcPrivateSubnet2DefaultRoute9CE96294": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPrivateSubnet2RouteTableCEDCEECE"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "InstanceId": {
          "Ref": "MyVpcPublicSubnet2NatInstance04BCE4E3"
        }
      }
    },
    "MyVpcPrivateSubnet3Subnet772D6AD7": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "CidrBlock": "10.0.160.0/19",
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "AvailabilityZone": "test-region-1c",
        "MapPublicIpOnLaunch": false,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "Private"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Private"
          },
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PrivateSubnet3"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet3RouteTableB790927C": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc/PrivateSubnet3"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet3RouteTableAssociationD951741C": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPrivateSubnet3RouteTableB790927C"
        },
        "SubnetId": {
          "Ref": "MyVpcPrivateSubnet3Subnet772D6AD7"
        }
      }
    },
    "MyVpcPrivateSubnet3DefaultRouteEC11C0C5": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "MyVpcPrivateSubnet3RouteTableB790927C"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "InstanceId": {
          "Ref": "MyVpcPublicSubnet1NatInstance8E94E5F7"
        }
      }
    },
    "MyVpcIGW5C4A4F63": {
      "Type": "AWS::EC2::InternetGateway",
      "Properties": {
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc"
          }
        ]
      }
    },
    "MyVpcVPCGW488ACE0D": {
      "Type": "AWS::EC2::VPCGatewayAttachment",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "InternetGatewayId": {
          "Ref": "MyVpcIGW5C4A4F63"
        }
      }
    },
    "MyVpcNatSecurityGroupAA76397E": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Security Group for NAT instances",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "from 0.0.0.0/0:ALL TRAFFIC",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc"
          }
        ],
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        }
      }
    },
    "MyVpcNatRoleF1616EE9": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": {
                  "Fn::Join": [
                    "",
                    [
                      "ec2.",
                      {
                        "Ref": "AWS::URLSuffix"
                      }
                    ]
                  ]
                }
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-vpc-nat-instances/MyVpc"
          }
        ]
      }
    }
  }
}