为Carrierwave添加其他标头以进行Amazon s3加密

时间:2012-02-02 02:00:09

标签: ruby-on-rails amazon-s3 carrierwave fog

简而言之
总之,我想知道我是否可以通过载波和雾连接向亚马逊s3发送额外的标题?

深度
我最近发现amazon支持文件的客户端和服务器端加密。更多信息»http://docs.amazonwebservices.com/AmazonS3/latest/dev/SSEUsingRESTAPI.html

我目前在rails应用程序中使用carrierwave将文件上传到亚马逊s3 对于服务器端加密,亚马逊要求在请求中添加 x-amz-server-side-encryption = AES256 的标头。

所以我想找出如何通过载波和雾来发送额外的标题。

我的想法是,也许我可以使用类似于以下内容的fog_attribute配置行,也许这可能有效,但我不确定fog_attribute是用于partiular属性还是仅用于总括标题部分。

config.fog_attributes = {'x-amz-server-side-encryption' => 'AES256','Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}

所以我终于得到了我的应用程序以测试这个,但不幸的是它没有用。

我还在雾库中发现了这个:https://github.com/geemus/fog/commit/070e2565d3eb08d0daaa258ad340b6254a9c6ef2提交,让我觉得fog_attributes方法适用于已定义的属性列表。

必须有办法使这项工作。任何人吗?

2 个答案:

答案 0 :(得分:4)

我认为实际上应该是正确的,但请注意,我不相信服务器端加密内容已经发布,因此您需要使用边缘雾来获取此行为。我希望尽快发布,然后它应该很好。如果您发现仍然无法让它工作,请告诉我,我们会尝试看看可以做些什么。

答案 1 :(得分:1)

我不能谈论CarrierWave,但这适用于使用AWS256加密保存带有(当前)标准雾分布的文件:

file.attributes[:encryption ] = "AES256"
result = file.save()

但是,这不适用于复制文件。适用于复制的是:

fogfile.copy(@bucket_archived, newfilename, {'x-amz-server-side-encryption' => 'AES256'})