如何解决Cloudformation:ELB 侦听器规则创建失败,并显示“提供的请求无效”
我正在尝试建立一个由应用程序负载均衡器、目标组和 ECS 服务组成的小型 Cloudformation 堆栈。但是,堆栈无法创建 WidgetsServiceLbListenerRule
资源并显示以下错误:
"Invalid request provided: AWS::ElasticLoadBalancingV2::ListenerRule Validation exception" (RequestToken: 98057bbb-ad4f-5f09-3e89-cc6b645c6e7f,HandlerErrorCode: InvalidRequest)
为什么无法创建侦听器规则?
这是相关的堆栈代码:
Resources:
# The load balancer
Lb:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: !Join ['',[!Ref Env,'-rest-api-lb-rev',!Ref Rev]]
Scheme: internet-facing
SecurityGroups:
- !Ref LbSg
subnets:
- Fn::ImportValue: !Sub "${VpcStackName}-Pubsubnet1Id"
- Fn::ImportValue: !Sub "${VpcStackName}-Pubsubnet2Id"
- Fn::ImportValue: !Sub "${VpcStackName}-Pubsubnet3Id"
Type: application
LbListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
DefaultActions:
- Type: fixed-response
FixedResponseConfig:
ContentType: text/plain
MessageBody: The specified route doesn't exist
StatusCode: 404
LoadBalancerArn: !Ref Lb
Port: 80
Protocol: HTTP
# Widgets service
WidgetsServiceLbTargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
HealthCheckPath: /actuator/health
Name: !Join ['','-widgets-rev',!Ref Rev]]
Port: 80
Protocol: HTTP
VpcId:
Fn::ImportValue: !Sub "${VpcStackName}-VpcId"
# THIS ONE FAILS TO CREATE
WidgetsServiceLbListenerRule:
Type: AWS::ElasticLoadBalancingV2::ListenerRule
Properties:
Actions:
- Type: forward
TargetGroupArn: !Ref WidgetsServiceLbTargetGroup
Conditions:
- Field: path-pattern
Values:
- '/widgets*'
ListenerArn: Ref !LbListener
Priority: 1
<ECS service and other assets omitted for brevity>
更多信息
- 我们的 AWS 账户中有几个使用几乎完全相同代码的现有堆栈。这些和这个之间没有任何有意义的区别,它们运行良好。
- 我创建了一个没有
WidgetsServiceLbListenerRule
的堆栈,然后尝试将其作为更改集重新添加。这也产生了同样的错误。 - 我能够使用以下 AWS CLI 命令成功创建规则:
aws --profile clexp elbv2 create-rule --listener-arn <arn> --priority 1 --conditions file://conditions.json --actions file://actions.json
conditions.json:
[{"Type": "forward","TargetGroupArn": "<arn>"}]
actions.json:
[{"Field": "path-pattern","Values": ["/widgets*"]}]
非常感谢任何帮助。
解决方法
代替:
ListenerArn: Ref !LbListener
应该是:
ListenerArn: !Ref LbListener
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。