我开始认为验证/资源查找中存在一个与"Type": "AWS::ElasticLoadBalancingV2::ListenerRule",
资源相关的根本缺陷。
具体来说,每次我尝试为已知的工作侦听器创建一个新的ListenerRule时,Cloudformation与
Unable to retrieve ListenerArn attribute for AWS::ElasticLoadBalancingV2::Listener, with error message One or more listeners not found (Service: ElasticLoadBalancingV2, Status Code: 400, Request ID: c6914f71-074c-4367-983a-bcf1d8fd1350, Extended Request ID: null)
经过测试,我可以通过硬编码模板中的ListenArn属性来使其工作,但这不是一个解决方案,因为模板用于具有不同资源的多个堆栈。
以下是模板的相关部分:
"WLBListenerHttp": {
"Type": "AWS::ElasticLoadBalancingV2::Listener",
"Properties": {
"DefaultActions": [{
"Type": "forward",
"TargetGroupArn": { "Ref": "WLBTargetGroupHttp" }
}],
"LoadBalancerArn": { "Ref": "WebLoadBalancer" },
"Port": 80,
"Protocol": "HTTP"
}
},
"ListenerRuleHttp": {
"DependsOn": "WLBListenerHttp",
"Type": "AWS::ElasticLoadBalancingV2::ListenerRule",
"Properties": {
"Actions": [{
"Type": "fixed-response",
"FixedResponseConfig": { "StatusCode": "200" }
}],
"Conditions": [{
"Field": "host-header",
"HostHeaderConfig": { "Values": ["domain*"] }
}, {
"Field": "path-pattern",
"PathPatternConfig": { "Values": ["/path/to/respond/to"] }
}],
"ListenerArn": { "Fn::GetAtt": ["WLBListenerHttp", "ListenerArn"] },
"Priority": 1
}
},
根据侦听器的文档,Fn::GetAtt或Ref都应该返回ListenerARN:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html
“当将此资源的逻辑ID传递给内部Ref函数时,Ref返回侦听器的(ARN)。
有关使用Ref函数的更多信息,请参见参考资料。
Fn::GetAtt Fn::GetAtt内在函数返回此类型的指定属性的值。以下是可用属性和示例返回值。
有关使用Fn::GetAtt内部函数的更多信息,请参见Fn::GetAtt。
ListenerArn侦听器的(ARN)。
我尝试过"ListenerArn": { "Fn::GetAtt": ["WLBListenerHttp", "ListenerArn"] },
和"ListenerArn": { "Ref": "WLBListenerHttp"},
,但都没有成功,导致了注意到的错误。如果我用完整的Arn硬编码Arn "ListenerArn": "arn::",
,它可以正常工作。
发布于 2022-02-21 10:46:23
事实证明,我的语法非常好。然而,我没有意识到的是,虽然存在WLBListenerHttp资源,但它实际上不是CloudFormation创建的ARN。显然,有人在没有告诉我们的情况下无意中删除了它,然后手工重新创建了它。这使得帐户处于中断状态,其中CloudFormation在创建侦听器时为侦听器记录了一个ARN,但是它确实不再有效,因为新资源有一个新的ARN。
解决方案是手动删除违规资源,然后在我们的CloudFormation模板中稍微更改它的名称,这样它就会创建一个新的资源。
https://stackoverflow.com/questions/71066657
复制相似问题