Hi - I'm a lead on the Steampipe (
https://steampipe.io) project. Rate limits are definitely an interesting challenge, but actually less of an issue for AWS than many of our other plugins.
Because rate limits are separate across accounts, regions and services, the parallel queries work really well in those cases.
We do sub-API queries for tables, but only when the column is requested. So, "select name from aws_s3_bucket" just does a list call while "select * from aws_s3_bucket" does multiple API calls per row. These sub-API calls are the main potential source of rate limits since they hit the same API [1]. BTW, Cloud Control from AWS is actually much more subsceptible to this problem! [2].
We also use a custom backoff algorithm that is fast then slow to give good speed in the usual cases and ensure results if throttling ramps up [3].
Finally, we automatically cache results in memory between requests and can always save results into materialized views or similar to avoid repeated calls in larger cases.
TBH, live querying of APIs has proven so much more effective than we even hoped when we started!
1 - https://steampipe.io/blog/selective-select
2 - https://steampipe.io/blog/aws-cloud-control
3 - https://github.com/turbot/steampipe-plugin-aws/blob/4cbd8813...