我正在尝试创建一个具有两个不同条件的侦听器规则,我一直都会出现错误。
"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;
我认为这是语法,但我没有发现问题。
预先感谢。
问题是 Conditions
是单独条件的列表。在您的情况下,该列表中应该有2个单独的项目。如果您仔细观察JSON,则可以看到您在同一级别上两次定义Field
。第二个"Field" : "path-pattern"
覆盖了第一个"Field": "query-string"
,因此,错误告诉您,您不能仅仅因为无法做到这一点而为"PathPatternConfig"
定义'QueryStringConfig'
。
这是Conditions
的正确定义。
"Conditions": [
{
"Field": "path-pattern",
"PathPatternConfig": {
"Values": ["/one/*"]
}
},
{
"Field": "query-string",
"QueryStringConfig": {
"Values": [
{
"Value": "two",
"Key": "app"
}
]
}
}
]