我想解决在 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 调用 CreateRule、ModifyRule 或 DescribeRules。在 CloudTrail 日志中发现的错误提供了有关 CloudFormation 未能创建或更新侦听器规则的原因的更多详细信息。
相关信息
AWS Elastic Load Balancing V2 的操作、资源和条件键
应用程序负载均衡器的配额
规则条件类型