2012-06-27 14 views
6

Korzystam z usługi AWS Java SDK dostarczonej przez Amazon do interakcji z usługą S3. .Skonfiguruj styl ścieżki w pakiecie Java SDK Amazon S3

Wydaje się, że domyślnie SDK wykorzystuje wirtualny gospodarzowi styl do łyżek (tj wiadra są reffered przez wiadro nazwy .s3.amazonaws.com Przykład:

PUT/HTTP/1.1 
Host: a-given-bucket.s3.amazonaws.com 
Date: Tue, 26 Jun 2012 10:39:40 GMT 
Content-Type: application/x-www-form-urlencoded; charset=utf-8 
Content-Length: 0 

Jednak ja trzeba użyć ścieżki stylu w mojej aplikacji, w następujący sposób:?

PUT /a-given-bucket/ HTTP/1.1 
Host: s3.amazonaws.com 
Date: Thu, 21 Jun 2012 16:27:32 GMT 
Content-Type: application/x-www-form-urlencoded; charset=utf-8 
Content-Length: 0 

Czy jest możliwe aby użyć ścieżki stylu z Java SDK, prosimy o pozytywne sprawy, w jaki sposób mogę to zrobić muszę przyjrzeć ClientConfiguration i klasy AmazonS3Client, ale nie widzę żadnej metody t ...

Moja wersja SDK, jeśli ma to znaczenie, to: 2.0.0v201206151133.

Dzięki!


Fermín

PD. Niektóre nagłówki zostały pominięte w próbkach ze względu na prostotę.

EDIT: Taka cecha (skonfigurować styl ścieżki URL używany przez AmazonS3Client) jest bardzo przydatne w przypadku gdy masz wiadra z kropką w nich („”). Żądania HTTPS w stylu Virtual-host nie działają, zobacz this i this.

+0

publised Również w AWS deweloperów forum: https://forums.aws.amazon.com/thread.jspa?threadID=98203 – fgalan

Odpowiedz

0

Nie ma sposobu na wymuszenie adresowania zasobnika V1 (styl ścieżki) za pomocą pakietu Java SDK. Jedynym wyjątkiem jest sytuacja, w której nazwa zasobnika nie jest adresowalna dla systemu DNS. W takim przypadku pakiet SDK automatycznie użyje adresu V1. Dzieje się tak na przykład wtedy, gdy twoja nazwa zasobnika zawiera kropkę (która jest odradzana z tego powodu). Aby uzyskać tę funkcję, musisz zmodyfikować klasę AmazonS3Client, aby ją zaakceptować.

https://github.com/amazonwebservices/aws-sdk-for-java/

Jednak nie jestem pewien Wierzę roszczenia że „potrzeba”, aby używać V1 wiadro adresowania. Pakiet SDK obsługuje już wszystkie przypadki, w których konieczne jest adresowanie V1 - lub jeśli znalazłeś przypadek, w którym nie jest to konieczne, poinformuj nas o tym na forach.

https://forums.aws.amazon.com/forum.jspa?forumID=70

8

Sposób withPathStyleAccess została wycofana. Proszę kliknąć na poniższy zamiast:

AmazonS3 s3client = AmazonS3Client.builder() 
      .withCredentials((new AWSStaticCredentialsProvider(credentials))) 
      .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("host", "region")) 
      .withPathStyleAccessEnabled(true) 
      .build(); 

Przestarzałe metody:

Jest to teraz możliwe, nie jestem pewien, kiedy to został wprowadzony, ale jest ona dostępna przynajmniej w wersji 1.7.8 pakiet SDK środowiska Java AWS.

Wystarczy zadzwonić setClientOptions na AmazonS3 przykład:

AmazonS3 client = new AmazonS3Client(credentials); 
client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));