2016-08-08 2 views
0

Derzeit ich GET-Anfragen sandte aws-sdk Rubin wie folgt bis S3 mit:Amazon S3: Wie Anfragen einstellen virtuelle Host verwenden, in Ruby aws sdk

#!/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 

Aber die Anfrage versucht, diese zu schlagen URL-Endpunkt (virtuelles Hosting):

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

Ich möchte stattdessen Pfadstiladressierung verwenden. Dies ist, was ich der Anforderungs-URL Endpunkt aussehen soll:

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

Jede Idee, wie Pfad Stil setzen statt virtueller Hosting-Adresse Adressierung? Vielen Dank.

Antwort

0

ich die Antwort für meine eigene Frage gefunden, nachdem Source Code

Aws.config[:s3] = { force_path_style: true } 

auf den Quellcode von Rubin aws-sdk suchen Hinzufügen der über Zeile gezwungen, Pfadstiladressierung zu verwenden.

0

Sie müssen die Option :virtual_host auf true gemäß documentation einstellen.

Also in Ihrem Fall so etwas wie dies funktionieren sollte:

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/"