Anusha Ravindra
Anusha Ravindra

Reputation: 65

Need help in fixing this CloudFormation Template for ALB

This is a CloudFormation template to create application load balancer. I'm getting an error that says- Value of property Subnets must be of type List of String. Are the security group entities declared rightly?

AWSTemplateFormatVersion: '2010-09-09'

Parameters:
  Name: 
    Description: Name of the project
    Type: String
  Environment: 
    Description: Environment of the Application Load balancer
    Type: String
  PublicSubnet:
    Description: Subnet
    Type: List<AWS::EC2::Subnet::Id>
  Vpc:
    Description: VPC 
    Type: AWS::EC2::VPC::Id
   
Resources:
  SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: ElastiCache Security Group
      VpcId: !Ref Vpc
      SecurityGroupIngress:
        -
          IpProtocol: tcp
          FromPort: "80"
          ToPort: "80"
          FromPort: "443"
          ToPort: "443"
          CidrIp: "0.0.0.0/0"
      Tags:
        -
          Key: Name
          Value: "App-SG"
  ApplicationLB:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      IpAddressType: ipv4
      Name: Test-ALB
      Scheme: internet-facing 
      SecurityGroups:
        - !Ref SecurityGroup
      Subnets:
        - !Ref PublicSubnet  
      Tags:
        - Key: Name
          Value: Test-ALB
      Type: application
  ALBListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref ALBTargetGroup
      LoadBalancerArn:
        Ref: ApplicationLB
      Port: '80'
      Protocol: HTTP
  ALBTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      HealthCheckIntervalSeconds: 30
      HealthCheckTimeoutSeconds: 5
      HealthyThresholdCount: 3
      Port: 80
      Protocol: HTTP
      UnhealthyThresholdCount: 5
      VpcId: !Ref Vpc

Also it would be helpful to review the entire template, incase there are more errors.

Upvotes: 1

Views: 255

Answers (1)

Marcin
Marcin

Reputation: 238309

Your PublicSubnet is already a list. So you can just do:

Subnets: !Ref PublicSubnet  

Upvotes: 2

Related Questions