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:

  1. copy-as-object a snapshot to S3
  2. Delete Snapshot in EC2
  3. Five-Six months goes by
  4. Copy-as-snapshot the object in S3 to EC2
  5. 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.