Copying an EBS Snapshot to S3 for low-cost storage
Goal: Be able to copy an EBS snapshot to S3 and have it be treated like an arbitrary object that I could download to a local on-prem machine if I so wished.
I understand that EBS Snapshots are actually backed by S3 - they just don't show up in a "normal" bucket. The Console and CLI mechanisms that I see for copying snapshots seem to focus on copying a Snapshot from one region to another "as a snapshot", but not to S3 as an "arbitrary object".
From what I've read, the $/GB fee for an EBS Snapshot is higher than for that of an object in S3...so if I have some snapshots I'd like to keep around for a long time (but I won't need any time soon), I'd like to "archive" them to S3 as objects...Essentially:
- copy-as-object a snapshot to S3
- Delete Snapshot in EC2
- Five-Six months goes by
- Copy-as-snapshot the object in S3 to EC2
- Create a volume from the Snapshot that now shows up in EC2
Can this be done?
Solution 1:
Amazon does not offer this as a feature.
Solution 2:
As at 11th August 2016 AWS Snapshots cost $0.05 per GB, a 47% reduction. Standard S3 is still cheaper, at around $0.03 per GB. I guess the difference must be in the management overhead.
Solution 3:
I've now created an open-source tool called snap-to-s3
which accomplishes that. It turns the snapshot into a temporary EBS volume, then tars up, compresses and uploads the partitions of the volume to S3:
https://github.com/thenickdude/snap-to-s3
You can opt to use dd
instead of tar
to preserve every byte of the volume instead, if you like.