如何使用ruby和aws-sdk将大型存档上传到Amazon Glacier?

时间:2013-09-04 11:53:09

标签: ruby amazon-web-services amazon-glacier

冰川的亚马逊文档似乎没有包含任何Ruby示例,文档本身也很稀疏。

我收集我需要实例化一个Glacier Client对象,然后使用upload_multipart_part方法访问Glacier API,但不知道如何按下参数传递给upload_multipart_part。如何使用ruby计算AWS正在寻找的校验和?什么是upload_id?

更新

通过阅读亚马逊的文档来了解大部分内容。它们似乎没有任何代码样本用于ruby,代码示例的github repo不包含Glacier。但是通过查看原始API文档和一些Java和PHP示例,看起来我会这样做:

client = AWS::Glacier::Client.new(access_key_id: ACCESS_KEY_ID, secret_access_key: SECRET_ACCESS_KEY)
resp = client.initiate_multipart_upload(account_id: ACCOUNT_ID, vault_name: 'My Vault', archive_description: "Backup of some stuff", part_size: PART_SIZE_IN_BYTES)

如果一切顺利,Amazon API响应应该包含一个唯一的upload_id,然后我将在后续使用client.upload_multipart_part()的调用中使用它。

我猜测校验和可以像这样计算:

Digest::SHA256.file(file_to_upload).hexdigest

更新2

似乎已经解决了这个问题:

https://github.com/fog/fog

1 个答案:

答案 0 :(得分:0)

对于其他感兴趣的人,此链接很有帮助,几乎涵盖了您所需的大部分内容:

http://www.spacevatican.org/2012/9/4/using-glacier-with-fog/

它并没有真正提供有关如何实例化冰川对象的所有细节:

glacier = Fog::AWS::Glacier.new({
  :aws_access_key_id => YOUR_ACCESS_KEY_ID,
  :aws_secret_access_key => YOUR_SECRET_ACCESS_KEY
})