Amazon cloudformation “elb名称长度超过32”但仅为8
我试图使用AWS cloudformation创建一个包含ALB和ECS服务的堆栈,但我在AWS::ECS::service上得到一个create_失败,它的elb名称长于32 我不明白为什么ECS服务在ALB本身处于创建完成状态时抱怨ELB名称 以下是与我发送给cloudformation的ALB创建相关的JSON:Amazon cloudformation “elb名称长度超过32”但仅为8,amazon-cloudformation,amazon-ecs,Amazon Cloudformation,Amazon Ecs,我试图使用AWS cloudformation创建一个包含ALB和ECS服务的堆栈,但我在AWS::ECS::service上得到一个create_失败,它的elb名称长于32 我不明白为什么ECS服务在ALB本身处于创建完成状态时抱怨ELB名称 以下是与我发送给cloudformation的ALB创建相关的JSON: "loadBalancer" : { "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", "
"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个字符,所以我真的不明白这一点,你知道吗?当你这样做时,它会返回负载平衡器,而不是负载平衡器的名称。您需要使用GetAtt来获取负载平衡器名称
{ "Fn::GetAtt" : [ "loadBalancer", "LoadBalancerName" ] }
执行此操作时,它将返回负载平衡器ARN,而不是负载平衡器名称。您需要使用GetAtt来获取负载平衡器名称
{ "Fn::GetAtt" : [ "loadBalancer", "LoadBalancerName" ] }
仍然有一个错误,AWS说我的ALB不存在,即使它完成的很好,当寻找它的名字。。。但是谢谢你。你需要为ALB使用TargetGroupArn,负载平衡器的名字是为Classic ELB命名的。真的!现在效果很好:谢谢你的双重回答!仍然有一个错误,AWS说我的ALB不存在,即使它完成的很好,当寻找它的名字。。。但是谢谢你。你需要为ALB使用TargetGroupArn,负载平衡器的名字是为Classic ELB命名的。真的!现在效果很好:谢谢你的双重回答!