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

Ansible:如何从字典中移除指定前缀的键值对?

解决Ansible过滤EC2 Tags字典保留键值对的问题

你遇到的问题根源在于:直接对字典使用reject过滤器时,Ansible默认会迭代字典的键而非完整的键值对,所以最终只返回了符合条件的键名列表。要保留键值对并得到目标字典,需要借助格式转换类过滤器来实现:

正确的过滤器写法

"{{ get_ec2_id.instances[0].tags | dict2items | rejectattr('key', 'search', '^aws:cloudformation') | items2dict }}"

分步拆解逻辑

  • dict2items:把原始的tags字典转换成包含key和value字段的列表结构,比如:
    [
      {"key": "Name", "value": "test-db-system-2"},
      {"key": "aws:cloudformation:logical-id", "value": "DBInstance"},
      ...
    ]
    
  • rejectattr('key', 'search', '^aws:cloudformation'):过滤掉所有key以aws:cloudformation开头的项(^正则锚定符确保只匹配开头,避免误过滤其他带aws:前缀的非目标键)
  • items2dict:把过滤后的键值对列表重新转换回字典格式,这就是你想要的最终结果

预期输出验证

使用这个过滤器后,你会得到完全符合需求的字典:

"instances_tags": {
  "dbsystem:stack": "test-db-system-2",
  "dbsystem:type": "db",
  "Name" : "test-db-system-2"
}

如果你的需求是过滤所有以aws:开头的键,只需要把正则表达式改成^aws:即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:11:23