对于新的应用程序,我想使用paperclip将文件存储到S3.我已经为另一个应用程序安装了aws-s3 gem.这似乎会导致一些问题,因为Paperclip应该使用right_aws但是正在尝试使用aws-s3 gem.但我不想从我的系统中删除aws-s3 gem.有没有办法解决这个冲突?也许通过强制回形针使用right_aws?或者通过更改配置?
我的设置
# enviroment.rb
config.gem 'right_aws'
# my model with the attachment
has_attached_file :thumbnail,
:styles => { :thumb => "160x120>" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/amazons3.yml",
:path => ":provider/:attachment/:id_:style.:extension"
# config/amazons3.yml
development:
bucket: bucketname
access_key_id: secret
secret_access_key: secret
test:
bucket: bucketname
access_key_id: secret
secret_access_key: secret
production:
bucket: bucketname
access_key_id: secret
secret_access_key: secret
# The Error in the console
ArgumentError: wrong number of arguments (5 for 4)
from /Library/Ruby/Gems/1.8/gems/right_http_connection-1.2.4/lib/net_fix.rb:85:in `send_request_with_body_stream'
from /Library/Ruby/Gems/1.8/gems/right_http_connection-1.2.4/lib/net_fix.rb:85:in `exec'
from /Library/Ruby/Gems/1.8/gems/right_http_connection-1.2.4/lib/net_fix.rb:144:in `request'
from …
Run Code Online (Sandbox Code Playgroud) 我一直在尝试S3,他们有这个很酷的功能,你可以通过存储桶策略在存储桶的内容上设置ACL.因此,例如,您可以将一堆文件中的实际ACL设置为私有,但该文件可通过覆盖策略提供给某些用户/ IP地址/引用者.
在我的情况下,我在一个桶中有一堆私人内容,但我想让特定目录中的文件可用于我的网站(例如图像).所以我有这样的事情:
{
"Version": "2008-10-17",
"Id": "",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::content-racket-fm/uploaded/images/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在我们有一些背景,我可以得到这个问题.我最近在这里发现:
https://forums.aws.amazon.com/thread.jspa?threadID=78294
这桶政策只适用于文件的工作拥有由斗所有者.因此,例如,如果文件通过某些外部服务(例如encoding.com或panda流)进入存储桶,他们在S3存储桶上拥有自己的用户,那么您将遇到问题,因为您的存储桶策略不会应用于这些文件(在我看来这似乎是亚马逊的疏忽,但我确信有一个很好的理由我没有想到)
我正在使用rails,有没有办法在桶中设置对象的所有者.
编辑
我想一个更好的问题可能是......
有没有办法设置亚马逊桶,所以它将桶策略应用于所有文件,无论所有者.
我正在使用Amazon S3来托管图片.S3存储桶是私有的,因此我生成一个临时URL(使用Right AWS),到期时间为5分钟,以允许渲染图像.URL看起来像这样(注意:下面的URL不起作用):
https://mybucket.s3.amazonaws.com:443/attachments%2F30%2Fsmall.png?Signature=J%2BXzQd95myCNv0Re8arMhuTFSvk%3D&Expires=1235511662&AWSAccessKeyId=1K3MW21E6T8LWBY94C01
Run Code Online (Sandbox Code Playgroud)
这很好用,我可以将URL粘贴到Firefox中并显示图像.IE也是如此.但是,当我在Safari中尝试时,URL似乎已解析但未显示任何图像.类似地,如果我尝试在网页上的IMG标记的src属性中使用URL,则Safari不会呈现任何内容(在所有其他浏览器中都很好),例如:
alt text http://lylo.co.uk/screenshot.png
有没有人见过这种行为,你能否指出我可能做错了什么?