如何修复 CloudFormation 错误“提供的负载均衡器可能无效。请确保它们存在并重试

How to Fix CloudFormation error "Provided Load Balancers may not be valid. Please ensure they exist and try again

当我尝试使用以下 cloudformation yaml 文件使用应用程序负载均衡器创建 Auto Scaling 组时

    LoadBalancer: 
      Type: AWS::ElasticLoadBalancingV2::LoadBalancer
      Properties: 
        Type: application
        Subnets: 
          Ref: VPCZoneIdentifier  

    AutoScalingGroup:
      Type: AWS::AutoScaling::AutoScalingGroup
      DependsOn: LoadBalancer
      Properties:
        AvailabilityZones: 
          Ref: "AvailabilityZones"
        Cooldown: 120
        DesiredCapacity:
          Ref: DesiredCapacityASG
        LaunchConfigurationName: 
          Ref: LaunchConfiguration
        MaxSize:
          Ref: MaxSizeASG
        MinSize:
          Ref: MinSizeASG
        LoadBalancerNames: 
          - Ref: "LoadBalancer"
        TargetGroupARNs:
          - !Ref TargetGroup

我收到一条错误消息 "Provided Load Balancers may not be valid. Please ensure they exist and try again. (Service: AmazonAutoScaling; Status Code: 400; Error Code: ValidationError; Request ID:)"

发生此错误是因为您将 LoadBalancerNames 用于应用程序负载均衡器,如前所述 here

修复它:删除 LoadBalancerNames 并在属性

中保留 TargetGroupARNs

负载均衡器名称:
- 参考:"LoadBalancer"

所以 yml 文件将是这样的:

    AutoScalingGroup:
      Type: AWS::AutoScaling::AutoScalingGroup
      DependsOn: LoadBalancer
      Properties:
        AvailabilityZones: 
          Ref: "AvailabilityZones"
        Cooldown: 120
        DesiredCapacity:
          Ref: DesiredCapacityASG
        LaunchConfigurationName: 
          Ref: LaunchConfiguration
        MaxSize:
          Ref: MaxSizeASG
        MinSize:
          Ref: MinSizeASG
        TargetGroupARNs:
          - !Ref TargetGroup

如果您使用的是 ansible ec2_asg 模块并到达此处,请将 load_balancers: 替换为 target_group_arns 并传递目标组的 ARN。