我正在使用回形针将图像上传到亚马逊S3。这是我的gemfile
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
gem "paperclip", "~> 5.0.0"
gem 'aws-sdk', '~> 2.3'
图片上传在本地工作但在生产中断(heroku)。我按照这里的heroku配置设置进行了操作:https://devcenter.heroku.com/articles/paperclip-s3#configuration。我的config / environments / production.rb文件在这里:
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
}
}
end
我运行了以下heroku CLI命令:
$ heroku config:set S3_BUCKET_NAME=your_bucket_name
$ heroku config:set AWS_ACCESS_KEY_ID=your_access_key_id
$ heroku config:set AWS_SECRET_ACCESS_KEY=your_secret_access_key
$ heroku config:set AWS_REGION=your_aws_region
并将该地区设置为俄勒冈州。
我见过其他解决方案,建议将aws_region设置为us-west-2(https://locomotive-v3.readme.io/discuss/56a7e06897e8b00d0096d27a)。我重置我的aws配置,但我得到了相同的'seahorse'错误。我是rails的新手,不知道在哪里进行故障排除。非常感谢所有的帮助和建议!
答案 0 :(得分:1)
Oregon
不是有效区域。我相信它应该是us-west-2
,但请查看下面链接的文件以确定。
我遇到了同样的问题(导致完全相同的错误消息,因为getaddrinfo
错误是DNS失败)。我使用的是无效区域。我使用的us-standard
已重命名为us-east-1
。
根据AWS Regions and Endpoints文件:
注意强>
Amazon S3将美国标准区域重命名为美国东部(弗吉尼亚北部)区域,以与AWS区域命名约定保持一致。端点没有变化,您无需对应用程序进行任何更改。
因此,请仔细检查ENV.fetch('AWS_REGION')
返回的值(实际由heroku config:set AWS_REGION=your_aws_region
设置的值,并希望它不是字面your_aws_region
...我和#39} ; ve也在过去做过。)
你应该可以通过运行来检查这个:
heroku get AWS_REGION