加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails中的AWS S3 – 如何设置s3_signature_ver

发布时间:2020-12-17 03:17:51 所属栏目:百科 来源:网络整理
导读:我正在尝试设置Amazon Simple Storage Service以用于rails.我收到此错误消息: The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. 问题是我选择了法兰克福S3区域,并且只支持V4方案. 它与this帖子中的错误消息
我正在尝试设置Amazon Simple Storage Service以用于rails.我收到此错误消息:

The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.

问题是我选择了法兰克福S3区域,并且只支持V4方案.
它与this帖子中的错误消息相同,它会引导您进入解决方案
here,说明如何“在构造客户端时将:s3_signature_version参数设置为:v4”.命令是:

s3 = AWS::S3::Client.new(:s3_signature_version => :v4)

我的问题是,我该怎么做?我在哪里放这个代码?

编辑:

我试过把:s3_signature_version => :car_wave.rb中的v4如下所示,但在上传到heroku期间它表示[雾] [警告]无法识别的参数:s3_signature_version,它没有任何区别,我仍然得到错误.

配置/初始化/ carrier_wave.rb:

if Rails.env.production?
      CarrierWave.configure do |config|
        config.fog_credentials = {
          # Configuration for Amazon S3
          :provider              => 'AWS',:aws_access_key_id     => ENV['S3_ACCESS_KEY'],:aws_secret_access_key => ENV['S3_SECRET_KEY'],:s3_signature_version  => :v4
        }
        config.fog_directory     =  ENV['S3_BUCKET']
      end
    end

编辑:

我已经使用北加利福尼亚地区创建了一个新的存储桶,为此不应该是一个问题,但我仍然得到完全相同的错误消息.

编辑:

这也没有任何区别:

if Rails.env.production?
      CarrierWave.configure do |config|
        config.fog_credentials = {
          # Configuration for Amazon S3
          :provider              => 'AWS',:aws_secret_access_key => ENV['S3_SECRET_KEY']
        }
        config.fog_directory     =  ENV['S3_BUCKET']
        config.fog_attributes = {:s3_signature_version => :v4}
      end
    end

解决方法

我遇到了问题,Spree v2.3被固定在了aws-sdk v1.27.0上.但是参数s3_signature_version是在v1.31.0中引入的(并且默认情况下为中国设置).

所以在我的情况下,法兰克福的以下配置完全被忽略了:

AWS.config(
    region: 'eu-central-1',s3_signature_version: :v4
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读