Fast, comprehensive AWS resource inventory tool with SQL and natural language queries
A fast, comprehensive tool for mapping and inventorying AWS resources across 150+ services and all regions. Scan your accounts, store results in a local SQLite database, and query your inventory using SQL or natural language. Features parallel scanning with 40 workers, 30 pre-built security queries, 1,381 example questions, multi-account support, and multiple output formats. Available on PyPI and Docker Hub.
pip install awsmap
docker pull tarekcheikh/awsmap
# Full account inventory awsmap -p myprofile # Specific services & regions awsmap -p myprofile -s ec2,s3,rds -r us-east-1,eu-west-1 # Filter by tags awsmap -p myprofile -t Owner=John -t Environment=Production
# Custom SQL on your inventory awsmap query "SELECT service, COUNT(*) FROM resources GROUP BY service" # Pre-built security queries awsmap query -n admin-users awsmap query -n public-s3-buckets awsmap query -n open-security-groups
# Ask in plain English awsmap ask how many resources per region awsmap ask show me all EC2 instances without Owner tag awsmap ask which S3 buckets are in eu-west-1
# Browse 1,381 example questions awsmap examples awsmap examples lambda awsmap examples lambda 5 awsmap examples --search "encryption"
| Option | Description |
|---|---|
-p, --profile | AWS profile name |
-r, --region | Region(s) to scan (comma-separated) |
-s, --services | Service(s) to scan (comma-separated) |
-t, --tag | Filter by tag Key=Value (multiple allowed) |
-f, --format | Output: html (default), json, csv |
-o, --output | Output file path |
-w, --workers | Parallel workers (default: 40) |
-q, --quiet | Suppress progress output |
--timings | Show timing summary per service |
--exclude-defaults | Exclude default AWS resources |
--no-db | Skip database storage |
--list-services | List available service collectors |
query <SQL> | Run a SQL query against inventory |
query -n <name> | Run a pre-built named query |
query -l | List all pre-built queries |
query -a <account> | Scope query to a specific account |
ask <question> | Query inventory in natural language |
examples [service] | Browse example questions by service |
examples --search <keyword> | Search across all example questions |
config set <key> <value> | Set a config value (profile, regions, etc.) |
config list | Show all configuration |
completion <shell> | Generate shell completion (bash/zsh/fish) |
admin-usersIAM users with admin permissionsadmin-rolesIAM roles with admin permissionsusers-without-mfaMFA compliance checkiam-inactive-usersInactive IAM usersold-access-keysOld access keys needing rotationcross-account-rolesRoles with cross-account trustopen-security-groupsSecurity groups with 0.0.0.0/0secrets-no-rotationSecrets without auto-rotationpublic-s3-bucketsS3 buckets with public accesss3-no-versioningS3 buckets without versionings3-no-loggingS3 buckets without access loggingencryption-statusEncryption status across S3stopped-instancesEC2 instances in stopped stateunused-volumesUnattached EBS volumesebs-unencryptedUnencrypted EBS volumesunused-eipsUnused Elastic IP addressesdefault-vpcsDefault VPCs still presentrds-publicPublicly accessible RDS instancesrds-unencryptedUnencrypted RDS instancesrds-no-multi-azRDS without Multi-AZlambda-runtimesLambda runtime versionslambda-high-memoryLambda with high memory allocationuntagged-resourcesResources missing required tagsresources-by-serviceResource count per AWS serviceresources-by-regionResource distribution by regionresources-by-accountResource count per AWS accountWe can help you deploy and customize this tool for your specific needs, or build custom solutions.
Contact Us