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

CloudCustodian筛选指定标签过期AMI关联EC2实例失败排查

解决CloudCustodian EC2实例筛选不匹配的问题

正确的策略代码

policies:
  - name: stop-old-special-ami-instances
    resource: ec2
    filters:
      # 筛选运行时长超过110天的实例
      - type: running-time
        days: 110
        op: ge
      # 筛选所用AMI带有指定标签的实例
      - type: jmespath
        query: "ImageId | aws.ec2.get_image(ImageId).Tags[?Key=='special-tag'].Value | [0] == 'special-value'"
    actions:
      - type: stop

重点说明

  • 运行时长筛选:直接用CloudCustodian内置的running-time过滤器即可,无需自行编写复杂的时间计算逻辑,既可靠又省心。
  • AMI标签筛选:核心逻辑是通过aws.ec2.get_image(ImageId)拉取实例关联的AMI详情,再用JMESPath定位标签值进行匹配。需要注意:
    • 执行CloudCustodian的角色必须拥有ec2:DescribeImages权限,否则无法获取AMI的标签信息。
    • JMESPath表达式中,Tags[?Key=='special-tag'].Value会返回匹配标签的数值数组,[0]用于提取第一个值(标签键具有唯一性),再与目标值special-value做比对。

常见排查方向

  • 别搞混筛选对象:要筛选的是AMI的标签,不是EC2实例自身的标签,之前如果错误地写了实例标签的筛选规则,肯定匹配不到目标实例。
  • 核对AMI标签:确认AMI的标签确实是special-tag: special-value,AWS标签默认大小写敏感,别输错字母大小写。
  • 验证实例运行时长:通过AWS控制台或执行aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId, LaunchTime]'命令,核对实例的启动时间是否确实超过110天。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:52:20