我想用Amazon Glacier镜像S3存储桶。
Amazon S3现在提供了一个新的存储选项,可让您使用 利用Amazon Glacier极低成本的数据存储服务 归档。您可以定义S3生命周期规则以自动存档 将Amazon S3对象集合到Amazon Glacier以减少存储空间 成本。您可以访问对象生命周期管理了解更多信息 Amazon S3开发人员指南中的主题。
这很接近,但我想镜像。我不想删除S3上的内容,只将其复制到Glacier。
这可以通过AWS自动设置吗?
或者是否需要手动将此镜像上传到Glacier?
答案 0 :(得分:18)
现在可以通过首先在Amazon S3上创建跨区域复制存储桶来实现“S3到Glacier”镜像(此复制存储桶将是原始存储桶的镜像 - 请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html),然后从复制存储桶中设置生命周期规则(将数据移动到Glacier)。
答案 1 :(得分:4)
亚马逊不通过其API提供此功能。我们遇到了同样的问题,并通过运行将文件重新上传到Glacier的每日cron作业来解决问题。
以下是您可以使用Python和boto将文件复制到Glacier文件库的代码片段。请注意,使用下面的代码,您必须先从S3本地下载文件才能运行它(例如,您可以使用s3cmd) - 以下代码对于将本地文件上载到Glacier非常有用。
import boto
# Set up your AWS key and secret, and vault name
aws_key = "AKIA1234"
aws_secret = "ABC123"
glacierVault = "someName"
# Assumption is that this file has been downloaded from S3
fileName = "localfile.tgz"
try:
# Connect to boto
l = boto.glacier.layer2.Layer2(aws_access_key_id=aws_key, aws_secret_access_key=aws_secret)
# Get your Glacier vault
v = l.get_vault(glacierVault)
# Upload file using concurrent upload (so large files are OK)
archiveID = v.concurrent_create_archive_from_file(fileName)
# Append this archiveID to a local file, that way you remember what file
# in Glacier corresponds to a local file. Glacier has no concept of files.
open("glacier.txt", "a").write(fileName + " " + archiveID + "\n")
except:
print "Could not upload gzipped file to Glacier"
答案 2 :(得分:3)
这是通过Lifecycle policy完成的,但该对象在S3中不再可用。您可以将其复制到单独的存储桶中以保留它。
答案 3 :(得分:0)
如果您首先在S3存储桶上启用版本控制,则可以将生命周期规则应用于以前的版本。这将获得非常相似的结果,除非不能成为当前版本的备份。
答案 4 :(得分:-1)
我遇到了同样的问题,但无法承受从Glacier恢复的长时间延迟,通常为3-5小时。
在我的情况下,我创建了一个商业产品,可以同步和创建我的桶的快照等。
它还可以利用S3 Reduced Redundancy Storage来更好地估算Glacier的成本节约优势。
您可以在bucketbacker.com
完全免费试用一个功能齐全的2周试用版