Rails:回形针上传时 AWS S3 访问被拒绝错误

Posted

技术标签:

【中文标题】Rails:回形针上传时 AWS S3 访问被拒绝错误【英文标题】:Rails: AWS S3 Access denied error with Paperclip upload 【发布时间】:2021-04-21 20:12:56 【问题描述】:

每当我尝试使用回形针和 aws-sdk-s3 上传图像时,我都会收到 Aws::S3::Errors::AccessDenied Access Denied

我几乎尝试了互联网上所有可用的解决方案。

我已尝试从here 配置回形针默认选项

使用的宝石 gem "paperclip", git: "git://github.com/thoughtbot/paperclip.git" and gem 'aws-sdk-s3', '~> 1'

我的 development.rb 文件配置看起来像

config.paperclip_defaults = 
    storage: :s3,
    path: '/:class/:attachment/:id_partition/:style/:filename',
    s3_credentials: 
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
      s3_region: ENV['AWS_REGION'],
    ,
    bucket: ENV['AWS_BUCKET'],
  

我的 model.rb 文件看起来像

has_attached_file :photo
has_attached_file :image
has_attached_file :signature

我的 paperclip.rb 文件看起来像

Paperclip::Attachment.default_options[:s3_protocol] = 'http'
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'

我的 aws.yml 文件看起来像

development:
    access_key_id: MY_AWS_ACCESS_KEY_ID
    secret_access_key: MY_AWS_SECRET_ACCESS_KEY

我正在使用gem 'figaro' 来保存我的环境变量以供开发环境使用。

如果有人可以帮助我,将不胜感激。

【问题讨论】:

这里您似乎在 s3_credentials 下添加存储桶而不是外部,devcenter.heroku.com/articles/paperclip-s3#configuration @MuhammedKılıç 感谢您的回复,但我也尝试使用您建议的文档进行配置。但是,不幸的是它不起作用。 您可以尝试添加原始数据而不是环境变量吗? @MuhammedKılıç,我尝试使用原始数据,但还是没有用。 错误提示“访问被拒绝”,所以我认为问题可能与配置键等有关。 【参考方案1】:

我得到 Aws::S3::Errors::AccessDenied Access Denied 的原因是我的预设 ACL 属性配置不正确。

谢谢,这可能对某人有帮助。

【讨论】:

以上是关于Rails:回形针上传时 AWS S3 访问被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3 访问被拒绝。存储桶权限被授予,那么当我是用户时,我需要存储桶策略吗?

无法使用 github 操作部署 aws beanstalk,获得 s3 访问被拒绝错误

当从 s3 获取对象时,aws lambda 函数被拒绝访问

AWS S3 ListMultipartUploads:拒绝访问

无法使用回形针导轨上传到S3 5.配置选项无效:存储桶

AWS S3 - 限制对引用者的访问时访问被拒绝