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

如何在Cloud Custodian策略中获取AWS ECS的隐藏settings字段?

解决Cloud Custodian筛选启用Container Insights的ECS集群问题

问题根源

Cloud Custodian默认调用AWS ECS的describe-clusters接口时,不会携带--include SETTINGS参数,因此返回的集群数据中缺少settings字段——这就是你执行无筛选器策略后resources.json里看不到containerInsights相关内容,且筛选器返回count:0的核心原因。

解决方案

需要两步配置:首先让Cloud Custodian拉取集群的settings数据,然后配置正确的筛选器匹配Container Insights的启用状态。

正确的策略配置

policies:
  - name: ecs-cluster-container-insights-enabled
    resource: aws.ecs
    resource-options:
      include: ["SETTINGS"]  # 对应CLI的--include SETTINGS,拉取settings字段
    filters:
      - type: value
        key: 'settings[] | select(.name == "containerInsights").value'
        op: eq
        value: "enabled"

配置说明

  1. resource-options.include:通过这个参数告诉Cloud Custodian在调用describe-clusters时携带include=SETTINGS,这样返回的集群数据中就会包含settings数组,每个元素包含配置项的name和value。
  2. 筛选器key路径:使用jq表达式settings[] | select(.name == "containerInsights").value,从settings数组中筛选出名称为containerInsights的配置项,然后取它的value值,再判断是否等于enabled。

验证方法

执行策略后,查看生成的resources.json,确认每个集群条目下存在settings字段;同时策略的count应该会正确统计启用了Container Insights的集群数量。

为什么之前的筛选器无效?

  • 没有配置resource-options.include,导致Cloud Custodian根本没拉取settings字段,筛选器找不到对应数据。
  • 之前的key路径settings[].name.containerInsights错误:settings数组的每个元素的name是字符串(比如containerInsights),不是嵌套对象,所以这个路径无法定位到目标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:03:12