gpt4 book ai didi

amazon-web-services - 如何使用 CloudFormation 成功检索 ALB ListenerArn 以设置 ListenerRules?

转载 作者:行者123 更新时间:2023-12-03 07:22:47 29 4
gpt4 key购买 nike

我开始认为 AWS Cloudformation 模板验证/资源查找中存在与 "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 将返回监听器的 Amazon 资源名称 (ARN)。

有关使用 Ref 函数的更多信息,请参阅 Ref。

Fn::GetAttFn::GetAtt 内部函数返回此类型的指定属性的值。以下是可用的属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt。

监听器Arn监听器的 Amazon 资源名称 (ARN)。”

我已经尝试过 "ListenerArn": { "Fn::GetAtt": ["WLBListenerHttp", "ListenerArn"] },"ListenerArn": { "Ref": "WLBListenerHttp"}, 没有成功,导致出现错误。如果我使用完整的 Arn 对 Arn "ListenerArn": "arn::", 进行硬编码,则效果很好。

最佳答案

事实证明,我的语法完全没问题。然而,我没有意识到,虽然 WLBListenerHttp 资源存在,但它实际上与 CloudFormation 创建的 ARN 并不相同。显然,有人在没有告诉我们的情况下无意中删除了它,然后手动重新创建了它。这使得该帐户处于损坏状态,其中 CloudFormation 在创建时为监听器记录了一个 ARN,但由于新资源具有新的 ARN,因此它确实不再有效。

解决方案是手动删除有问题的资源,然后在我们的 CloudFormation 模板中稍微更改其名称,以便创建一个新资源。

关于amazon-web-services - 如何使用 CloudFormation 成功检索 ALB ListenerArn 以设置 ListenerRules?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71066657/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com