【问题标题】:Rails - Paperclip not working with AWSRails - 回形针不适用于 AWS
【发布时间】:2017-07-20 23:06:55
【问题描述】:

Paperclip 可以在没有 AWS 的情况下工作,但是当我尝试使用 S3 存储时它会中断。

#production.rb
    config.paperclip_defaults = {
        storage: :s3,
        s3_region: ENV["AWS_REGION"],
        s3_credentials: {
          # s3_host_name: ENV["AWS_HOST_NAME"],
          bucket: ENV["S3_BUCKET_NAME"],
          access_key_id: ENV["AWS_ACCESS_KEY_ID"],
          secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
          }
  }

    config.paperclip_defaults = { s3_host_name: "s3-us-west-1.amazonaws.com", }
    # Added this line to fix: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

在添加最后一行之前,我收到了 S3 错误 (The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.)。添加后,文件将上传到本地存储而不是 S3。

我也尝试将这些添加到 paperclip.rb 中,但出现了不同的错误。当我添加所有 3 行时,我收到错误 Read-only file system @ dir_s_mkdir - /projects

#paperclip.rb
# Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
# Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
#
# Paperclip::Attachment.default_options[:s3_host_name] = 's3-us-west-1.amazonaws.com'

宝石文件:

gem "paperclip", "~> 5.0.0"
gem 'aws-sdk', '~> 2.3'

我也试过 rake assets:precompile RAILS_ENV=production 似乎没有帮助

编辑: AWS_HOST_NAME:s3-us-west-1.amazonaws.com

AWS_REGION: us-west-1

S3_BUCKET_NAME:基础图像-2

AWS_ACCESS_KEY_ID:...

AWS_SECRET_ACCESS_KEY:...

我已设置 IAM 帐户并在 us-west-1 区域创建了存储桶。我需要在 S3 上做些什么来添加权限吗?

我不明白为什么 Paperclip 将其存储在本地,如果配置用于 S3,则没有任何错误或任何东西..

【问题讨论】:

  • 这是昨天发生的吗?
  • 它仍在发生。我认为这与 S3 中断无关
  • 值得一试。您能否添加您从 S3 收到的错误消息?另外,您添加的最后一行,您是否在production.rb 的第一个配置设置下方添加了它?
  • 编辑添加了我看到的 2 个不同的错误
  • 你的配置看起来很可靠......我会做两件事:1)将s3_host_name添加到初始配置哈希中,否则,看起来你只是覆盖了初始配置设置。 2) 确认您的 ENV 变量是正确的,并且您在正确的区域中创建了存储桶,US Standard

标签: ruby-on-rails amazon-web-services amazon-s3 paperclip


【解决方案1】:

它正在工作

这是我使用的代码:

#production.rb
    config.paperclip_defaults = {
        storage: :s3,
        s3_region: ENV["AWS_REGION"],
            s3_host_name: "s3-us-west-2.amazonaws.com",
        s3_credentials: {
          # s3_host_name: ENV["AWS_HOST_NAME"],
          bucket: ENV["S3_BUCKET_NAME"],
          access_key_id: ENV["AWS_ACCESS_KEY_ID"],
          secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
          }
  }

@meagar 指出我需要合并 2 个配置语句。我还将图像上传到 S3 存储桶以仔细检查存储桶名称/区域。我重新创建了 IAM 凭证。

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2017-04-24
    • 2019-07-18
    • 2014-06-09
    相关资源
    最近更新 更多