本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 接入点或多区域接入点后,您可以调用对象方法(例如 putObject
和 getObject
),并提供接入点标识符而不是桶名称。
例如,如果接入点 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>