ruby Aws-sdk v2 public url access denied issue

时间:2015-03-11 06:50:39

标签: ruby aws-sdk

我使用的是aws-sdk' 2.0.29'用于将csv文件上载到S3。访问public_url时结束访问被拒绝的问题。

 s3_credentials = Aws::Credentials.new(S3_CREDENTIALS['access_key_id'],S3_CREDENTIALS['secret_access_key']) #creating credentials object
 s3_bucket = Aws::S3::Resource.new(region: ['region'], credentials: s3_credentials).bucket(S3_CREDENTIALS['bucket']) #finding bucket
 object = s3_bucket.objects(s3_file_path) #creating an object
 object.upload_file(file_to_upload)#uploading file to s3
 object.public_url #fetching the uploaded file url from s3

有人可以帮助我。

1 个答案:

答案 0 :(得分:4)

您已将对象上传到Amazon S3,但未指定" ACL" (访问控制列表)。简单的解决方法是指定一个' public-read'上传对象时的ACL:

 object.upload_file(file_to_upload, acl:'public-read')

当您使用' public-read'上传文件时ACL,该对象可以由任何人下载。如果您希望只有特定用户可以访问它,那么您可以提供自定义ACL,或者您可以省略ACL,而是使用预先签名的URL:

 object.presigned_url(:get)
 #=> 'https://...'

预先签名的URL提供对Amazon S3中私有对象的临时访问。预设URL在一段时间后到期,默认为15分钟。