目前,我正在使用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/
知道如何设置路径样式寻址而不是虚拟主机地址吗?感谢。
答案 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/"