查询 AWS 资源的当前配置状态 - AWS Config
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

您可以使用 AWS Config 基于单个账户和区域的配置属性或跨多个账户和区域的配置属性来查询 AWS 资源的当前配置状态。您可以针对 AWS Config 支持的所有资源中的当前 AWS 资源状态元数据执行基于属性的临时查询。高级查询功能提供了单一查询终端节点和强大的查询语言以获得当前资源状态元数据,而无需执行特定于服务的描述 API 调用。您可以使用配置聚合器跨多个账户和 AWS 区域从中央账户运行相同的查询。

AWS Config 使用结构化查询语言 (SQL) SELECT 语法的一部分来对当前配置项 (CI) 数据执行基于属性的查询和聚合。查询的复杂程度不同,既可以是简单的标签和/或资源标识符匹配,也可以是更复杂的查询,例如查看禁用了版本控制所有 Amazon S3 存储桶。这样,您就可以精确地查询您所需的当前资源状态,而无需执行特定于 AWS 服务的 API 调用。

您可以使用高级查询来实现:

  • 清单管理;例如,检索特定大小的 Amazon EC2 实例的列表。

  • 安全和运营智能;例如,检索已启用或禁用特定配置属性的资源的列表。

  • 成本优化;例如,确定未挂载到任何 EC2 实例的 Amazon EBS 卷的列表。

Features

查询语言支持基于 AWS Config 支持的所有 AWS 资源类型的 CI 属性查询 AWS 资源,包括配置数据、标签和关系。它是 SQL SELECT 命令的一个子集,带有一些限制,如下一节中所述。它支持聚合函数,例如 AVGCOUNTMAXMINSUM

Limitations

作为 SQL SELECT 的一个子集,查询语法有以下限制:

  • 不支持在查询中使用 ALLASDISTINCTFROMHAVINGJOINUNION 关键字。

  • 在针对对象数组中的多个属性进行查询时,将针对所有数组元素计算匹配项。例如,对于具有规则 A 和 B 的资源 R,资源符合规则 A,但不符合规则 B。资源 R 存储为:

    { configRuleList: [ { configRuleName: 'A', complianceType: 'compliant' }, { configRuleName: 'B', complianceType: 'non_compliant' } ] }

    此查询将返回 R:

    SELECT configuration WHERE configuration.configRuleList.complianceType = 'non_compliant' AND configuration.configRuleList.configRuleName = 'A'

    第一个条件 configuration.configRuleList.complianceType = 'non_compliant' 应用于 R.configRuleList 中的 ALL 元素,因为 R 的规则(规则 B)的 complianceType 为“non_compliant”,所以条件的计算结果为 true。第二个条件 configuration.configRuleList.configRuleName 将应用于 R.configRuleList 中的 ALL 元素,因为 R 具有 configRuleName = 'A' 的规则(规则 A),所以条件的计算结果将为 true。由于两种条件均为 true,将返回 R。

    configuration.configRuleList.complianceType = 'non_compliant' 应用于 R.configRuleList 中的 ALL 元素,因为 R 的规则(规则 B)的 complianceType 为“non_compliant”,所以条件的计算结果为 true。第二个条件 configuration.configRuleList.configRuleName 将应用于 R.configRuleList 中的 ALL 元素,因为 R 具有 configRuleName = 'A' 的规则(规则 A),所以条件的计算结果将为 true。由于两种条件均为 true,将返回 R。

    应用于 R.configRuleList 中的 ALL 元素,因为 R 的规则(规则 B)的 complianceType 为“non_compliant”,所以条件的计算结果为 true。第二个条件 configuration.configRuleList.configRuleName 将应用于 R.configRuleList 中的 ALL 元素,因为 R 具有 configRuleName = 'A' 的规则(规则 A),所以条件的计算结果将为 true。由于两种条件均为 true,将返回 R。

    configuration.configRuleList.configRuleName 将应用于 R.configRuleList 中的 ALL 元素,因为 R 具有 configRuleName = 'A' 的规则(规则 A),所以条件的计算结果将为 true。由于两种条件均为 true,将返回 R。

    将应用于 R.configRuleList 中的 ALL 元素,因为 R 具有 configRuleName = 'A' 的规则(规则 A),所以条件的计算结果将为 true。由于两种条件均为 true,将返回 R。

  • 针对所有列的 SELECT 简写形式(也就是 SELECT *)将仅选择 CI 的顶级标量属性。返回的标量属性为 accountIdawsRegionarnavailabilityZoneconfigurationItemCaptureTimeresourceCreationTimeresourceIdresourceNameresourceTypeversion

  • 通配符限制:

    • 通配符仅支持属性值,但不支持属性键(例如支持 ...WHERE someKey LIKE 'someValue%',但不支持 ...WHERE 'someKey%' LIKE 'someValue%')。

    • 仅支持后缀通配符(例如,支持 ...LIKE 'AWS::EC2::%',但不支持 ...LIKE '%::EC2::Instance')。

    • 通配符匹配项的长度必须至少为 3 个字符(例如,不允许 ...LIKE 'ab%',但允许 ...LIKE 'abc%'

  • 聚合限制:

    • 聚合中的 GROUP BY 子句可能仅包含一个属性。

    • 聚合函数仅可接受一个参数或属性。

    • 聚合函数无法采用其他函数作为参数。

    • 对聚合查询不支持分页;最多返回 500 条结果。

    • 不支持聚合中的 HAVING 子句。

区域支持

以下区域支持高级查询:

区域名称 区域 终端节点 协议
中东(巴林) me-south-1 config.me-south-1.amazonaws.com HTTPS
亚太地区(香港) ap-east-1 config.ap-east-1.amazonaws.com HTTPS
亚太地区(孟买) ap-south-1 config.ap-south-1.amazonaws.com HTTPS
亚太区域(首尔) ap-northeast-2 config.ap-northeast-2.amazonaws.com HTTPS
亚太区域(新加坡) ap-southeast-1 config.ap-southeast-1.amazonaws.com HTTPS
亚太区域(悉尼) ap-southeast-2 config.ap-southeast-2.amazonaws.com HTTPS
亚太区域(东京) ap-northeast-1 config.ap-northeast-1.amazonaws.com HTTPS
AWS GovCloud(美国东部)* us-gov-east-1 config.us-gov-east-1.amazonaws.com HTTPS
AWS GovCloud (US-West)* us-gov-west-1 config.us-gov-west-1.amazonaws.com HTTPS
加拿大 (中部) ca-central-1 config.ca-central-1.amazonaws.com HTTPS
欧洲(法兰克福) eu-central-1 config.eu-central-1.amazonaws.com HTTPS
欧洲(爱尔兰) eu-west-1 config.eu-west-1.amazonaws.com HTTPS
欧洲(伦敦) eu-west-2 config.eu-west-2.amazonaws.com HTTPS
欧洲(巴黎) eu-west-3 config.eu-west-3.amazonaws.com HTTPS
欧洲(斯德哥尔摩) eu-north-1 config.eu-north-1.amazonaws.com HTTPS
南美洲(圣保罗) sa-east-1 config.sa-east-1.amazonaws.com HTTPS
美国东部(弗吉尼亚北部) us-east-1 config.us-east-1.amazonaws.com HTTPS
美国东部(俄亥俄州) us-east-2 config.us-east-2.amazonaws.com HTTPS
美国西部(加利福尼亚北部) us-west-1 config.us-west-1.amazonaws.com HTTPS
美国西部(俄勒冈) us-west-2 config.us-west-2.amazonaws.com HTTPS

*保存的查询在 AWS GovCloud(美国东部) 和 AWS GovCloud (US-West) 区域中不可用。