对于本地开发,我使用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',
}
下载内容的链接已正确生成并正常工作:
http://localhost:4572/my-development/files/downloads/be-fl-che-spezialtiefbau-mischanlage-750_ae0f1c99d8.pdf
但是当我想上传新文件时,我会得到一个基于不同URL的 Aws::Errors::NoSuchEndpointError:
https://my-development.s3.localhost-region.amazonaws.com/files/downloads/_umschlag-vorlage_c534f5f25e.pdf
我搜索和调试了几个小时,但无法找到这个网址是在哪里生成的,为什么它使用 * amazonaws.com * 作为主机。
有什么线索可以看吗?
2条答案
按热度按时间acruukt91#
我找到了让它工作的方法。
将显式端点URL添加到配置
由于URL将由AWS Gem使用存储桶名称重命名,因此生成的域将为
my-development.localhost
。我没有找到任何其他的解决方案,除了将这个子域添加到我的/etc/hosts
:这不是很干净,但工作。也许我以后会找到更好的工作。
cfh9epnr2#
这可以帮助其他人。你可以在你的环境配置文件中更新aws配置。