在适用于 Java 的 亚马逊云科技 开发工具包中引入 S3 跨区域支持 2.x

作者: 约翰·维加 斯 | 2023

适用于 Java 的 亚马逊云科技 开发工具包团队很高兴推出适用于 Java 的 亚马逊云科技 开发工具包 2.x 的最新新增功能 :Ama zon Simple Storage Service (Amazon S3) 跨区域客户端功能。借助这项新功能,您可以使用配置为跨区域访问的单个客户端,轻松访问不同 亚马逊云科技 区域中的 Amazon S3 存储桶。加入我们,探索这项激动人心的增强功能所带来的可能性和便利性。

动机

使用 Amazon S3 存储桶时的一个常见挑战是需要知道存储桶的区域才能与之交互。用户可能并不总是对存储桶的区域有明确的了解,因此需要进行额外的调用来确定该区域。新的 Amazon S3 跨区域客户端功能通过支持跨不同区域无缝访问 S3 存储桶来解决此问题。在这篇博客文章中,我们将探讨此功能的重要性以及如何使用它来简化跨区域 S3 存储桶访问。

入门

首先,将 Amazon S3 依赖项 添加到您的开发工具包版本 2.20.111 或更高版本的项目中:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>s3</artifactId>
    <version>2.20.111</version>
</dependency>

默认情况下,跨区域功能处于禁用状态。要在 S3Client 上启用它,请在 S3Client Builder 上将 crossRegionAccessEnabled 设置为

S3AsyncClient client = S3AsyncClient.builder()
                                    .crossRegionAccessEnabled(true)
                                    .build();

将请求路由到正确的区域

当您在请求中引用现有存储桶时,例如 “putObject” 请求,SDK 会向为客户端配置的区域发起请求。如果存储桶在该特定区域中不存在,则错误响应将包括存储桶所在的实际区域。随后,SDK 使用从错误响应中获得的区域信息向正确的区域发出请求。为了优化未来对同一存储桶的请求,SDK 会在客户端中缓存该区域。

启用跨区域存储桶访问的注意事项

启用跨区域存储桶访问时,请务必记住,如果存储桶不在客户端配置的位置,则第一个 API 调用可能会增加延迟。但是,后续调用受益于缓存的区域信息,从而提高了性能。请注意初次跨区域存储桶访问调用的潜在延迟,并做出相应的计划。

此功能不会影响对存储桶的访问;无论存储桶位于哪个区域,用户仍需要获得访问存储桶的授权。

结论

跨区域存储桶访问允许您访问存储桶而无需事先知道存储桶的区域,从而简化了 Amazon S3 存储桶的管理。了解对不同区域存储桶的首次调用 API 的路由过程、缓存功能和延迟增加非常重要。适用于 Java 的 亚马逊云科技 开发工具包 2.0 中提供的 Amazon S 3 跨区域客户端功能提供了一项有价值的功能。我们希望您会发现这项新功能很有用。如果您有任何问题、意见、疑虑或想法,请在 GitHub 问题页面上打开问题 或错误报告 。

作者简介:

Hayden Baker

约翰·维加斯

约翰·维加斯担任亚马逊网络服务 (亚马逊云科技) Java SDK 团队的软件开发工程师。他热衷于增强开发者体验,积极参与旨在提升软件开发水平的项目和工具。要进一步了解他的贡献,请随时在 @joviegas 账号下浏览他的 GitHub 个人资料。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。