【问题标题】:How can I get a unique count of resources from AWS Config Advanced query如何从 AWS Config Advanced 查询中获取资源的唯一计数
【发布时间】:2020-11-21 16:50:06
【问题描述】:

我编写了以下查询,试图列出我组织中的所有 IAM 用户。

SELECT
  arn,
  COUNT(*)
WHERE
  resourceType = 'AWS::IAM::User'
GROUP BY
  arn

当我在高级查询编辑器中针对我的帐户运行此查询时,我得到了该帐户的一个结果(如预期的那样)

输出

arn                                     COUNT(*)
arn:aws:iam::99999999:user/foo            1

当我选择我的Organization Aggregator 作为查询目标(描述为here)时,我会为每个 ARN 获得多个结果 - 这是不可能的。

输出:

arn                                     COUNT(*)
arn:aws:iam::99999999:user/foo            15
arn:aws:iam::99999998:user/foo            15
arn:aws:iam::99999997:user/bar            15

到目前为止,我最好的猜测是我查询的是“配置项”,而不是资源,所以我得到了多个结果。 Config 评估了 15 条规则,arn 字段是它评估的资源。

我正在尝试进行简单的库存查询,而 AWS 配置似乎没有任何类型的唯一运算符可以在我的 SQL 语法中使用...是否有更好的查询我应该运行,或者可能配置错误我的 AWS 配置环境?为什么 Config 多次返回同一个对象?

【问题讨论】:

    标签: amazon-web-services aws-config


    【解决方案1】:

    到目前为止,我最好的猜测是我查询的是“配置项”,而不是资源,所以我得到了多个结果。

    不,您的查询是正确的。 AWS::Config::ResourceCompliance 是您将用于查询合规性结果的 resourceType

    是否有更好的查询我应该运行,或者我的 AWS 配置环境配置错误?为什么 Config 多次返回同一个对象?

    你是偶然在 15 个地区录制的吗?如果是这样,您似乎是在每个区域而不是一个主要区域中记录全局资源(例如 IAM 用户)。

    您可以从 AWS Config Service 控制台页面进行检查:选择 Settings,然后选择 Edit,您应该会看到 Include global resources (e.g., AWS IAM resources) 的复选框。

    【讨论】:

      【解决方案2】:

      IAM User 与大多数 AWS IAM 资源一样,是一个全局资源,因此如果您为 15 个区域中记录的每个 Config 启用了Include global resources/includeGlobalResourceTypes 设置,那么同一个 IAM 将有 15 个配置项用户(每个区域一个)已记录并可在您的组织聚合器中查询。

      AWS Config 高级查询目前不支持 DISTINCT,并且 IAM 用户资源的 awsRegion 设置为 global,因此看起来没有办法过滤掉重复项。

      恐怕您唯一的选择是在除一个区域(例如us-east-1)之外的所有区域(例如us-east-1)中禁用配置记录器上的Include global resources/includeGlobalResourceTypes 设置,因此只为每个全局资源创建一个聚合配置项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-09
        • 2022-12-21
        • 2012-06-01
        • 2020-09-09
        • 2018-03-16
        • 2022-08-15
        • 1970-01-01
        • 2021-05-24
        相关资源
        最近更新 更多