2012-06-27 20 views
6

Tôi đang sử dụng AWS Java SDK do Amazon cung cấp để tương tác với dịch vụ S3. .Định cấu hình kiểu đường dẫn trong Java SDK Amazon S3

Dường như theo mặc định, SDK sử dụng ảo-host-phong cách cho các nhóm (tức là xô được-xăng bởi xô-tên .s3.amazonaws.com Ví dụ:

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 

Tuy nhiên, tôi cần phải sử dụng con đường mang phong cách trong ứng dụng của tôi, như sau:?

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 

có thể sử dụng đường dẫn phong cách với Java SDK, xin vui lòng trong trường hợp dương tính, làm thế nào tôi có thể làm điều đó tôi phải nhìn vào ClientConfiguration và các lớp AmazonS3Client nhưng tôi không thấy bất kỳ phương pháp nào để làm t ...

Phiên bản SDK của tôi, trong trường hợp quan trọng, là: 2.0.0v201206151133.

Cảm ơn!


Fermín

PD. Một số tiêu đề đã bị bỏ qua trong các mẫu vì mục đích đơn giản.

CHỈNH SỬA: Tính năng như vậy (để định cấu hình kiểu đường dẫn URL được sử dụng bởi AmazonS3Client) khá hữu ích trong trường hợp bạn có nhóm có dấu chấm ("."). Yêu cầu HTTPS với kiểu máy chủ ảo không hoạt động, hãy xem thisthis.

+0

Cũng publised trong diễn đàn các nhà phát triển AWS: https://forums.aws.amazon.com/thread.jspa?threadID=98203 – fgalan

Trả lời

0

Không có cách nào để buộc địa chỉ nhóm kiểu V1 (kiểu đường dẫn) sử dụng SDK Java. Ngoại lệ duy nhất là khi tên nhóm của bạn không phải là địa chỉ DNS, trong trường hợp đó, SDK sẽ tự động sử dụng địa chỉ V1. Điều này xảy ra, ví dụ: khi tên nhóm của bạn chứa một khoảng thời gian (không được khuyến khích vì lý do này).

Nếu bạn muốn chức năng này, bạn sẽ phải sửa đổi lớp AmazonS3Client để cho phép.

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

Tuy nhiên, tôi không chắc chắn tôi tin rằng tuyên bố của bạn rằng bạn "cần" để sử dụng V1 xô giải quyết. SDK đã xử lý tất cả các trường hợp cần phải có địa chỉ V1 - hoặc nếu bạn đã tìm thấy trường hợp không có địa chỉ, vui lòng cho chúng tôi biết trong diễn đàn.

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

8

Phương pháp này withPathStyleAccess đã bị phản đối. Vui lòng sử dụng sau đây thay vì:

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

phương pháp tán thành:

này bây giờ là có thể, tôi không chắc chắn khi nó được giới thiệu, nhưng nó có sẵn trong ít nhất phiên bản 1.7.8 của Java AWS SDK.

Chỉ cần gọi setClientOptions trên dụ AmazonS3 của bạn:

AmazonS3 client = new AmazonS3Client(credentials); 
client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true)); 
Các vấn đề liên quan