这是由Ruby aws-sdk gem为put:
生成的网址curl --upload-file "/Users/README.rdoc"
-H "x-amz-acl=public-read"
"http://videos.s3.amazonaws.com/6c06517c-64f1-45ed-b07f-8c4c4edec6e3?AWSAccessKeyId={key}&Expires=1384519899&Signature=MKtBESBklYXFT%2B48EKLSoBiQpNA%3D"
签名中不存在 -H "x-amz-acl=public-read"
。签名没问题(亚马逊没有显示任何错误)。
但是没有应用“公开阅读”权限,请告诉我如何生成一个已经签名的URL,该URL将在上传后公开阅读。
谢谢!
更新:
s3 = AWS::S3.new
bucket = s3.buckets['some_videos']
id = SecureRandom.uuid
object = bucket.objects["#{id}"]
url = object.url_for(:put, expires_in: 30*60)
答案 0 :(得分:2)
看起来你可以用acl方法指定它(记录here) 如果您想将您的存储桶设置为公开读取,您可以致电:
s3.buckets['some-videos'].acl = :public_read
如果您想将此权限直接应用于您可以调用的对象:
bucket.objects["#{id}"].acl= :public_read
答案 1 :(得分:1)