跳至内容

如何解决 AWS CloudFormation 错误“Invalid request provided AWS ElasticLoadBalancingV2 ListenerRule Validation exception(提供的请求无效 AWS ElasticLoadBalancingV2 ListenerRule 验证异常)”?

1 分钟阅读
0

我想解决在 AWS CloudFormation 中使用资源 AWS::ElasticLoadBalancingV2::ListenerRule 创建或更新堆栈时收到的错误。

简短描述

此错误可能是由于:

  • 无效的侦听器 Amazon 资源名称 (ARN)
  • AWS Identity and Access Management (AWS IAM) 权限缺失或不足
  • 超出规则配额的条件值
  • 使用不允许的字符作为条件的字段值

解决方法

以下部分解决了一些常见错误。

无效的侦听器 Amazon 资源名称 (ARN)

检查侦听器 ARN 格式是否错误。资源 AWS::ElasticLoadBalancingV2::ListenerRule 已附加到附加到弹性负载均衡器的侦听器资源。确保将正确的侦听器 ARN 传递给侦听器 ARN 属性。

侦听器 ARN 的格式示例:

arn:aws:elasticloadbalancing:us-east-2:123456789012:listener/app/Application-Load-Balancer/0b761fa41d0fbe95/9e86778540dfe57b

IAM 权限缺失或不足

确保 CloudFormation 服务角色或创建堆栈的用户拥有所需的权限。下面列出的权限允许服务角色或用户成功创建或修改侦听器规则。

  • elasticloadbalancing:DescribeRules
  • elasticloadbalancing:CreateRule
  • elasticloadbalancing:ModifyRule

Condition values exceed quotas for rule (EDIT)

侦听器规则每条规则只能有五个条件值。如果指定条件要求超过五个值,则无法调整此配额。

使用不允许的字符作为条件的字段值

对于侦听器规则条件,Field 属性仅允许使用以下字符:

如果 Field 为主机标头并且您没有使用 HostHeaderConfig,请指定一个主机名(例如 my.example.com)。主机名不区分大小写,长度最多可达 128 个字符。有关详细信息,请参阅应用程序负载均衡器的监听器中的主机条件

当您指定使用 HostHeaderConfig 的多个主机名时,该属性只能使用允许模式中的字符。

如果 Field路径模式并且您没有使用 PathPatternConfig,请指定一个路径模式(例如 /img/)。路径模式区分大小写,长度最多可达 128 个字符。有关详细信息,请参阅应用程序负载均衡器的监听器中的路径****条件

当您使用 PathPatternConfig 指定多个路径模式时,该属性只能使用允许模式中的字符。

请参阅以下示例。如果该字段为主机标头并且传递给它的值不是主机标头的允许值,则会收到 ValidationException 错误。在下面的示例中,/dev 不是主机标头的允许值。对 / 使用字段类型路径模式。

      Conditions:  
        - Field: host-header  
          Values:  
            - "admin-test.com/dev”     

验证 AWS CloudTrail

如果之前的选项都不起作用,请检查堆栈创建期间调用的 API 调用 CreateRuleModifyRuleDescribeRules。在 CloudTrail 日志中发现的错误提供了有关 CloudFormation 未能创建或更新侦听器规则的原因的更多详细信息。

相关信息

AWS Elastic Load Balancing V2 的操作、资源和条件键

应用程序负载均衡器的配额

规则条件类型

AWS 官方已更新 2 年前