我尝试使用 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/