Hacker News new | ask | show | jobs
by eropple 3475 days ago
CloudWatch Events can already do this for you. I wish it were exposed through automation; that's still coming, but in the interim it's still a solution that minimizes your own failure surface. Do AWS tasks with AWS's tools whenever you can--it minimizes points of failure that you have to manage. Check it: http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Ta...

I've also seen people use Lambda, which is halfway to "do AWS tasks with AWS's tools"; it's only a few lines of code and can be flexibly triggered without this much bulk. (Same code can usually be tossed in cron.)

If you want to go the persistent-daemon approach, there's something like automated-ebs-snapshots (which I used before CloudWatch Events came along), which is reasonably bulletproofed and is already used in anger: https://github.com/skymill/automated-ebs-snapshots

Writing stuff like this is decent practice to get comfortable with the AWS APIs, but these are generally solved problems. I'd be real uncomfortable with k8s's "secrets? what's that? is that something I store unencrypted?" approach to anything remotely sensitive when I'm throwing AWS credentials around; AWS already provides a better ACL method for this sort of thing in IAM. (If you have insisted on a k8s cluster and you aren't able to leverage IAM, this is a problem on your end that should be rectified sooner than soon.)

3 comments

A good blog post about snapshots with CloudWatch and Lambdas can be found here:

Part 1: create snapshots

https://serverlesscode.com/post/lambda-schedule-ebs-snapshot...

Part 2: expire old snapshots

https://serverlesscode.com/post/lambda-schedule-ebs-snapshot...

Don't your solutions give you potentially corrupted snapshots?

For this reason, for my backups, I run a cronjob on the EC2 instance and call fsfreeze (https://linux.die.net/man/8/fsfreeze). Is this unnecessary?

An EBS-snapshot should give a crash-consistent image. However, it's probably better to freeze if you can. If you're doing RAID across multiple volumes, you almost definitely need to freeze your volumes while all the snapshots start.
Here's my lambda implementation that snapshots and purges - https://github.com/manojlds/ebs-snapshot-lambda