AWS Config Advanced Query: SQL-Like Queries for Fast Cloud Insights


Instantly analyze AWS resource configurations across accounts without complex scripts

Ever struggled to understand the actual configuration of your AWS resources?

IaC (Infrastructure as Code) is great, but every team abstracts things differently, making it hard to know what’s actually configured in AWS right now.

Need to quickly check configuration differences between dev and production?

Looking for a way to query AWS resources across multiple accounts without writing custom scripts?

There’s an underrated but powerful AWS-native tool that simplifies this: AWS Config Advanced Query.

With SQL-like queries, you can instantly pull resource configurations across your AWS accounts, ensuring compliance, debugging misconfigurations, and tracking infrastructure changes — all without complex scripts or manual checks.

In this guide, we’ll explore practical examples to help you leverage AWS Config Advanced Query for better cloud visibility and governance.

Find Lambda functions using a runtime older than Node.js 22

This query identifies all Lambda functions that are still using Node.js versions older than 22.

SELECT
  accountID,
  resourceId,
  configuration.runtime,
  configuration.lastModified,
  configuration.description
WHERE
  resourceType = 'AWS::Lambda::Function'
  AND configuration.runtime LIKE 'nodejs%'
  AND configuration.runtime < 'nodejs22.x'
  ORDER BY accountID

Don’t just detect EOL — celebrate the team that upgrades to the latest version the fastest! 🏎️ 🏁

Find instances configured with Aurora I/O-Optimized

This query lists all RDS instances that have the Aurora I/O-Optimized storage type enabled.

SELECT
    accountId,
    configuration.dBInstanceClass,
    configuration.engineVersion,
    resourceName
WHERE
    resourceType = 'AWS::RDS::DBInstance'
    AND configuration.storageType = 'aurora-iopt1'
ORDER BY
    accountId

I/O-Optimized comes with a 30% premium on Reserved Instance pricing. Fun fact: It also improves I/O speed!

Find tables using Provisioned Mode in DynamoDB

This query finds all DynamoDB tables using Provisioned Mode instead of On-Demand Mode.

SELECT
  resourceId,
  accountId,
  configuration.provisionedThroughput.readCapacityUnits,
  configuration.provisionedThroughput.writeCapacityUnits
WHERE
  resourceType = 'AWS::DynamoDB::Table'
  AND (
    configuration.provisionedThroughput.readCapacityUnits > 0
    OR configuration.provisionedThroughput.writeCapacityUnits > 0
  )

Unless you’re a DynamoDB expert, On-Demand mode is recommended over Provisioned mode.

Find CloudFront Distributions that do not support IPv6

This query identifies all CloudFront distributions that have IPv6 disabled.

SELECT
  accountId,
  configuration.aliasICPRecordals,
  configuration.distributionConfig.cacheBehaviors.items,
  configuration.distributionConfig.httpVersion,
WHERE
  resourceType = 'AWS::CloudFront::Distribution'
  AND configuration.distributionConfig.isIPV6Enabled = false
order by
  accountId

List all used Public IPs across accounts

This query extracts all used Public IP addresses across AWS accounts.

SELECT
  accountId,
  configuration.association.publicIp,
  configuration.interfaceType,
  availabilityZone,
  resourceId,
WHERE
  resourceType = 'AWS::EC2::NetworkInterface'
  AND configuration.association.publicIp > '0.0.0.0'
ORDER BY
  accountId,
  configuration.interfaceType

List all Elastic IPs (EIPs)

This query lists all allocated Elastic IPs (EIPs) across AWS accounts.

SELECT
  accountId,
  resourceName,
  awsRegion,
  resourceId,
  relationships,
WHERE
  resourceType='AWS::EC2::EIP'
ORDER BY
  accountId

AWS Config resource schema documentation is as follows:

Conclusion

AWS Config Advanced Query makes it easy to analyze resource configurations across accounts with SQL-like queries. No complex scripts or manual checks are needed — just write a query and get insights instantly.

Start using AWS Config Advanced Query today to improve cloud governance, detect misconfigurations, and simplify compliance monitoring!