首页 > 解决方案 > [雾] [警告] 无法获取凭据:没有到主机的路由 - 连接 (2) -(Errno::EHOSTUNREACH)

问题描述

嗨,我在 ruby​​ on rails 中用亚马逊 s3 配置了carrierwave。在控制台中向我显示此消息

[雾] [警告] 无法获取凭据:没有到主机的路由 - 连接 (2) -(Errno::EHOSTUNREACH)

而且我的应用程序加载滞后,但是当我尝试上传文件时,应用程序挂起,但文件在存储桶中上传正确。

这是我的配置 s3。初始化器。

CarrierWave.configure do |config|
  config.fog_provider = 'fog/aws'                        # required
  config.fog_credentials = {
    provider:              'AWS',                        # required
    aws_access_key_id:     'AK******',                        # required unless using use_iam_profile
    aws_secret_access_key: 'rKI********',                        # required unless using use_iam_profile
    use_iam_profile:       true,                         # optional, defaults to false
    region:                'us-east-2'                  # optional, defaults to 'us-east-1'

  }
  config.fog_directory  = '<name of bucked>'                                      # required
  config.fog_public     = false                                                 # optional, defaults to true
  config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" } # optional, defaults to {}
end

标签: amazon-web-servicesamazon-s3carrierwaveamazon-iam

解决方案


所以答案在评论use_iam_profile中:在carrierwave/fog的config/initializers/carrirewave.rb(或fog.rb)文件中“设置 为false”

CarrierWave.configure do |config|
  config.fog_credentials {
    provider:              'AWS', 
    aws_access_key_id:     'AK******',           
    aws_secret_access_key: 'rKI********', 
    use_iam_profile:       false,
    # ...

为什么 ??

use_iam_profile对 s3 存储桶进行身份验证的方式非常不同。所以如果你使用aws_access_key_id&&aws_secret_access_key那么use_iam_profile应该是false


推荐阅读