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

1 分钟阅读
0

我想使用聚合资源或账户资源解决 AWS Config 高级查询限制的错误。

解决方法

请在高级查询的用例中采用以下解决方法。

**注意:**您必须拥有 SelectResourceConfigSelectAggregateResourceConfig API 的权限才能使用高级查询。有关更多信息,请参阅 Query using the SQL query editor (Console)

Amazon EC2 实例操作系统版本

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

已删除的资源

您不能对已删除的资源使用高级查询。这是因为高级查询只能获取当前配置。要查找已删除的资源,请参阅查 Looking up resources that are discovered by 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 空值——必须明确包含值。您可以检索其公有 IP 地址与使用 SQL BETWEEN 运算符关联的 Amazon EC2 实例列表,如下所示:

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'
  )

嵌套数组查询

高级查询不支持嵌套数组查询。有关更多信息,请参阅Limitations

  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 output format

相关信息

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

Querying the current configuration state of AWS resources

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