使用 Amazon Config 查询 Amazon 资源的当前配置状态
| 隆重推出适用于高级查询的预览版功能,它可让您利用生成式人工智能(生成式 AI)功能,用通俗易懂的英语输入提示,并将其转换为即用型查询格式。有关更多信息,请参阅适用于高级查询的自然语言查询处理器。 |
您可以使用 Amazon Config 基于单个账户和区域的配置属性或跨多个账户和区域的配置属性来查询 Amazon 资源的当前配置状态。您可以针对 Amazon Config 支持的资源列表中的当前 Amazon 资源状态元数据执行基于属性的查询。有关支持的资源类型列表的更多信息,请参阅支持的高级查询资源类型
高级查询提供了单一查询终端节点和查询语言以获得当前资源状态元数据,而无需执行特定于服务的描述 API 调用。您可以使用配置聚合器跨多个账户和 Amazon 区域从中央账户运行相同的查询。
特征
Amazon Config 使用结构化查询语言(SQL)SELECT 语法的一部分来对当前配置项(CI)数据执行基于属性的查询和聚合。查询的复杂程度不同,既可以是标签和/或资源标识符匹配,也可以是更复杂的查询,例如查看禁用了版本控制所有 Amazon S3 存储桶。这样,您就可以精确地查询您所需的当前资源状态,而无需执行特定于 Amazon 服务的 API 调用。
它支持聚合函数,例如、AVGCOUNT、MAX、MIN 和 SUM。
您可以使用高级查询来实现:
-
清单管理;例如,检索特定大小的 Amazon EC2 实例的列表。
-
安全和运营智能;例如,检索已启用或禁用特定配置属性的资源的列表。
-
成本优化;例如,确定未附加到任何 EC2 实例的 Amazon EBS 卷的列表。
-
合规性数据;例如,检索所有合规包及其合规性状态的列表。
有关如何使用 Amazon SQL 查询语言的信息,请参阅什么是 SQL(结构化查询语言)?
限制
注意
高级查询不支持查询尚未配置为由配置记录器记录的资源。当发现资源但未配置为由配置记录器记录时,Amazon Config 将创建 configurationItemStatus 为 ResourceNotRecorded 的配置项(CI)。虽然聚合器会聚合这些 CI,但高级查询不支持查询具有 ResourceNotRecorded 的 CI。更新您的记录器设置以启用记录要查询的资源类型。
作为 SQL SELECT 的一个子集,查询语法有以下限制:
-
查询中不支持、
ALLAS、DISTINCT、FROM、HAVING、JOIN和UNION关键字。不支持NULL值查询。 -
不支持在查询中使用复杂
CASE语句来直接创建优先级字段。 -
不支持查询第三方资源。使用高级查询检索的第三方资源的配置字段将设置为。
NULL -
不支持使用 SQL 查询解包嵌套结构(例如标签)。
-
不支持查询已删除资源。要发现已删除的资源,请参阅查找 Amazon Config 发现的资源。
-
针对所有列的
SELECT简写形式(也就是SELECT *)将仅选择 CI 的顶级标量属性。返回的标量属性为、accountIdawsRegion、arn、availabilityZone、configurationItemCaptureTime、resourceCreationTime、resourceId、resourceName、resourceType和version。 -
通配符限制:
-
通配符仅支持属性值,但不支持属性键(例如支持,
...WHERE someKey LIKE 'someValue%'但不支持...WHERE 'someKey%' LIKE 'someValue%')。 -
仅支持后缀通配符(例如,支持
...LIKE 'AWS::EC2::%'和,...LIKE 'AWS::EC2::_'但不支持...LIKE '%::EC2::Instance'和...LIKE '_::EC2::Instance')。 -
通配符匹配项的长度必须至少为 3 个字符(例如,不允许
...LIKE 'ab%'和,...LIKE 'ab_'但允许...LIKE 'abc%'和...LIKE 'abc_')。
注意
“
_”(单下划线)也被视为通配符。 -
-
聚合限制:
-
聚合函数仅可接受一个参数或属性。
-
聚合函数无法采用其他函数作为参数。
-
带有引用聚合函数的
ORDER BY子句的GROUP BY只能包含一个属性。 -
对于所有其他聚合,
GROUP BY子句最多可以包含三个属性。 -
除
ORDER BY子句具有聚合函数外,所有聚合查询都支持分页。例如,如果Y是聚合函数,则GROUP BY X, ORDER BY Y不起作用。 -
不支持聚合中的
HAVING子句。
-
-
不匹配的标识符限制:
不匹配的标识符是拼写相同但大小写不同(大写和小写)的属性。高级查询不支持处理包含不匹配标识符的查询。例如:
-
两个拼写完全相同但大小写不同的属性(
configuration.dbclusterIdentifier和configuration.dBClusterIdentifier)。 -
两个属性,其中一个属性是另一个属性的子集,并且它们的大小写不同(
configuration.ipAddress和configuration.ipaddressPermissions)。
-
高级查询的 CIDR 表示法/IP 范围行为
CIDR 表示法将转换为 IP 范围以供搜索。
这意味着,"=" 和 "BETWEEN" 会搜索任何包含所提供的 IP 的范围,而不是精确的范围。
要搜索精确的 IP 范围,您需要添加其他条件以排除该范围之外的 IP。
例 搜索确切的 CIDR 块 10.0.0.0/24
SELECT * WHERE resourceType = 'AWS::EC2::SecurityGroup' AND configuration.ipPermissions.ipRanges BETWEEN '10.0.0.0' AND '10.0.0.255' AND NOT configuration.ipPermissions.ipRanges < '10.0.0.0' AND NOT configuration.ipPermissions.ipRanges > '10.0.0.255'
例 搜索确切的 IP 地址 192.168.0.2/32
SELECT * WHERE resourceType = 'AWS::EC2::SecurityGroup' AND configuration.ipPermissions.ipRanges = '192.168.0.2' AND NOT configuration.ipPermissions.ipRanges > '192.168.0.2' AND NOT configuration.ipPermissions.ipRanges < '192.168.0.2'
数组中的多个属性在高级查询中的表现
当针对对象数组内的多个属性执行查询时,将针对所有数组元素计算匹配项。
例如,对于具有规则 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 中的所有元素,因为 R 有一条 complianceType = 'non_compliant' 的规则(规则 B),因此该条件被评估为 True。
第二个条件 configuration.configRuleList.configRuleName 适用于 R.configRuleList 中的所有元素,因为 R 有一条 configRuleName = 'A' 的规则(规则 A),因此该条件被评估为 True。由于两个条件均为 True,因此将返回 R。
区域支持
以下区域支持高级查询:
| 区域名称 | 区域 | 端点 | 协议 |
|---|---|---|---|
| 美国东部(俄亥俄州) | us-east-2 | config.us-east-2.amazonaws.com | HTTPS |
| 美国东部(弗吉尼亚州北部) | us-east-1 | config.us-east-1.amazonaws.com | HTTPS |
| 美国西部(加利福尼亚北部) | us-west-1 | config.us-west-1.amazonaws.com | HTTPS |
| 美国西部(俄勒冈州) | us-west-2 | config.us-west-2.amazonaws.com | HTTPS |
| 非洲(开普敦) | af-south-1 | config.af-south-1.amazonaws.com | HTTPS |
| 亚太地区(香港) | ap-east-1 | config.ap-east-1.amazonaws.com | HTTPS |
| 亚太地区(海得拉巴) | ap-south-2 | config.ap-south-2.amazonaws.com | HTTPS |
| 亚太地区(雅加达) | ap-southeast-3 | config.ap-southeast-3.amazonaws.com | HTTPS |
| 亚太地区(马来西亚) | ap-southeast-5 | config.ap-southeast-5.amazonaws.com | HTTPS |
| 亚太地区(墨尔本) | ap-southeast-4 | config.ap-southeast-4.amazonaws.com | HTTPS |
| 亚太地区(孟买) | ap-south-1 | config.ap-south-1.amazonaws.com | HTTPS |
| 亚太地区(新西兰) | ap-southeast-6 | config.ap-southeast-6.amazonaws.com | HTTPS |
| 亚太地区(大阪) | ap-northeast-3 | config.ap-northeast-3.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-east-2 | config.ap-east-2.amazonaws.com | HTTPS |
| 亚太地区(泰国) | ap-southeast-7 | config.ap-southeast-7.amazonaws.com | HTTPS |
| 亚太地区(东京) | ap-northeast-1 | config.ap-northeast-1.amazonaws.com | HTTPS |
| 加拿大(中部) | ca-central-1 | config.ca-central-1.amazonaws.com | HTTPS |
| 加拿大西部(卡尔加里) | ca-west-1 | config.ca-west-1.amazonaws.com | HTTPS |
| 中国(北京) | cn-north-1 | config.cn-north-1.amazonaws.com.cn | HTTPS |
| 中国(宁夏) | cn-northwest-1 | config.cn-northwest-1.amazonaws.com.cn | 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-south-1 | config.eu-south-1.amazonaws.com | HTTPS |
| 欧洲地区(巴黎) | eu-west-3 | config.eu-west-3.amazonaws.com | HTTPS |
| 欧洲(西班牙) | eu-south-2 | config.eu-south-2.amazonaws.com | HTTPS |
| 欧洲地区(斯德哥尔摩) | eu-north-1 | config.eu-north-1.amazonaws.com | HTTPS |
| 欧洲(苏黎世) | eu-central-2 | config.eu-central-2.amazonaws.com | HTTPS |
| 以色列(特拉维夫) | il-central-1 | config.il-central-1.amazonaws.com | HTTPS |
| 墨西哥(中部) | mx-central-1 | config.mx-central-1.amazonaws.com | HTTPS |
| 中东(巴林) | me-south-1 | config.me-south-1.amazonaws.com | HTTPS |
| 中东(阿联酋) | me-central-1 | config.me-central-1.amazonaws.com | HTTPS |
| 南美洲(圣保罗) | sa-east-1 | config.sa-east-1.amazonaws.com | HTTPS |