我正在编写一个可能访问不同区域的存储桶的 Amazon S3 客户端。我们的 IT 部门对传出 HTTP 相当严格,我想为此客户端使用路径式访问,以避免必须为每个新存储桶进行防火墙更改。
我的客户端使用 java SDK v1.4.4.2。作为测试,我在新加坡创建了一个存储桶,然后进行了一个列出对象的工作 S3 单元测试,并将其更改为使用路径式访问:
AmazonS3 client = new AmazonS3Client(environ);
client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));
当我使用此版本的客户端运行单元测试时,所有 S3 访问都失败,并出现我必须设置正确端点的错误。
我的问题是,我是否必须添加逻辑来查找存储桶的区域并为客户端设置它?还是可以将 SDK 设置为自行执行此操作?似乎 SDK 应该能够自动执行此操作,因为查找存储桶位置的功能就在那里。
作为一个附带问题,使用路径式访问是否存在任何特定的性能问题?如果我还不知道存储桶的位置,我想这只是一次额外的往返行程。