{
  "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-ec2-vpc-endpoint/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-ec2-vpc-endpoint/MyVpc/PublicSubnet1"
          }
        ]
      }
    },
    "MyVpcPublicSubnet1RouteTableC46AB2F4": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/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"
      ]
    },
    "MyVpcPublicSubnet1EIP096967CB": {
      "Type": "AWS::EC2::EIP",
      "Properties": {
        "Domain": "vpc",
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc/PublicSubnet1"
          }
        ]
      }
    },
    "MyVpcPublicSubnet1NATGatewayAD3400C1": {
      "Type": "AWS::EC2::NatGateway",
      "Properties": {
        "AllocationId": {
          "Fn::GetAtt": [
            "MyVpcPublicSubnet1EIP096967CB",
            "AllocationId"
          ]
        },
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet1SubnetF6608456"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc/PublicSubnet1"
          }
        ]
      }
    },
    "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-ec2-vpc-endpoint/MyVpc/PublicSubnet2"
          }
        ]
      }
    },
    "MyVpcPublicSubnet2RouteTable1DF17386": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/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"
      ]
    },
    "MyVpcPublicSubnet2EIP8CCBA239": {
      "Type": "AWS::EC2::EIP",
      "Properties": {
        "Domain": "vpc",
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc/PublicSubnet2"
          }
        ]
      }
    },
    "MyVpcPublicSubnet2NATGateway91BFBEC9": {
      "Type": "AWS::EC2::NatGateway",
      "Properties": {
        "AllocationId": {
          "Fn::GetAtt": [
            "MyVpcPublicSubnet2EIP8CCBA239",
            "AllocationId"
          ]
        },
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet2Subnet492B6BFB"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc/PublicSubnet2"
          }
        ]
      }
    },
    "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-ec2-vpc-endpoint/MyVpc/PublicSubnet3"
          }
        ]
      }
    },
    "MyVpcPublicSubnet3RouteTable15028F08": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/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"
      ]
    },
    "MyVpcPublicSubnet3EIPC5ACADAB": {
      "Type": "AWS::EC2::EIP",
      "Properties": {
        "Domain": "vpc",
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc/PublicSubnet3"
          }
        ]
      }
    },
    "MyVpcPublicSubnet3NATGatewayD4B50EBE": {
      "Type": "AWS::EC2::NatGateway",
      "Properties": {
        "AllocationId": {
          "Fn::GetAtt": [
            "MyVpcPublicSubnet3EIPC5ACADAB",
            "AllocationId"
          ]
        },
        "SubnetId": {
          "Ref": "MyVpcPublicSubnet3Subnet57EEE236"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc/PublicSubnet3"
          }
        ]
      }
    },
    "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-ec2-vpc-endpoint/MyVpc/PrivateSubnet1"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet1RouteTable8819E6E2": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/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",
        "NatGatewayId": {
          "Ref": "MyVpcPublicSubnet1NATGatewayAD3400C1"
        }
      }
    },
    "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-ec2-vpc-endpoint/MyVpc/PrivateSubnet2"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet2RouteTableCEDCEECE": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/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",
        "NatGatewayId": {
          "Ref": "MyVpcPublicSubnet2NATGateway91BFBEC9"
        }
      }
    },
    "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-ec2-vpc-endpoint/MyVpc/PrivateSubnet3"
          }
        ]
      }
    },
    "MyVpcPrivateSubnet3RouteTableB790927C": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/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",
        "NatGatewayId": {
          "Ref": "MyVpcPublicSubnet3NATGatewayD4B50EBE"
        }
      }
    },
    "MyVpcIGW5C4A4F63": {
      "Type": "AWS::EC2::InternetGateway",
      "Properties": {
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc"
          }
        ]
      }
    },
    "MyVpcVPCGW488ACE0D": {
      "Type": "AWS::EC2::VPCGatewayAttachment",
      "Properties": {
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "InternetGatewayId": {
          "Ref": "MyVpcIGW5C4A4F63"
        }
      }
    },
    "MyVpcS3FADC1889": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".s3"
            ]
          ]
        },
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "RouteTableIds": [
          {
            "Ref": "MyVpcPrivateSubnet1RouteTable8819E6E2"
          },
          {
            "Ref": "MyVpcPrivateSubnet2RouteTableCEDCEECE"
          },
          {
            "Ref": "MyVpcPrivateSubnet3RouteTableB790927C"
          },
          {
            "Ref": "MyVpcPublicSubnet1RouteTableC46AB2F4"
          },
          {
            "Ref": "MyVpcPublicSubnet2RouteTable1DF17386"
          },
          {
            "Ref": "MyVpcPublicSubnet3RouteTable15028F08"
          }
        ],
        "VpcEndpointType": "Gateway"
      }
    },
    "MyVpcDynamoDbEndpointE6A39B0D": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".dynamodb"
            ]
          ]
        },
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:ListTables"
              ],
              "Effect": "Allow",
              "Principal": "*",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "RouteTableIds": [
          {
            "Ref": "MyVpcPrivateSubnet1RouteTable8819E6E2"
          },
          {
            "Ref": "MyVpcPrivateSubnet2RouteTableCEDCEECE"
          },
          {
            "Ref": "MyVpcPrivateSubnet3RouteTableB790927C"
          },
          {
            "Ref": "MyVpcPublicSubnet1RouteTableC46AB2F4"
          },
          {
            "Ref": "MyVpcPublicSubnet2RouteTable1DF17386"
          },
          {
            "Ref": "MyVpcPublicSubnet3RouteTable15028F08"
          }
        ],
        "VpcEndpointType": "Gateway"
      }
    },
    "MyVpcEcrDockerEndpointSecurityGroup47BB9CC1": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "aws-cdk-ec2-vpc-endpoint/MyVpc/EcrDockerEndpoint/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "MyVpcF9F0CA6F",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "MyVpcF9F0CA6F",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "Name",
            "Value": "aws-cdk-ec2-vpc-endpoint/MyVpc"
          }
        ],
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        }
      }
    },
    "MyVpcEcrDockerEndpoint0385050C": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".ecr.dkr"
            ]
          ]
        },
        "VpcId": {
          "Ref": "MyVpcF9F0CA6F"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "MyVpcEcrDockerEndpointSecurityGroup47BB9CC1",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "MyVpcPrivateSubnet1Subnet5057CF7E"
          },
          {
            "Ref": "MyVpcPrivateSubnet2Subnet0040C983"
          },
          {
            "Ref": "MyVpcPrivateSubnet3Subnet772D6AD7"
          }
        ],
        "VpcEndpointType": "Interface"
      }
    }
  }
}