Open Source · Self-Hosted · MIT License

Know every AWS resource.
Before it costs you.

Track all 10 AWS resource types, get intelligent alerts, generate static snapshots — and deploy for under $1/month.

0
Resource Types Tracked
0
Alert Rules Built-in
$0/mo
Scheduled Mode Cost
0min
To Deploy

See it in your environment

Switch between personas to see how the dashboard adapts to your infrastructure scale.

http://13.234.x.x:5000
● Live
◈ Overview
⬚ Resources 23
◉ Alerts 2
⟳ Poller Status
Account123456789012
Regionap-south-1
Last Poll2min ago

What gets tracked

10 AWS resource types supported today. Click View Info to see what data is collected for each.

EC2 Instances
Instance type, state, age, estimated cost, tags, launch time.
View Info
Collects via describe_instances. Tracks: instance ID, type, state (running/stopped), launch time, estimated on-demand cost, all tags, AZ, VPC/subnet. Alerts on long-running (>30d) and stopped (>7d).
💾
EBS Volumes
Volume type, size, attachment state, cost tracking.
View Info
Collects via describe_volumes. Tracks: volume ID, type (gp2/gp3/io1), size (GB), state, attached instance, creation time, tags. Alerts on unattached volumes after configurable threshold (default 7d).
📸
EBS Snapshots
Manual snapshots, age tracking, owner filtering.
View Info
Collects via describe_snapshots with OwnerIds=['self']. Tracks own account snapshots only. Alerts on snapshots older than 60 days.
🗄
RDS Instances
Database engine, class, state, multi-AZ, cost estimate.
View Info
Collects via describe_db_instances + list_tags_for_resource. Tracks: engine, version, class, status, storage, multi-AZ, endpoint. Critical alert when stopped (AWS auto-restarts at 7d).
📂
RDS Snapshots
Manual RDS snapshots, age and storage tracking.
View Info
Tracks manual snapshots only (not automated). Collects via describe_db_snapshots with SnapshotType='manual'. Alerts on snapshots older than 30 days.
🪣
S3 Buckets
Bucket inventory, region, tags, creation date.
View Info
Collects via list_buckets + get_bucket_location + get_bucket_tagging. Handles NoSuchTagSet gracefully. Global service mapped to correct region.
🌐
Elastic IPs
Association state, attached instance, cost alert when idle.
View Info
Collects via describe_addresses. State = associated/unassociated based on AssociationId. Critical alert immediately on unassociated EIP (AWS charges $0.005/hr when idle).
🛡
Security Groups
In-use detection, unused group identification.
View Info
Collects via describe_security_groups + describe_network_interfaces. In-use = attached to at least one ENI. Default SG always marked in-use. Alerts on unused groups.
👤
IAM Users
Last activity, access keys, inactivity alerts.
View Info
Collects via list_users + get_access_key_last_used + get_login_profile. Last activity = max(password_last_used, key_last_used). Alerts on inactive users (default 90d).
🔔
CloudWatch Alarms
Alarm state, stale detection, INSUFFICIENT_DATA tracking.
View Info
Collects via describe_alarms with AlarmTypes=['MetricAlarm']. Tracks state (OK/ALARM/INSUFFICIENT_DATA). Alerts on alarms stuck in INSUFFICIENT_DATA for 7+ days.
Lambda Functions
Invocation count, cold starts, error rates, cost per function.
Future Integration
📦
ECS / Fargate
Cluster services, task definitions, container lifecycle tracking.
Future Integration
Load Balancers
ALB/NLB, target groups, listener rules, idle detection.
Future Integration
📬
SQS Queues
Message counts, DLQ monitoring, idle queue detection.
Future Integration
🌍
CloudFront Distributions
Distribution status, origins, cache behaviour tracking.
Future Integration
🔑
KMS Keys
Key rotation status, pending deletion, unused key detection.
Future Integration

How it works

A single EC2 instance runs the entire stack via Docker Compose. Poll. Store. Alert. Snapshot. Stop.

