我正在编写一个可能会访问不同地区的存储桶的Amazon S3客户端.我们的IT部门对传出HTTP非常严格,我希望对此客户端使用路径式访问,以避免必须为每个新存储桶进行防火墙更改.
我的客户端使用java SDK v1.4.4.2.作为测试,我在新加坡创建了一个存储桶,然后进行了一个列出对象的工作S3单元测试,并将其更改为使用路径式访问:
AmazonS3 client = new AmazonS3Client(environ);
client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));
Run Code Online (Sandbox Code Playgroud)
当我使用此版本的客户端运行单元测试时,所有S3访问都会失败,并且我必须设置正确的端点.
我的问题是,我是否必须添加逻辑来查找存储区域并为客户端设置该区域?或者SDK可以设置为自己做吗?似乎SDK应该能够自动执行此操作,因为查找存储桶位置的功能就在那里.
作为一个侧面问题,使用路径式访问是否存在任何特定的性能问题?如果我还不知道,我认为只是额外的往返查询桶的位置.
小智 10
如果您需要客户端访问不同区域中的对象,您可能希望使用以下选项:
AmazonS3ClientBuilder builder.withForceGlobalBucketAccessEnabled(true)
Run Code Online (Sandbox Code Playgroud)
构建客户端...请参阅s3客户端构建器文档
即使客户端默认区域与目标存储桶/对象不同,也可以确保成功请求.
另外,如果你需要获取桶" mybucketname "的确切终点,你可以使用(headBucketResult ref page):
s3client.headBucket(HeadBucketRequest("mybucketname")).getBucketRegion()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4159 次 |
| 最近记录: |