无法使用回形针导轨上传到S3 5.配置选项无效:存储桶
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用回形针导轨上传到S3 5.配置选项无效:存储桶相关的知识,希望对你有一定的参考价值。
我一直在努力尝试配置回形针以将文件上传到我的S3帐户。
当我尝试上传文件时,会出现以下错误提示。
struct中没有成员'bucket'
配置选项无效:存储桶
做我自己的研究并深入研究aws-sdk,我发现aws-sdk使用插件列表,每个插件都将一组特定的可配置字段添加到结构中,这个结构作为一个检查列表和如果对象尝试添加不存在的选项,则会引发异常。由于某种原因,“:bucket”属性未添加到该结构中。
我在rails 5.1.2中使用了aws-sdk(2.6.50)和paperclip(5.2.1)
我在application.rb中的配置设置是
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV['S3_BUCKET_NAME'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
s3_region: ENV['S3_REGION'],
s3_host_name: ENV['S3_HOST_NAME']
}
}
这是回溯的一部分。
block in Seahorse::Client::Configuration#apply_options
aws-sdk-core (2.6.50) lib/seahorse/client/configuration.rb, line 163
Seahorse::Client::Configuration#apply_options
aws-sdk-core (2.6.50) lib/seahorse/client/configuration.rb, line 161
Seahorse::Client::Configuration#build!
aws-sdk-core (2.6.50) lib/seahorse/client/configuration.rb, line 149
Aws::S3::Client#build_config
aws-sdk-core (2.6.50) lib/seahorse/client/base.rb, line 68
Aws::S3::Client#initialize
aws-sdk-core (2.6.50) lib/seahorse/client/base.rb, line 19
Aws::S3::Client.new
aws-sdk-core (2.6.50) lib/seahorse/client/base.rb, line 105
Aws::S3::Resource#extract_client
aws-sdk-resources (2.6.50) lib/aws-sdk-resources/resource.rb, line 169
Aws::S3::Resource#initialize
aws-sdk-resources (2.6.50) lib/aws-sdk-resources/resource.rb, line 15
Paperclip::Attachment#obtain_s3_instance_for
paperclip (5.2.1) lib/paperclip/storage/s3.rb, line 269
Paperclip::Attachment#s3_interface
paperclip (5.2.1) lib/paperclip/storage/s3.rb, line 263
Paperclip::Attachment#s3_bucket
paperclip (5.2.1) lib/paperclip/storage/s3.rb, line 273
Paperclip::Attachment#s3_object
paperclip (5.2.1) lib/paperclip/storage/s3.rb, line 281
Paperclip::Attachment#exists?
paperclip (5.2.1) lib/paperclip/storage/s3.rb, line 326
block in Paperclip::Attachment#queue_all_for_delete
paperclip (5.2.1) lib/paperclip/attachment.rb, line 569
Paperclip::Attachment#queue_all_for_delete
paperclip (5.2.1) lib/paperclip/attachment.rb, line 568
Paperclip::Attachment#clear
paperclip (5.2.1) lib/paperclip/attachment.rb, line 259
Paperclip::Attachment#assign
paperclip (5.2.1) lib/paperclip/attachment.rb, line 107
这是失败的方法。
aws-sdk-core(2.6.50)lib / seahorse / client / configuration.rb
def apply_options(struct, options)
options.each do |opt, value|
begin
struct[opt] = value
rescue NameError
msg = "invalid configuration option `#{opt.inspect}'"
raise ArgumentError, msg
end
end
我检查了桶名称是否设置正确,确实如此。
我事先感谢你的帮助。
谢谢!
我发现了这个问题,我正在初始化Aws配置哈希(在paperclip配置对象之外,因为我有其他用途的API),里面有桶名,似乎它不太喜欢它。我将存储桶名称移动到papeclip默认对象中,它工作正常!这样的事情。
config.paperclip_defaults = {
storage: :s3,
s3_region: ENV['S3_REGION'],
bucket: ENV['S3_BUCKET_NAME']
}
查看文档中的配置选项,它说:
您可以通过Aws.config配置默认凭据和区域。在版本2中,Aws.config是一个vanilla Ruby散列,而不是像版本1中那样的方法.Aws.config散列优先于环境变量。
要求'aws-sdk'
Aws.config.update({region:'us-west-2',凭据:Aws :: Credentials.new('akid','secret')})
这是基本配置,您可以在此处查找其他选项
https://docs.aws.amazon.com/sdkforruby/api/#Configuration_Options
我在这里给出的一个小建议是要小心使用哪个版本的SDK来阅读正确的文档。不久前版本3出现了,我正在寻找的主题结果有所不同。
以上是关于无法使用回形针导轨上传到S3 5.配置选项无效:存储桶的主要内容,如果未能解决你的问题,请参考以下文章