Description:  Create Transit Gateway
Parameters:
  TransitGatewayId:
    Type: String
  VPC1: 
    Type: String
  VPC2: 
    Type: String
  VPC3: 
    Type: String
  VPC4: 
    Type: String
  VPC1PrivateSubnet1: 
    Type: String
  VPC1PrivateSubnet2: 
    Type: String
  VPC2PrivateSubnet1: 
    Type: String
  VPC2PrivateSubnet2: 
    Type: String
  VPC3PrivateSubnet1: 
    Type: String
  VPC3PrivateSubnet2: 
    Type: String
  VPC4PrivateSubnet1: 
    Type: String
  VPC4PrivateSubnet2: 
    Type: String

Resources:

  # Attachment on 4 VPC private subnet
  Region1TransitGatewayAttachment1:
    Type: AWS::EC2::TransitGatewayAttachment
    Properties: 
      VpcId: !Ref VPC1
      TransitGatewayId: !Ref TransitGatewayId
      SubnetIds: 
        - !Ref VPC1PrivateSubnet1
        - !Ref VPC1PrivateSubnet2
      Tags: 
        - Key: Name
          Value: SharedVPC-Private
  Region1TransitGatewayAttachment2:
    Type: AWS::EC2::TransitGatewayAttachment
    Properties: 
      VpcId: !Ref VPC2
      TransitGatewayId: !Ref TransitGatewayId
      SubnetIds: 
        - !Ref VPC2PrivateSubnet1
        - !Ref VPC2PrivateSubnet2
      Tags: 
        - Key: Name
          Value: VPC2
  Region1TransitGatewayAttachment3:
    Type: AWS::EC2::TransitGatewayAttachment
    Properties: 
      VpcId: !Ref VPC3
      TransitGatewayId: !Ref TransitGatewayId
      SubnetIds: 
        - !Ref VPC3PrivateSubnet1
        - !Ref VPC3PrivateSubnet2
      Tags: 
        - Key: Name
          Value: VPC3
  Region1TransitGatewayAttachment4:
    Type: AWS::EC2::TransitGatewayAttachment
    Properties: 
      VpcId: !Ref VPC4
      TransitGatewayId: !Ref TransitGatewayId
      SubnetIds: 
        - !Ref VPC4PrivateSubnet1
        - !Ref VPC4PrivateSubnet2
      Tags: 
        - Key: Name
          Value: VPC4