首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法上载到带有回形针rails 5的S3。配置选项无效:桶

无法上载到带有回形针rails 5的S3。配置选项无效:桶
EN

Stack Overflow用户
提问于 2018-03-01 10:29:41
回答 1查看 631关注 0票数 0

我已经挣扎了一段时间试图配置回形针上传文件到我的S3帐户。

当我试图上传一个文件时,会提示以下错误。

结构中没有成员“桶” 无效配置选项:桶

通过我自己的研究和深入研究aws,我发现aws与一个插件列表一起工作,每个插件都将一组特定的可配置字段添加到一个结构中,这个结构作为一个检查列表工作,如果对象试图添加一个不存在的选项,它会引发一个异常。由于某种原因,":bucket“属性没有添加到该结构中。

我在rails 5.1.2中使用aws (2.6.50)和回形针(5.2.1)。

我在application.rb中的配置设置是

代码语言:javascript
复制
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']
  }
}

下面是回溯跟踪的一部分。

代码语言:javascript
复制
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 (2.6.50) lib/海马/客户机/配置.lib

代码语言:javascript
复制
  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

我已经检查了桶名是否正确设置,而且它是正确的。

我很感谢你事先的帮助。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 12:25:23

我发现了这个问题,我正在初始化Aws配置哈希(因为我对API有其他用途),初始化Aws配置哈希(因为我对API有其他用途),而且似乎它不太喜欢它。我将桶名移到papeclip对象中,它就成功了!就像这样。

代码语言:javascript
复制
config.paperclip_defaults = {
  storage: :s3,
  s3_region: ENV['S3_REGION'],
  bucket: ENV['S3_BUCKET_NAME']
}

看看文档中的配置选项,它说:

可以通过Aws.config配置默认凭据和区域。在第2版中,Aws.config是一个普通的Ruby,而不是版本1中的方法,Aws.config哈希优先于环境变量。 要求‘aws’ Aws.config.update({ region:'us-west-2',凭据: Aws::Credentials.new('akid',‘保密’) })

这是基本的配置,您可以在这里查找其他选项

Options

这里我可以给出一个小小的建议,就是要小心使用哪个版本的SDK来读取正确的文档。就在不久之前,第3版出现了,并且在我所寻找的主题上有一个混合的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49047656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档