使用 Amazon S3 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon S3

本部分提供使用 Amazon SDK for Java 2.x对 Amazon Simple Storage Service(S3)进行编程的示例。

以下示例仅包含演示每种方法所需的代码。完整的示例代码可在上找到 GitHub。您可以从中下载单个源文件,也可以将存储库复制到本地以获得所有示例,然后构建并运行它们。

注意

从版本 2.18.x 及更高版本开始,在包含端点覆盖时 Amazon SDK for Java 2.x 使用虚拟主机式寻址。这适用于只要桶名称是有效 DNS 标签的所有情况。

在客户端生成器中使用 true 调用 forcePathStyle 方法,可强制客户端对桶使用路径式寻址。

以下示例显示了配置了端点覆盖并使用路径式寻址的服务客户端。

S3Client client = S3Client.builder() .region(Region.US_WEST_2) .endpointOverride(URI.create("https://s3.us-west-2.amazonaws.com")) .forcePathStyle(true) .build();

使用接入点或多区域接入点

设置 Amazon S3 接入点多区域接入点后,您可以调用对象方法(例如 putObjectgetObject),并提供接入点标识符而不是桶名称。

例如,如果接入点 ARN 标识符为 arn:aws:s3:us-west-2:123456789012:accesspoint/test,则可以使用以下代码段来调用 putObject 方法。

Path path = Paths.get(URI.create("file:///temp/file.txt")); s3Client.putObject(builder -> builder .key("myKey") .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint/test") , path);

您还可以为 bucket 参数使用接入点的桶式别名来代替 ARN 字符串。

要使用多区域接入点,请将 bucket 参数替换为采用以下格式的多区域接入点 ARN。

arn:aws:s3::account-id:accesspoint/MultiRegionAccessPoint_alias

添加以下 Maven 依赖项,通过适用于 Java 的 SDK 使用多区域接入点。在 Maven Central 中搜索 latest version

<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>auth-crt</artifactId> <version>VERSION</version> </dependency>