Amazon Glacier可以镜像Amazon S3存储桶吗?

时间:2013-03-10 18:32:48

标签: amazon-web-services amazon-s3

我想用Amazon Glacier镜像S3存储桶。

Glacier FAQ州:

  

Amazon S3现在提供了一个新的存储选项,可让您使用   利用Amazon Glacier极低成本的数据存储服务   归档。您可以定义S3生命周期规则以自动存档   将Amazon S3对象集合到Amazon Glacier以减少存储空间   成本。您可以访问对象生命周期管理了解更多信息   Amazon S3开发人员指南中的主题。

这很接近,但我想镜像。我不想删除S3上的内容,只将其复制到Glacier。

这可以通过AWS自动设置吗?

或者是否需要手动将此镜像上传到Glacier?

5 个答案:

答案 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周试用版