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

1 分钟阅读
0

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

解决方法

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

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

Amazon EC2 实例操作系统版本

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

查询已删除的资源

您不能对已删除的资源使用高级查询。要查找已删除的资源,请参阅查找 AWS Config 发现的资源

Amazon S3 查询

如果公共访问被阻止,高级查询将无法获取 Amazon Simple Storage Service (Amazon S3) 存储桶的结果。这是因为 AWS Config 资源类型 AWS::S3::AccountPublicAccessBlock 只有在账户级别启用了 Amazon S3 阻止公有访问时才会返回结果。您可以使用 SQL 查询使用类似以下内容的查询返回 S3 存储桶的名称和属性:

SELECT
  resourceId,
  resourceType,
  configuration,
  supplementaryConfiguration
WHERE
  resourceType = 'AWS::S3::Bucket'

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 输出格式


相关信息

AWS Config 推出保存高级查询的功能

查询 AWS 资源的当前配置状态

AWS 官方
AWS 官方已更新 3 年前