ruby-on-rails - 可以将 AWS Gem 与 Paperclip 结合使用用于 DigitalOcean Spaces 服务吗?

标签 ruby-on-rails amazon-web-services amazon-s3 aws-sdk digital-ocean

我尝试使用 aws-sdk + Paperclip gems 和 Ruby On Rails 来使用 DigitalOcean Spaces 上传文件

我遇到的问题是配置的结果,我得到“{name_buncket}.s3.nyc3.amazonaws.com”而不是“{name_buncket}.s3.nyc3.digitaloceanspaces.com”,最后一个是正确的结果访问 DigitalOcean Spaces

aws-sdk gem 是 Amazon Services 独有的?如果是这样的话,是否存在另一个类似于 aws-sdk 的 gem 可以使用?

这是我使用的配置:

config.paperclip_defaults = {
    storage: :s3,
    url: '.....',
    s3_region: 'nyc3',
    s3_credentials: {
    bucket: '......',
    access_key_id: "......",
    secret_access_key: "........",
    s3_host_name: 'nyc3.digitaloceanspaces.com'
  }
}

最佳答案

除了设置 s3_host_name 之外,您还需要配置 AWS 开发工具包使用的端点。 Paperclip 不会直接公开它,但可以通过 s3_options 设置它 我能够通过以下配置成功将 Paperclip 与 Spaces 一起使用,其中环境变量 S3_HOST_NAME 设置为nyc3.digitaloceanspaces.com:

  config.paperclip_defaults = {
    storage: :s3,
    bucket: ENV["S3_BUCKET"],
    s3_credentials: {
      access_key_id: ENV["S3_ACCESS_KEY_ID"],
      secret_access_key: ENV["S3_SECRET_ACCESS_KEY"]
    },
    s3_host_name: ENV["S3_HOST_NAME"],
    s3_host_alias: ENV["S3_HOST_ALIAS"],
    s3_region: ENV["S3_REGION"],
    s3_protocol: :https,
    s3_options: {
      endpoint: "https://" + ENV["S3_HOST_NAME"],
    },
    url: ":s3_alias_url",
    path: "/assets/:class/:attachment/:style/:filename",
  }

关于ruby-on-rails - 可以将 AWS Gem 与 Paperclip 结合使用用于 DigitalOcean Spaces 服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617582/

相关文章:

ruby-on-rails - Rails rake 数据库 :seed not creating objects that belong_to another object?

ruby-on-rails - Rubocop/Hound 建议卡住字符串文字类名

ruby-on-rails - 设置交集还是加入更高效? rails 上的 ruby

python - 将文件上传到 S3 存储桶 - Python Django

php - 如何使用 Gaufrette 和 Symfony 3.0

Java 不兼容的魔法值 4022320623

ruby-on-rails - 如何在 rspec 中跳过 x 次测试

java - 通过java日志框架启用AWS SDK日志记录到自定义日志文件

node.js - eb create 上的 Elastic Beanstalk 平台错误

python-3.x - 无法从 Fargate 容器中访问 S3 存储桶(错误请求并且无法找到凭据)