Documentation Index
Fetch the complete documentation index at: https://support.configview.com/llms.txt
Use this file to discover all available pages before exploring further.
Part 1: AWS Data Ingestion
Set up an AWS IAM user so ConfigView can pull your AWS infrastructure data into the dashboard. For security, ConfigView requires strictly read-only permissions to aggregate your configurations. We recommend creating a custom policy rather than using the broad AWS-managedReadOnlyAccess policy to adhere to the principle of least privilege.
Step 1: Create a Custom IAM Policy
- Log in to the AWS Management Console as an administrator.
- Navigate to the IAM (Identity and Access Management) console.
- In the left navigation pane, choose Policies, then click Create policy.
- Switch to the JSON tab and paste the following policy. This grants exactly what ConfigView needs to sync your AWS resources and dynamically discover your active regions:
Two actions in this policy require additional one-time setup in the AWS console (no IAM change):
- Cost Explorer must be enabled (Billing → Cost Explorer → Enable) for the
ce:*actions to return data. - Hourly and Resource Level Data must be enabled (Billing → Cost Explorer → Settings) for
ce:GetCostAndUsageWithResourcesto return non-empty results. This is a paid Cost Explorer feature and takes ~24 hours to populate after enabling. - Compute Optimizer must be opted in at the account level (free) for
compute-optimizer:GetEC2InstanceRecommendationsto return recommendations.
Per-script permission reference
If you prefer to grant only what individual scripts need, each endpoint requires the following actions:| Script | IAM actions |
|---|---|
aws_get_ec2.py | ec2:DescribeRegions, ec2:DescribeInstances |
aws_get_vpc.py | ec2:DescribeRegions, ec2:DescribeVpcs |
aws_get_cloudtrail.py | ec2:DescribeRegions, cloudtrail:DescribeTrails |
aws_get_cost_daily.py | ce:GetCostAndUsage, sts:GetCallerIdentity |
aws_get_ebs_unattached.py | ec2:DescribeRegions, ec2:DescribeVolumes |
aws_get_eip_unused.py | ec2:DescribeRegions, ec2:DescribeAddresses |
aws_get_snapshots_aged.py | ec2:DescribeRegions, ec2:DescribeSnapshots, ec2:DescribeVolumes |
aws_get_s3_storage_stats.py | s3:ListAllMyBuckets, s3:GetBucketLocation, s3:GetLifecycleConfiguration, s3:GetBucketVersioning, s3:GetBucketTagging, s3:GetEncryptionConfiguration, s3:GetBucketPublicAccessBlock, cloudwatch:GetMetricStatistics |
aws_get_compute_recommendations.py | ec2:DescribeRegions, ec2:DescribeInstances, compute-optimizer:GetEC2InstanceRecommendations |
aws_get_idle_rds.py | ec2:DescribeRegions, rds:DescribeDBInstances, cloudwatch:GetMetricStatistics |
aws_get_cost_by_resource.py | ce:GetCostAndUsageWithResources, sts:GetCallerIdentity |
aws_get_elb.py | ec2:DescribeRegions, elasticloadbalancing:DescribeLoadBalancers, elasticloadbalancing:DescribeTargetGroups, elasticloadbalancing:DescribeListeners, elasticloadbalancing:DescribeTags |
aws_get_elb_cost.py | ce:GetCostAndUsage |
aws_get_ecs.py | ec2:DescribeRegions, ecs:ListClusters, ecs:DescribeClusters, ecs:ListServices, ecs:DescribeServices, ecs:ListTasks, ecs:DescribeTasks, ecs:ListTagsForResource |
aws_get_ecs_cost.py | ce:GetCostAndUsage |
aws_get_lambda.py | ec2:DescribeRegions, lambda:ListFunctions, lambda:GetFunctionConfiguration, lambda:ListTags |
aws_get_lambda_cost.py | ce:GetCostAndUsage |
aws_get_guardduty.py | ec2:DescribeRegions, guardduty:ListDetectors, guardduty:ListFindings, guardduty:GetFindings |
aws_get_guardduty_cost.py | ce:GetCostAndUsage |
aws_get_route53.py | route53:ListHostedZones, route53:ListResourceRecordSets, route53:ListTagsForResource |
aws_get_route53_cost.py | ce:GetCostAndUsage |
aws_get_sqs.py | ec2:DescribeRegions, sqs:ListQueues, sqs:GetQueueAttributes, sqs:ListQueueTags |
aws_get_sqs_cost.py | ce:GetCostAndUsage |
aws_get_redshift.py | ec2:DescribeRegions, redshift:DescribeClusters |
aws_get_redshift_cost.py | ce:GetCostAndUsage |
aws_get_cloudfront.py | cloudfront:ListDistributions, cloudfront:ListTagsForResource |
aws_get_cloudfront_cost.py | ce:GetCostAndUsage |
aws_get_dynamodb.py | ec2:DescribeRegions, dynamodb:ListTables, dynamodb:DescribeTable, dynamodb:ListTagsOfResource |
aws_get_dynamodb_cost.py | ce:GetCostAndUsage |
aws_get_sns.py | ec2:DescribeRegions, sns:ListTopics, sns:GetTopicAttributes, sns:ListTagsForResource |
aws_get_sns_cost.py | ce:GetCostAndUsage |
aws_get_cloudwatch.py | ec2:DescribeRegions, cloudwatch:DescribeAlarms |
aws_get_cloudwatch_cost.py | ce:GetCostAndUsage |
aws_get_detective.py | ec2:DescribeRegions, detective:ListGraphs, detective:ListMembers |
aws_get_detective_cost.py | ce:GetCostAndUsage |
aws_get_glue.py | ec2:DescribeRegions, glue:GetDatabases, glue:GetJobs, glue:GetCrawlers |
aws_get_glue_cost.py | ce:GetCostAndUsage |
aws_get_transfer.py | ec2:DescribeRegions, transfer:ListServers, transfer:DescribeServer, transfer:ListUsers |
aws_get_transfer_cost.py | ce:GetCostAndUsage |
aws_get_ecr.py | ec2:DescribeRegions, ecr:DescribeRepositories, ecr:DescribeImages, ecr:ListTagsForResource |
aws_get_ecr_cost.py | ce:GetCostAndUsage |
aws_get_eum.py | ec2:DescribeRegions, sms-voice:DescribePhoneNumbers |
aws_get_eum_cost.py | ce:GetCostAndUsage |
aws_get_cognito.py | ec2:DescribeRegions, cognito-idp:ListUserPools, cognito-idp:DescribeUserPool, cognito-identity:ListIdentityPools, cognito-identity:DescribeIdentityPool |
aws_get_cognito_cost.py | ce:GetCostAndUsage |
aws_get_ses.py | ec2:DescribeRegions, ses:ListEmailIdentities, ses:GetAccount |
aws_get_ses_cost.py | ce:GetCostAndUsage |
aws_get_kms.py | ec2:DescribeRegions, kms:ListKeys, kms:DescribeKey, kms:ListAliases, kms:GetKeyRotationStatus, kms:ListResourceTags |
aws_get_kms_cost.py | ce:GetCostAndUsage |
aws_get_config.py | ec2:DescribeRegions, config:DescribeConfigurationRecorders, config:DescribeConfigurationRecorderStatus, config:DescribeDeliveryChannels, config:DescribeConfigRules |
aws_get_config_cost.py | ce:GetCostAndUsage |
aws_get_securityhub.py | ec2:DescribeRegions, securityhub:GetFindings |
aws_get_securityhub_cost.py | ce:GetCostAndUsage |
aws_get_macie.py | ec2:DescribeRegions, macie2:GetMacieSession, macie2:ListFindings, macie2:GetFindings |
aws_get_macie_cost.py | ce:GetCostAndUsage |
aws_get_apigateway.py | ec2:DescribeRegions, apigateway:GET, apigatewayv2:GET |
aws_get_apigateway_cost.py | ce:GetCostAndUsage |
aws_get_kinesis.py | ec2:DescribeRegions, kinesis:ListStreams, kinesis:DescribeStream, kinesis:ListTagsForStream |
aws_get_kinesis_cost.py | ce:GetCostAndUsage |
aws_get_waf.py | ec2:DescribeRegions, wafv2:ListWebACLs, wafv2:GetWebACL, wafv2:ListResourcesForWebACL, wafv2:ListTagsForResource |
aws_get_waf_cost.py | ce:GetCostAndUsage |
aws_get_secretsmanager.py | ec2:DescribeRegions, secretsmanager:ListSecrets, secretsmanager:DescribeSecret |
aws_get_secretsmanager_cost.py | ce:GetCostAndUsage |
- Click Next to review.
- Name the policy
ConfigView-ReadOnly-Integrationand add a description (e.g., “Allows ConfigView to read AWS resource metadata”). - Click Create policy.
Step 2: Create an IAM User and Attach the Policy
- In the IAM console, go to Users and click Create user.
- Enter a user name (e.g.,
configview-svc). Do not check the box for AWS Management Console access. Click Next. - Choose Attach policies directly.
- Search for the
ConfigView-ReadOnly-Integrationpolicy you just created, select it, and click Next. - Click Create user.
Step 3: Generate Access Keys
- Click on the newly created
configview-svcuser. - Go to the Security credentials tab.
- Scroll down to the Access keys section and click Create access key.
- Select Third-party service (or Other).
- Add an optional description tag and click Create access key.
- Important: Copy the Access Key ID and Secret Access Key immediately. You will not be able to view the Secret Access Key again.
Step 4: Add the Credentials to ConfigView
- Go to your ConfigView admin dashboard:
https://{companyname}.configview.com/admin/secret/ - Click Add Secret and create the following entries based on your newly generated keys:
AWS_ACCESS_KEY_ID: Your Access Key IDAWS_SECRET_ACCESS_KEY: Your Secret Access KeyAWS_DEFAULT_REGION: Your primary AWS region (e.g.,us-east-1). This is used as the starting point for global resource discovery.
- Click Save.
Step 5: Enable the AWS Integration
- Go to:
https://{companyname}.configview.com/admin/cron/ - Locate AWS in the list of available integrations (folders).
- Select the resource scripts you want to run (e.g., VPCs, CloudTrail, etc.).
- Click Save.
Default run time is stored in UTC. The picker at the top of
/admin/cron/ shows it in your browser’s local time. Per-script overrides are independent of the default.Step 6: Verify Connection
- Go to:
https://{companyname}.configview.com/admin/status/ - Run the AWS health check or trigger a manual sync.
- Ensure the scripts report success.
Integration Lifecycle (Checking and Unchecking)
ConfigView handles your database schema, scheduling, and secrets automatically based on your integration selections:- When you check an integration: ConfigView runs the background
createdbscripts to construct the required MySQL tables, registers every script at the default run time (so you don’t have to set 50 schedules by hand), fires one immediate first run so data populates without waiting, and safely stores your secrets in Google Secret Manager. - When you uncheck an integration: ConfigView triggers the associated
dropdbscripts, which safely drops the tables and deletes the synced data to free up database resources. It also automatically removes the associated secrets from Secret Manager. - When new scripts ship in a future ConfigView update: They automatically pick up your configured default run time. No re-click required.
Available Data Tables
Once the scripts complete successfully, the corresponding AWS resource tables will be populated in your database. Example tables include:aws_ec2: EC2 instance inventory across all active regions.aws_vpc: Virtual network configurations across all active regions.aws_cloudtrail: Audit trail configurations across all active regions.aws_cost_daily: Daily unblended/amortized cost grouped by service and usage type (last 30 days).aws_ebs_unattached: EBS volumes inavailablestate (unattached waste), with estimated monthly cost.aws_eip_unused: Elastic IPs with no association (each unattached EIP incurs charges).aws_snapshots_aged: EBS snapshots older than 90 days, flagged when their source volume no longer exists.aws_s3_storage_stats: Per-bucket size, object count, storage-class breakdown, lifecycle presence, versioning, encryption.aws_compute_recommendations: AWS Compute Optimizer rightsizing recommendations with estimated monthly savings.aws_idle_rds: RDS instances with 7-day CPU and connection metrics, flagged idle when both fall below thresholds.aws_cost_by_resource: Daily cost grouped by resource ID for the last 14 days (requires Hourly and Resource Level Data in Cost Explorer).aws_elb: Application, Network, Gateway, and Classic load balancers across all active regions (DNS name, VPC, scheme, AZs, security groups, tags).aws_elb_cost: Daily Cost Explorer slice for Elastic Load Balancing grouped by usage type and region (last 30 days).aws_ecs: ECS clusters across all active regions with nested service and task descriptions in JSON.aws_ecs_cost: Daily Cost Explorer slice for Amazon Elastic Container Service grouped by usage type and region (last 30 days).aws_lambda: Lambda functions across all active regions (runtime, handler, memory, timeout, architectures, VPC config, env, tags).aws_lambda_cost: Daily Cost Explorer slice for AWS Lambda grouped by usage type and region (last 30 days).aws_guardduty: Active GuardDuty findings across all detectors and regions (severity, type, affected resource, archived flag).aws_guardduty_cost: Daily Cost Explorer slice for Amazon GuardDuty grouped by usage type and region (last 30 days).aws_route53: Public and private hosted zones with full record-set list and tags (Route 53 is a global service — single fetch, no region iteration).aws_route53_cost: Daily Cost Explorer slice for Amazon Route 53 grouped by usage type and region (last 30 days).aws_sqs: SQS queues across all active regions with message counts, visibility timeout, and queue attributes.aws_redshift: Redshift clusters with node type/count, status, encryption, VPC, and master username.aws_cloudfront: CloudFront distributions (global) with origins, aliases, price class, HTTP version, IPv6 status.aws_dynamodb: DynamoDB tables with item count, size in bytes, billing mode, and provisioned capacity.aws_sns: SNS topics with subscription counts and KMS encryption key.aws_cloudwatch: CloudWatch metric alarms with state, threshold, comparison operator, evaluation periods, and configured actions.aws_detective: Detective behavior graphs with member-account counts.aws_glue: Glue databases, jobs, and crawlers in one table keyed byresource_type.aws_transfer: Transfer Family servers (SFTP/FTPS/FTP) with endpoint type, identity provider, and user count.aws_ecr: ECR repositories with image count, total size in bytes, tag mutability, and scan-on-push setting.aws_eum: End User Messaging phone numbers (origination IDs) with country code, type, and monthly leasing price.aws_cognito: Cognito user pools and identity pools in one table keyed bypool_type.aws_ses: SES verified identities with verification status, DKIM state, configuration set, and account-level 24-hour send quotas.aws_kms: KMS keys with alias, state, usage, key manager (AWS/CUSTOMER), origin, and rotation status. Tags included.aws_config: AWS Config recorders + delivery channels per region with rule counts.aws_securityhub: Active Security Hub findings with severity label/normalized score, compliance status, workflow status, and affected resource.aws_macie: Macie sensitive-data findings with severity, category, S3 resource, and count.aws_apigateway: REST, HTTP, and WebSocket APIs in one table keyed byapi_type.aws_kinesis: Kinesis Data Streams with shard count, retention period, stream mode (ON_DEMAND/PROVISIONED), encryption, and creation timestamp.aws_waf: WAFv2 Web ACLs (REGIONAL + CLOUDFRONT) with rule count, capacity, default action, associated resources, and full rule definitions.aws_secretsmanager: Secret metadata only (NOT secret values) — name, KMS key, rotation schedule, last-rotated/changed/accessed dates.aws_sqs_costthroughaws_secretsmanager_cost: Daily Cost Explorer slices for each service above, same shared schema (see note below).
aws_<service>_cost table shares a consistent schema: usage_date, service_name, usage_type, region, operation, amortized_cost_usd, unblended_cost_usd, usage_quantity, usage_unit, raw, run_at. This lets you UNION across services for cross-cutting cost analysis.
Note: ConfigView automatically discovers and polls all active AWS regions during sync operations. All tables include a run_at column to power historical tracking and drift detection.