AWSTemplateFormatVersion: "2010-09-09"

Parameters:
  VPC0:
    Type: AWS::EC2::VPC::Id

  VPCCidr0:
    Type: String
    AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$

  VPC1:
    Type: AWS::EC2::VPC::Id

  VPCCidr1:
    Type: String
    AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$

  VPCPublicSubnet1RouteTable0:
    Type: String

  VPCPublicSubnet2RouteTable0:
    Type: String

  VPCPublicSubnet1RouteTable1:
    Type: String

  VPCPublicSubnet2RouteTable1:
    Type: String

Resources:
  Peering:
    Type: AWS::EC2::VPCPeeringConnection
    Properties:
      PeerVpcId: !Ref VPC1
      VpcId: !Ref VPC0

  RouteVPC0PublicSubnet1:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref VPCPublicSubnet1RouteTable0
      VpcPeeringConnectionId: !Ref Peering
      DestinationCidrBlock: !Ref VPCCidr1

  RouteVPC0PublicSubnet2:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref VPCPublicSubnet2RouteTable0
      VpcPeeringConnectionId: !Ref Peering
      DestinationCidrBlock: !Ref VPCCidr1

  RouteVPC1PublicSubnet1:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref VPCPublicSubnet1RouteTable1
      VpcPeeringConnectionId: !Ref Peering
      DestinationCidrBlock: !Ref VPCCidr0

  RouteVPC1PublicSubnet2:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref VPCPublicSubnet2RouteTable1
      VpcPeeringConnectionId: !Ref Peering
      DestinationCidrBlock: !Ref VPCCidr0

Outputs:
  VpcPeeringId:
    Value: !Ref Peering