You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CLI的--query或--filters参数基于主机头筛选AWS负载均衡器的RuleArn

筛选ELBv2中特定主机头对应的RuleArn

当然可以实现!你不需要用到--filters参数(因为elbv2 describe-rules命令并不支持针对主机头的过滤器),但完全可以通过--query结合JMESPath表达式来精准筛选出目标RuleArn。

基础用法(精确匹配单个主机头)

假设你要找主机头为example.com的规则,直接用下面的命令:

aws elbv2 describe-rules --listener-arn arn:aws:elasticloadbalancing:eu-west-2:1234567890:listener/net/1234567890/1234567890/1234567890 \
  --query 'Rules[?Conditions[?Field==`host-header` && Values[0]==`example.com`]].RuleArn' \
  --output text

表达式拆解

让我解释下这个JMESPath的逻辑:

  • Rules[]:遍历返回的所有规则列表
  • ?Conditions[?Field==host-header && Values[0]==example.com]:筛选出满足两个条件的规则:
    1. 规则包含host-header类型的条件
    2. 该条件的第一个值(Values[0])正好是你指定的主机头
  • .RuleArn:最后提取符合条件规则的ARN

进阶用法(匹配多个主机头中的一个)

如果你的规则里配置了多个主机头值(比如同时包含example.com和www.example.com),可以用contains()函数来匹配包含目标值的规则:

aws elbv2 describe-rules --listener-arn <你的Listener ARN> \
  --query 'Rules[?Conditions[?Field==`host-header` && contains(Values, `example.com`)]].RuleArn' \
  --output text

注意事项

  • 主机头的匹配是精确匹配,要确保你输入的主机头和规则中配置的完全一致(包括大小写、前缀/后缀,比如Example.com和example.com会被视为不同值)
  • 如果没有匹配到任何规则,命令会返回空结果,这时候可以先去掉--query参数查看所有规则的完整结构,确认条件配置是否符合预期

内容的提问来源于stack exchange,提问作者Hammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:32:45