首页 > 解决方案 > 如何在侦听器规则上创建多个条件

问题描述

我正在尝试创建具有两种不同条件的侦听器规则,但我一直都出错。

    "ListenerRule": {
      "Type": "AWS::ElasticLoadBalancingV2::ListenerRule",
      "Properties": {
          "Actions": [
                    {
                     "Type": "forward",
                     "TargetGroupArn": {
                     "Ref": "SwaggBOTG"
                    }
            }
           ],
       "Conditions": [
                    {
                        "Field": "query-string",
                        "QueryStringConfig": {
                            "Values": [
                                {
                                    "Key": "app",
                                    "Value": "two"
                                }
                            ]
                        },
                        "Field" : "path-pattern",
                        "PathPatternConfig": {
                            "Values" : [ "/one/*" ]
                        }
                    }
        ],

我需要两种不同的条件。其中一个应该是查询字符串类型,另一个应该是路径路径类型。我只能创建其中一个,但我无法同时创建两者。

错误是下一个:

You cannot specify 'QueryStringConfig' for actions of type 'path-pattern' (Service: AmazonElasticLoadBalancingV2; Status Code: 400; Error Code: ValidationError;

我认为这是语法的问题,但我没有发现问题..

提前致谢。

标签: amazon-web-servicesamazon-cloudformationaws-load-balancer

解决方案


问题是这Conditions是一个单独条件的列表。在您的情况下,该列表中应该有 2 个单独的项目。如果您仔细查看您的 json,您会发现您Field在同一级别定义了两次。第二个"Field" : "path-pattern"覆盖第一个"Field": "query-string",因此错误告诉您不能仅仅因为您不能这样做而定义'QueryStringConfig'"PathPatternConfig"

这是 的正确定义Conditions

"Conditions": [
    {
        "Field": "path-pattern",
        "PathPatternConfig": {
            "Values": ["/one/*"]
        }
    },
    {
        "Field": "query-string",
        "QueryStringConfig": {
            "Values": [
                {
                    "Value": "two",
                    "Key": "app"
                }
            ]
        }
    }
]

推荐阅读