CloudFormation部署ALB监听器规则报优先级占用报错排查
部署AWS CloudFormation资源时收到初始报错:Error ListenerRule with identifier Priority 10 is currently in use on listener with 9 rules currently
复现验证
使用如下最小测试CloudFormation模板复现问题:
AWSTemplateFormatVersion: 2010-09-09 Description: Test template Resources: TestTargetGroupListener: Type: AWS::ElasticLoadBalancingV2::ListenerRule Properties: Actions: - Type: fixed-response FixedResponseConfig: ContentType: text/plain MessageBody: It works StatusCode: 200 Conditions: - Field: host-header HostHeaderConfig: Values: - example.com ListenerArn: arn:aws:elasticloadbalancing:eu-west-1:<accountid>:listener/app/<alb name>/xxx/xxx Priority: 10
部署该模板时返回的完整报错信息如下:
Resource of type 'AWS::ElasticLoadBalancingV2::ListenerRule' with identifier 'Priority '10' is currently in use (Service: ElasticLoadBalancingV2, Status Code: 400, Request ID: ..., Extended Request ID: null)' already exists." (RequestToken: ..., HandlerErrorCode: AlreadyExists)
初步排查结果
- 核查对应监听器配置,确认当前共有9条自定义规则,外加1条默认兜底规则
- 先后尝试将Priority参数设置为9(验证是否为0起始计数规则)、11(验证默认规则是否占用优先级编号),所有尝试的优先级均返回相同的占用报错
- 当时监听器规则的控制台展示情况如下:

- 此前曾在同一监听器上使用结构类似的模板部署,未出现任何异常,无法定位问题触发原因
问题进展
将监听器规则优先级设置为4时部署意外成功,部署后该规则在控制台的规则列表中显示为第2位。该可用优先级是在AWS Web控制台创建挂载到同一监听器的ECS服务时,遇到相同的优先级选择报错后,通过控制台快速试错找到的,当时未明确问题触发逻辑,也没有找到这类错误的标准诊断方法。
后续更新
新版AWS控制台除了此前仅展示的规则排序序号外,已新增显示规则的实际优先级数值,该显示差异导致的误判问题已不会再对用户造成困扰。
内容的提问来源于stack exchange,提问作者apokryfos

