Seahorse :: Client :: NetworkingError(主机名“mybucketname.s3.s3-us-west-2.amazonaws.com”与服务器证书不匹配)

时间:2015-02-17 09:38:37

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

我在使用Amazon AWS SDK版本2调用.head_object时遇到问题。我正在使用Figaro工作,使用Figaro设置我的环境变量并将其命名为AWS SDK期望:AWS_ACCESS_KEY_ID等< / p>

这是我用来尝试调用head_object的代码:

direct_upload_url_data = %r{\/(?<path>uploads\/.+\/(?<filename>.+))\z}.match(direct_upload_url)
direct_upload_url_data_string = direct_upload_url_data.to_s
s3 = Aws::S3::Client.new
direct_upload_head = s3.head_object(
    bucket: ENV['AWS_BUCKET'],
    key: direct_upload_url_data_string
  )

  self.image_file_name     = direct_upload_url_data[:filename]
  self.image_file_size     = direct_upload_head.content_length
  self.image_content_type  = direct_upload_head.content_type
  self.image_updated_at    = direct_upload_head.last_modified

正如您所看到的,我正在尝试访问特定文件的元数据。我已经检查了正则表达式,它似乎正在返回正确的键,就像“uploads / {uniqueID} /image.jpg”这个错误正在我试图调用head_object的行上。我得到的错误是

Seahorse::Client::NetworkingError (hostname "mybucketname.s3.s3-us-west-2.amazonaws.com" does not match the server certificate)

当我走到我的水桶时,那道路不是我看到的,我看到https://s3-us-west-2.amazonaws.com/mybucketname所以我不确定这是否是我收到错误的原因。在使用AWS SDK Version 1之前,我已连接到此存储桶,因此我知道我的访问权限和密钥正常工作。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您的亚马逊水桶似乎有错误的地区名称。 尝试将“s3-us-west-2”改为“us-west-2”。

答案 1 :(得分:0)

我非常肯定你已经解决了这个问题但是对于未来的读者来说,正如tapatun所提到的,请确保你的地区名称不包含s3前缀,并且应该是:“us-west-2”。

但之后,请务必重新启动服务器,否则旧的配置可能仍会让您继续疯狂追逐!

祝你好运,祝大家编码!