我尝试在Ruby On Rails中使用aws+回形针gems来使用DigitalOcean空间来上传文件
我遇到的问题是配置的结果,我得到的是"{name_buncket}.s3.nyc3.amazonaws.com“而不是"{name_buncket}.s3.nyc3.digitaloceanspaces.com",,最后是访问DigitalOcean空间的正确结果
aws-sdk gem是亚马逊服务的专属,如果是这样的话,还有其他类似于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'
}
}发布于 2017-10-10 01:31:56
我认为你现在不走运,尽管不是因为你现在遇到的主机名问题。
s3_host_name密钥应该在您的s3_credentials块之外。如果您将配置更改为:
config.paperclip_defaults = {
storage: :s3,
url: '.....',
s3_region: 'nyc3',
s3_credentials: {
bucket: '......',
access_key_id: "......",
secret_access_key: "........"
},
s3_host_name: 'nyc3.digitaloceanspaces.com'
}你应该解决你的主机名问题。
然而,目前这只会把你引向另一个问题:回形针/aws-sdk身份验证目前不能与DigitalOcean Spaces一起使用--请参阅this issue on GitHub。
发布于 2017-10-27 07:10:50
除了设置s3_host_name之外,您还需要配置AWS SDK使用的endpoint。回形针不会直接暴露这一点,但它可以通过s3_options进行设置。我可以通过以下配置成功地使用带空格的回形针,其中环境变量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",
}发布于 2017-10-13 10:38:08
我开始了回形针的门票,数字海洋也有一个,但还没有回复。drosboro进入的上述示例在理论上应该是有效的,但它不是。指定s3_host_name什么也不做,并显示为原始帖子中指定的主机名,尽管我确实同意问题一定出在某个地方的身份验证问题上。
为了测试,我从:s3切换到storage::fog。指定方案:'https‘将导致403响应,而切换到方案:'http’将导致302响应。有趣的是,使用在json输出中显示文件大小,而通过http上传则显示为0。很奇怪。
考虑到可能使用了一些较新的API选项,我切换到了AWS-SDK v3,这导致了它自己的问题,我能够解决这些问题。不过,还是没有骰子。如果我从任何人那里收到关于这方面的更新,我会很乐意在这里发布回复。
https://stackoverflow.com/questions/46617582
复制相似问题