繁体   English   中英

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

[英]Can Amazon Glacier mirror an Amazon S3 bucket?

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

冰川常见问题解答指出:

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

这很近,但是我想反映一下。 我不想删除S3上的内容,仅将其复制到Glacier。

是否可以通过AWS自动设置?

还是需要手动将此镜像上传到Glacier?

现在,可以通过首先在Amazon S3上创建跨区域复制存储桶来实现“从S3到Glacier”的镜像(此复制存储桶将成为您原始存储桶的镜像-请参阅http://docs.aws.amazon.com /AmazonS3/latest/dev/crr.html ),然后在复制存储桶中设置生命周期规则(将数据移至Glacier)。

亚马逊未通过其API提供此功能。 我们遇到了同样的问题,并通过运行每日cron作业(将文件重新上传到Glacier)解决了该问题。

这是您可以使用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"

这是通过生命周期策略完成的,但是该对象在S3中不再可用。 您可以将其复制到单独的存储桶中以保留它。

如果您首先在S3存储桶上启用版本控制,则可以将生命周期规则应用于以前的版本。 这将实现非常相似的结果,只是不会备份当前版本。

我遇到了同样的问题,但无法忍受从Glacier恢复的漫长等待时间(通常需要3-5个小时)。

以我为例,我创建了一种商品,该商品可以同步和创建存储桶的快照。

它还可以利用S3减少冗余存储来更好地估算Glacier节省成本的好处。

您可以在bucketbacker.com上免费试用功能全面的2周试用版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM