Rails Amazon S3使用预先签名的URL来授权私有文件

时间:2015-02-15 19:00:17

标签: ruby-on-rails amazon-s3 aws-sdk

我有以下问题,

在我的rails 4应用程序中,我在s3上托管图像/视频。目前我公开了所有文件,例如我可以通过将公共链接存储在数据库中来访问的图像。

但是,我希望某些图片视频是私密的。

我使用以下

查看了预先签名的网址选项
s3 =  Aws::S3::Client.new(
        region: AWS_REGION, 
        access_key_id: S3_CONFIG['access_key_id'],
        secret_access_key: S3_CONFIG['secret_access_key']
 )
resource = Aws::S3::Resource.new(client: s3)   
bucket = resource.bucket(BUCKET_NAME)
utilities = bucket.objects(prefix: '/folder').each do |obj|
       obj.presigned_url(:get, expires_in: 3600).to_s
end

这样可以正常工作,但我如何使用预先签名的网址,因为我显然不会像公共链接一样将它们存储在数据库中。

我正在使用aws-sdk版本2

我也想知道这一般是否是一个好的解决方案?

感谢任何提示, 让

1 个答案:

答案 0 :(得分:1)

以下是Presigner Doc

示例:

signer = Aws::S3::Presigner.new
url = signer.presigned_url(:put_object, bucket: "bucket", key: "path")