AWS::ElasticLoadBalancingV2::ListenerRule校验异常CloudFormation部署失败排查
你遇到的报错是因为模板中存在两处AWS资源属性互斥的配置,常规linter仅做基础语法校验,不会覆盖AWS资源专属的配置规范校验,因此没有提前识别到问题:
问题1:转发动作配置重复冲突
AWS::ElasticLoadBalancingV2::Listener和AWS::ElasticLoadBalancingV2::ListenerRule的forward类型动作中,TargetGroupArn是单目标组转发的简化配置项,和用于多目标组/粘性配置的ForwardConfig为互斥属性,不能同时声明。你的两个资源的Action配置中同时写了这两项,触发校验失败。
问题2:路径匹配规则配置重复冲突
ListenerRule的path-pattern类型条件中,顶层的Values属于旧版本废弃写法,和规范配置PathPatternConfig.Values不能同时声明,你两处都定义了Values,属于重复无效配置。
修正后的模板片段
修正HttpsListener的DefaultActions配置
DefaultActions: - Type: forward ForwardConfig: TargetGroupStickinessConfig: Enabled: false TargetGroups: - TargetGroupArn: !FindInMap [EnvMap, !Ref Env, LoadBalancerDefaultTargetArn] Weight: 1 # 移除原有多余的TargetGroupArn配置
修正HttpsListenerRule的配置
Properties: Actions: - Type: forward ForwardConfig: TargetGroupStickinessConfig: Enabled: false TargetGroups: - TargetGroupArn: !FindInMap [EnvMap, !Ref Env, LoadBalancerRouteTargetArn] Weight: 1 # 移除原有多余的TargetGroupArn配置 Conditions: - Field: path-pattern PathPatternConfig: Values: - /* # 移除原有顶层多余的Values配置 ListenerArn: !Ref HttpsListener Priority: 50000
额外注意
ALB监听器规则的优先级合法范围为1-50000,你当前配置的50000为上限值,确保同监听器下没有其他规则占用相同优先级即可。
内容的提问来源于stack exchange,提问作者twinlakes
相关产品推荐
相关产品推荐

