rails 5 Seahorse :: Client :: NetworkingError(getaddrinfo:名称或服务未知):

时间:2016-11-15 01:31:57

标签: ruby-on-rails amazon-web-services heroku amazon-s3

我正在使用回形针将图像上传到亚马逊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的新手,不知道在哪里进行故障排除。非常感谢所有的帮助和建议!

这是我的heroku日志的图像,如果有帮助的话。似乎是通用的,但我不熟悉,如果它可用,可以获得更多细节。 enter image description here

1 个答案:

答案 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