Baz*_*ley 7 ruby-on-rails amazon-s3 amazon-web-services
我正在尝试设置Amazon Simple Storage Service以用于rails.我收到此错误消息:
The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
Run Code Online (Sandbox Code Playgroud)
问题是我选择了法兰克福S3区域,并且只支持V4方案.这是在相同的错误消息这个职位,这将指导您解决 在这里,讲解如何"的设置:s3_signature_version参数:构建客户端时V4".命令是:
s3 = AWS::S3::Client.new(:s3_signature_version => :v4)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我该怎么做?我在哪里放这个代码?
编辑:
我尝试:s3_signature_version => :v4按如下方式放入carrier_wave.rb,但在上传到heroku期间,它说[fog][WARNING] Unrecognized arguments: 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
Run Code Online (Sandbox Code Playgroud)
编辑:
我已经使用北加利福尼亚地区创建了一个新的存储桶,为此不应该是一个问题,但我仍然得到完全相同的错误消息.
编辑:
这也没有任何区别:
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']
}
config.fog_directory = ENV['S3_BUCKET']
config.fog_attributes = {:s3_signature_version => :v4}
end
end
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,Spree v2.3已修复为aws-sdk v1.27.0。但是参数s3_signature_version是在v1.31.0中引入的(中国默认设置)。
因此,在我的情况下,法兰克福的以下配置已被完全忽略:
AWS.config(
region: 'eu-central-1',
s3_signature_version: :v4
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2215 次 |
| 最近记录: |