Amazon S3:如何在ruby aws sdk中设置使用虚拟主机的请求

时间:2016-08-08 14:36:26

标签: ruby amazon-s3 aws-sdk

目前,我正在使用aws-sdk ruby​​向SET发送GET请求,如下所示:

#!/usr/bin/ruby
#
require 'aws-sdk'
s3 = Aws::S3::Resource.new(region: 'test',     endpoint:'http://10.0.23.45:8081')
my_bucket = s3.bucket('test.bucket-name')
my_bucket.objects.limit(50).each do |obj|
   puts "  #{obj.key} => #{obj.etag}"
end

但请求正试图点击此url端点(虚拟主机):

http://test.bucket-name.10.0.23.45:8081

我想使用路径样式寻址。这就是我希望请求url端点看起来像:

http://10.0.23.45:8081/test.bucket-name/

知道如何设置路径样式寻址而不是虚拟主机地址吗?感谢。

2 个答案:

答案 0 :(得分:1)

在查看ruby aws-sdk Source Code

的源代码后,我找到了自己的问题的答案。
 Aws.config[:s3] = { force_path_style: true }

添加上述行强制使用路径样式寻址。

答案 1 :(得分:0)

您需要根据documentation将选项:virtual_host设置为true

所以在你的情况下,这样的事情应该有效:

s3.bucket('10.0.23.45:8081').object('test.bucket-name').public_url(virtual_host: true)
#=> "http://10.0.23.45:8081/test.bucket-name/"