【发布时间】:2020-05-17 04:10:53
【问题描述】:
对于本地开发,我使用 localstack Docker 容器作为 AWS Sandbox,并使用此 Paperclip 配置:
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
},
bucket: 'my-development',
s3_region: 'localhost-region',
s3_host_name: 'localhost:4572',
url: ':s3_path_url',
}
下载内容的链接已正确生成并且可以正常工作:
但是当我想上传新文件时,我会得到一个基于不同 URL 的 Aws::Errors::NoSuchEndpointError:
我搜索和调试了几个小时,但找不到此 url 的生成位置以及为什么它使用 amazonaws.com 作为主机。
任何提示在哪里看?
【问题讨论】:
-
你的
paperclip_defaults对象实际上是发起:s3。那时您的上传将始终专注于 s3。 -
Localstack 也提供了一个 S3 服务,它可以工作,所以没问题。我只想更改文件上传的位置(在哪个主机上)。
-
我还是不明白,你如何在不上传的情况下获得下载内容[NoSuchEndpointError]?您的上传内容也不能正常工作?如果 localstack 是开发,那么 S3 生产是什么?
-
我使用一些终端命令将“live AWS S3”镜像到 localstack 容器中。它与回形针、红宝石或 AWS Gem 无关。在生产中,我使用的是“真正的”AWS S3。
标签: ruby-on-rails amazon-s3 paperclip localstack