I'm setting up automated backups for EC2 instances and RDS/Aurora databases and want a practical, cost-conscious production approach. I've considered scheduled snapshots, but I'm not sure how to reliably remove snapshots older than a set period, such as maintaining a rolling seven-day window. AWS Backup looks like it offers scheduling and retention policies more cleanly, so I'd like to understand how it compares with managing snapshots directly in terms of cost, flexibility, cleanup, and operational best practices. What would you recommend for daily backups, retention management, and keeping storage costs under control?
3 Answers
Pay close attention to Aurora snapshot behavior if you plan to keep frequent snapshots for a long time. Snapshot storage and the way incremental versus non-incremental copies are handled can affect the bill, especially when snapshots are copied or retained across environments. Aurora’s built-in automated backups may already cover shorter recovery windows, so combine those with AWS Backup or snapshots only where you need longer retention or additional recovery options.
A scheduled snapshot workflow can work, but you’ll need to build and maintain the retention logic yourself, usually with a scheduled function or lifecycle rules. That gives you more control, but it also means more code and more opportunities for orphaned snapshots or failed cleanup. For a fairly standard EC2 and database backup policy, AWS Backup is usually worth it for the centralized scheduling, retention, permissions, and monitoring.
AWS Backup is probably the simplest option here. Create a backup plan with a daily schedule, assign your EC2 instances and RDS/Aurora resources, and set the retention period to seven days. The service handles expiring recovery points, so you don’t need a separate cleanup script. Just make sure your resources are tagged consistently and review the resulting storage and request charges.

It’s also worth testing an actual restore, not just checking that backup jobs succeeded. A backup policy is only useful if you can recover the database and instances within the required time.