You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Config高级查询中获取非合规资源名称及原因

AWS Config高级查询:获取非合规资源详情及解决名称为空问题

核心问题分析

  1. configuration.targetResourceName为空:该字段并非所有资源类型都支持,多数场景下AWS Config不会填充此值,需改用更可靠的字段获取资源名称。
  2. 非合规原因字段:非合规原因存储在evaluationResult.annotation中,这是规则评估后返回的说明信息。

修正后的查询语句

通用查询(兼容大多数资源类型)

SELECT
  resourceName AS 资源名称,
  resourceId AS 资源ID,
  resourceType AS 资源类型,
  configuration.complianceType AS 合规类型,
  evaluationResult.annotation AS 非合规原因
WHERE
  configuration.complianceType = 'NON_COMPLIANT'

针对特定资源类型的精准查询(如EC2实例/S3桶)

如果通用的resourceName仍为空,可针对资源类型从配置属性中提取名称,以EC2实例和S3桶为例:

SELECT
  CASE
    WHEN resourceType = 'AWS::EC2::Instance' THEN configuration.tags[?].value WHERE key='Name'
    WHEN resourceType = 'AWS::S3::Bucket' THEN configuration.name
    ELSE resourceName
  END AS 资源名称,
  resourceId AS 资源ID,
  resourceType AS 资源类型,
  configuration.complianceType AS 合规类型,
  evaluationResult.annotation AS 非合规原因
WHERE
  configuration.complianceType = 'NON_COMPLIANT'

关键说明

  • resourceName字段:这是AWS Config顶层的标准字段,绝大多数资源类型都会填充该值,比configuration.targetResourceName更可靠。
  • evaluationResult.annotation:包含规则返回的非合规具体原因(比如"安全组允许0.0.0.0/0访问端口22"),若规则未配置返回原因,该字段可能为空。
  • CASE语句适配特定资源:部分资源的名称存储在配置属性的特定位置(比如EC2实例的Name标签),通过CASE语句针对性提取,可确保名称字段不为空。

内容的提问来源于stack exchange,提问作者Tina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:21:15