我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
在适用于 Java 的 亚马逊云科技 开发工具包中引入 S3 跨区域支持 2.x
适用于 Java 的 亚马逊云科技 开发工具包团队很高兴推出适用于 Java 的
动机
使用 Amazon S3 存储桶时的一个常见挑战是需要知道存储桶的区域才能与之交互。用户可能并不总是对存储桶的区域有明确的了解,因此需要进行额外的调用来确定该区域。新的 Amazon S3 跨区域客户端功能通过支持跨不同区域无缝访问 S3 存储桶来解决此问题。在这篇博客文章中,我们将探讨此功能的重要性以及如何使用它来简化跨区域 S3 存储桶访问。
入门
首先,将 Amazon S3
<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 的路由过程、缓存功能和延迟增加非常重要。适用于
作者简介:
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。