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