1
EventBridge wakes EC2
Scheduled twice weekly (Mon + Thu). EventBridge Scheduler calls ec2:StartInstances directly — no Lambda needed.
2
Poller collects all resources
boto3 queries all 10 AWS services in parallel. Results written to RDS PostgreSQL. Soft delete tracks disappeared resources.
3
Alert engine evaluates rules
10 built-in rules run after every poll. Deduplication prevents repeat alerts. Auto-resolve when condition clears. SNS sends email.
4
Snapshot exported to S3
Static HTML dashboard generated and uploaded to S3. CloudFront serves it globally — always accessible, even when EC2 is off.
5
EC2 + RDS stop themselves
After snapshot upload completes, systemd service stops RDS then EC2 via AWS CLI. Zero compute charges between polls.
Docker Compose Stack
# docker-compose.yml services: app: # Flask dashboard :5000 poller: # boto3 collector postgres: # local dev only # Production: RDS PostgreSQL # All via environment variables
Access Modes
EC2 running
http://ElasticIP:5000
Live
EC2 stopped
CloudFront SnapshotURL
Always on
IAM Policy
# Read-only. Cannot modify anything. ec2:Describe* rds:Describe* s3:List* iam:List* iam:Get* cloudwatch:Describe* sns:Publish (alerts topic only) secretsmanager:GetSecretValue s3:PutObject (snapshots bucket)

Built for real problems

Whether you're a solo developer or managing a startup's infrastructure, the tracker solves real costs.

💸
Stop Surprise AWS Bills
Forgotten EC2 instances, unattached EBS volumes, and idle Elastic IPs silently drain your account. The tracker alerts you before the bill arrives.
ec2 ebs elastic-ip
🔍
Security Hygiene Audit
Find unused security groups, inactive IAM users with old access keys, and stale CloudWatch alarms that no longer watch anything real.
iam security-groups cloudwatch
📊
Resource Lifecycle History
Every resource has a timeline. See when it was created, when it changed state, how long it ran, and what it cost — across every poll cycle.
timeline history rds
🏷
Tagging Compliance
Enable tag alerts to surface resources missing Owner, Project, or Environment tags. Keep your tagging strategy enforced without manual audits.
tags compliance governance
📱
Always-On Dashboard (Offline)
CloudFront serves the last snapshot even when EC2 is off. Share the URL with your team — they can always see the current state of AWS without spinning anything up.
cloudfront s3 snapshot
RDS Stop-Before-7-Days
AWS forces stopped RDS to restart after 7 days and resume billing. The tracker alerts at the critical threshold so you act before AWS acts for you.
rds cost alert

Pay almost nothing

The AWS Resource Lifecycle Tracker tool is completely free and open source.
However, running it in your own AWS account may incur small infrastructure charges (EC2, RDS, S3, etc.) depending on your usage. We help you minimize these costs.

Free Tier
$0
/ month for 12 months
  • EC2 t3.micro 750 hrs free
  • RDS db.t3.micro 750 hrs free
  • S3 5GB storage free
  • CloudFront 1TB transfer free
  • SNS 1M notifications free
  • New AWS accounts only
Always-On
~$23
/ month after free tier
  • EC2 t3.micro 24/7
  • RDS db.t3.micro 24/7
  • Live real-time dashboard
  • No scheduling complexity
  • Best for active monitoring
  • Still cheap for what it does
Costs are estimates based on AWS on-demand pricing for ap-south-1. Your costs may vary.

Three ways to deploy

Choose the deployment that fits your needs. CloudFormation options automate almost everything, while local dev gives you full manual control.

1
Full Time (CloudFormation)
Auto-provisioned, always-on.
Use the Full Time CloudFormation template to provision all AWS resources (EC2, RDS, S3, IAM, etc.) automatically. You only provide basic info (key pair, email, etc.) and CloudFormation handles the rest. The stack runs 24/7 for real-time monitoring.
1
Download the Full Time template
2
CloudFormation → Create Stack → Upload template
3
Fill in required parameters (key pair, email, etc.)
4
Check IAM capabilities box → Submit
5
Wait 15 min → stack shows CREATE_COMPLETE
6
Open DashboardURL from Outputs tab
Download Full Time Template →
3
Local Dev (Manual)
Manual setup for full control.
Clone the GitHub repo, create AWS resources yourself, and provide their info in the .env file. Use docker compose up to run locally or on your own EC2 instance. Best for development, testing, or custom integrations.
1
Clone the repo to your machine or EC2 instance
2
Copy .env.example → .env, fill in your resource info
3
Create AWS resources (RDS, S3, etc.) manually
4
Apply db/schema.sql to your RDS instance
5
Run docker compose up
6
Open port 5000 in your Security Group (if needed)
# Quick start git clone https://github.com/ADITYANAIR01/\ aws-resource-lifecycle-tracker cd aws-resource-lifecycle-tracker cp .env.example .env # Edit .env with your values docker compose up -d
Read Full Guide →

Start tracking your AWS in 15 minutes.

Free forever. Self-hosted. No data leaves your account.