如何解决 AWS Config 高级查询限制的错误?

上次更新时间:2021 年 2 月 2 日

如何使用汇总资源或账户资源来解决 AWS Config 高级查询限制的错误?

解决方法

通过高级查询,为您的用例使用以下解决方法。

注意:您必须拥有 SelectResourceConfig 和 SelectAggregateResourceConfig API 的权限才能使用高级查询。有关详细信息,请参阅使用 SQL 编辑器(控制台)进行查询。

Amazon EC2 实例操作系统版本

高级查询无法获取所有 AWS 区域中在 Amazon 弹性计算云 (Amazon EC2) 实例中运行的所有操作系统的列表。要查看操作系统,请参阅如何找到我的 EC2 实例正在使用的操作系统平台或版本?

SQL 空值

高级查询不支持 SQL 空值,您必须明确包含值。

您可以检索 Amazon EC2 实例的列表,其公有 IP 地址与 SQL BETWEEN 运算符的使用相关联,类似于以下内容:

SELECT
  accountId,
  resourceId,
  configuration.publicDnsName,
  configuration.publicIpAddress
WHERE
  resourceType = 'AWS::EC2::Instance'
  AND (
    configuration.publicIpAddress BETWEEN '0.0.0.0'
    AND '255.255.255.255'
    OR configuration.ipv6Addresses BETWEEN '0:0:0:0:0:0:0:0'
    AND 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'
  )
嵌套数组查询

高级查询不支持嵌套数组查询。有关详细信息,请参阅高级查询限制。

1.作为解决方法,您可以使用类似于以下内容的自定义查询:

SELECT
  configuration.targetResourceId,
  configuration.targetResourceType,
  configuration.complianceType,
  configuration.configRuleList
WHERE
  configuration.complianceType = 'NON_COMPLIANT'
  AND configuration.configRuleList.configRuleName = 'required-tags'

2.然后,按照说明将输出导出为 JSON。

然后,您可以使用命令行 JSON 处理器 jq 来筛选和查询嵌套数组。有关更多信息和下载 jq,请参阅 JSON 输出格式。