title: My Cloudformation YAML for autoscaling group keeps creating EC2 instances in default VPC even after I specify a custom VPC
body: <p>My Cloudformation YAML for autoscaling group keeps creating EC2 instances in default VPC even after I specify a custom VPC. Here's the snippets of code:</p>
  <pre><code>  TargetGroup:
      Type: AWS::ElasticLoadBalancingV2::TargetGroup
      Properties:
        Port: 80
        Protocol: HTTP
        VpcId: !Ref VpcId
  </code></pre>
  <p>Parameters section:</p>
  <pre><code>  VpcId:
      Description: Enter the VpcId
      Type: AWS::EC2::VPC::Id
      Default: vpc-0ed238eeecc11b493
  </code></pre>
  <p>I keep seeing termination of EC2 instances because the launch config is for some reason creating the instances in the default VPC even through I have specified to use the custom in the parameters section. I dont know why it is not taking the custom VPC. When I check security groups, launch config in the AWS console it shows the custom VPC but when I check the EC2 instance launched by the auto scaling group, I see the default VPC.
  My default VPC is <code>vpc-6a79470d</code> and my custom VPC is <code>vpc-0ed238eeecc11b493</code></p>
  <p>The error I see in the Autoscaling group section of the console is:</p>
  <pre><code>Description:DescriptionLaunching a new EC2 instance: i-041b680f6470379e3. 
  Status Reason: Failed to update target group arn:aws:elasticloadbalancing:us-west-1:targetgroup/ALBTe-Targe-7DMLWW46T1E6/f74a31d17bf3c4dc: 
  The following targets are not in the target group VPC 'vpc-0ed238eeecc11b493': 'i-041b680f6470379e3' Updating load balancer configuration failed.
  </code></pre>
  <p>Hope someone can help point out what I am doing wrong. I see in AWS documentation that ASG by default launches in default VPC but there must be a way to do it in CloudFormation if it is possible to do it through console.</p>
  <p>=============================== After update==========================</p>
  <p>Here's how it looks now after adding VPCZoneIdentifier, not sure what I am doing wrong and getting an issue with security group now</p>
  <pre><code>  AutoScalingGroup:
      Type: AWS::AutoScaling::AutoScalingGroup
      Properties:
        AvailabilityZones: !GetAZs
        VPCZoneIdentifier: !Ref SubnetIds
        LaunchConfigurationName: !Ref LaunchConfiguration
        MinSize: 1
        MaxSize: 3
        TargetGroupARNs: 
          - !Ref TargetGroup
    LaunchConfiguration:
      Type: AWS::AutoScaling::LaunchConfiguration
      Properties:
        KeyName: !Ref KeyName
        InstanceType: t2.micro
        SecurityGroups:
          - !Ref EC2SecurityGroup
        ImageId:
          Fn::FindInMap:
          - RegionMap
          - !Ref AWS::Region
          - AMI
        LaunchConfiguration --region ${AWS::Region}
    ALBSecurityGroup:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: ALB Security Group
        VpcId: VpcId: !Ref VpcId
        SecurityGroupIngress:
          - IpProtocol: tcp
            FromPort: 80
            ToPort: 80
            CidrIp: 0.0.0.0/0
    EC2SecurityGroup: 
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: EC2 Instance
  </code></pre>