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

Yas*_*ser 4 amazon-web-services aws-cloudformation aws-application-load-balancer

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

    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
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:“提供的负载均衡器可能无效。请确保它们存在并重试。(服务:AmazonAutoScaling;状态代码:400;错误代码:ValidationError;请求 ID:)”

Yas*_*ser 5

这个错误是发生是因为你使用LoadBalancerNames的应用负载均衡器,因为它注意到这里

修复它:删除 LoadBalancerNames并将TargetGroupARNs保留在属性中

LoadBalancerNames:
- Ref: "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
Run Code Online (Sandbox Code Playgroud)