AWS Cloudformation: Security group is not valid

Viewed 825

Thanks in advance.

ISSUE: I am trying to create a stack with Loadbalancer + listener + target_group + security-group + ec2-instance.

Stack name: test-stack

I am getting an error the below error while creating the stack :

Security group 'test-stack-MySecurityGroup-1XYNYTFIAGZKM' is not valid (Service: AmazonElasticLoadBalancingV2; Status Code: 400; Error Code: ValidationError; Request ID: ddef7a0d-7c19-4ec8-ab48-d8aeba9a0956)

Config files:

Resources:
    MyEC2Instance:
      Type: AWS::EC2::Instance 
      Properties: 
        ImageId: ami-07c8bc5c1ce9598c3
        InstanceType: t2.micro
        AvailabilityZone: us-east-2a
        SecurityGroups: 
          - !Ref MySecurityGroup
  
    MySecurityGroup:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: Opening port 80 
        SecurityGroupIngress: 
          - FromPort: 80
            ToPort: 80
            CidrIp: 0.0.0.0/0
            IpProtocol: tcp
  
    ALBListener:
      Type: AWS::ElasticLoadBalancingV2::Listener
      Properties:
        DefaultActions:
          - Type: forward
            TargetGroupArn: !Ref EC2TargetGroup
        LoadBalancerArn: !Ref ApplicationLoadBalancer
        Port: 80
        Protocol: HTTP
  
    ApplicationLoadBalancer:
      Type: AWS::ElasticLoadBalancingV2::LoadBalancer
      Properties:
        Scheme: internet-facing 
        Subnets:
        - us-east-2a
        - us-east-2b
        SecurityGroups:
          - !Ref MySecurityGroup
  
    EC2TargetGroup:
      Type: AWS::ElasticLoadBalancingV2::TargetGroup
      Properties:   
        Name: EC2TargetGroup
        Port: 80
        Protocol: HTTP
        Targets:
        - Id: !Ref MyEC2Instance
          Port: 80
        VpcId: vpc-a26dcec9
        Tags:
        - Key: Name
          Value: EC2TargetGroup
        - Key: Port
          Value: 80

I wonder what I am doing wrong.

1 Answers

SecurityGroups should be group ID, not group name:

    ApplicationLoadBalancer:
      Type: AWS::ElasticLoadBalancingV2::LoadBalancer
      Properties:
        Scheme: internet-facing 
        Subnets:
        - us-east-2a
        - us-east-2b
        SecurityGroups:
          - !GetAtt MySecurityGroup.GroupId
Related