【问题标题】:"elb name longer than 32" but only 8“elb 名称超过 32”但只有 8 个
【发布时间】:2018-08-08 09:32:23
【问题描述】:

我正在尝试使用 AWS cloudformation 创建具有 ALB 和 ECS 服务的堆栈,但我在 AWS::ECS::Service 上得到了一个 CREATE_FAILED,即 elb name longer than 32

我不明白为什么 ECS 服务抱怨 ELB 名称,而 ALB 本身处于 CREATE_COMPLETE 状态...

这是我发送到 cloudformation 的与 ALB 创建相关的 JSON:

    "loadBalancer" : {
      "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
      "Properties": {
        "Name": "test-alb",
        "Scheme" : "internal",
        "Subnets" : [
          "subnet-b8217295",
          "subnet-ddaad2b8",
          "subnet-6d71fb51"
        ],
        "LoadBalancerAttributes" : [
          { "Key" : "idle_timeout.timeout_seconds", "Value" : "50" }
        ],
        "SecurityGroups": [
          { "Ref": "InstanceSecurityGroupOpenWeb" },
          { "Ref" : "InstanceSecurityGroupOpenFull" }
        ],
        "Tags" : [
          { "Key" : "key", "Value" : "value" },
          { "Key" : "key2", "Value" : "value2" }
        ]
      }
    }

这里是与 ECS 服务创建相关的 JSON(带有对上面定义的 ALB 的引用):

    "EcsService": {
      "Type":"AWS::ECS::Service",
      "Properties":{
        "Cluster":{
          "Ref": "EcsCluster"
        },
        "DesiredCount":"1",
        "DeploymentConfiguration":{
          "MaximumPercent":100,
          "MinimumHealthyPercent":0
        },
        "LoadBalancers": [
          {
            "ContainerName": "test-web",
            "ContainerPort":"80",
            "LoadBalancerName":{
              "Ref": "loadBalancer"
            }
          }
        ],
        "Role":{
          "Ref": "EcsServiceRole"
        },
        "TaskDefinition":{
          "Ref": "runWebServerTaskDefinition"
        }
      }
    }

如你所见,我自己设置了 ALB 的名称,它只有 8 个字符,所以我真的不明白这一点,知道吗?

【问题讨论】:

    标签: amazon-cloudformation amazon-ecs


    【解决方案1】:

    当您执行 "Ref" 时,它会返回负载均衡器 ARN 而不是负载均衡器名称。您需要使用 GetAtt 来获取负载均衡器名称

    { "Fn::GetAtt" : [ "loadBalancer", "LoadBalancerName" ] }
    

    【讨论】:

    • 还是有错误,AWS 说我的 ALB 不存在,即使在用名字查找它时它完成得很好......但是谢谢。
    • 您需要为 ALB 使用“TargetGroupArn”,负载均衡器名称为 Classic ELB。
    • 确实!现在工作正常 :) 感谢您的双重好答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2013-08-11
    相关资源
    最近更新 更多