AWS SDK for Java 有两个版本:V1 和 V2。 AmazonS3Client 是较旧的 V1 版本,而 S3Client 是较新的 V2 版本。
亚马逊推荐使用 V2:
AWS SDK for Java 2.x 是对 1.x 版代码库的重大改写。它建立在 Java 8+ 之上,并添加了几个经常请求的特性。其中包括对非阻塞 I/O 的支持以及在运行时插入不同 HTTP 实现的能力。
您可以在此处的 Java Developer V2 开发指南中找到 Amazon S3 V2 代码示例:
Developer guide - AWS SDK for Java 2.x
(此时,Amazon S3 服务指南中没有 V2 示例。)
此外,您可以在此处的 AWS Github 中找到所有 Amazon S3 V2 代码示例:
https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/example_code/s3
如果您不熟悉使用 AWS SDK for Java V2 开发应用程序,建议您从这里开始:
Get started with the AWS SDK for Java 2.x
(此入门主题恰好使用 Amazon S3 Java V2 API 来帮助您开始使用适用于 Java V2 的 AWS 开发工具包)
更新:
您说:但是,在 AmazonS3 类型中不支持 setObjectTagging,但在 S3Client 类型中支持。
使用 Java V2 API 标记 Amazon S3 存储桶中的对象的方法是使用以下代码:
// First need to get existing tag set; otherwise the existing tags are overwritten.
GetObjectTaggingRequest getObjectTaggingRequest = GetObjectTaggingRequest.builder()
.bucket(bucketName)
.key(key)
.build();
GetObjectTaggingResponse response = s3.getObjectTagging(getObjectTaggingRequest);
// Get the existing immutable list - cannot modify this list.
List<Tag> existingList = response.tagSet();
ArrayList<Tag> newTagList = new ArrayList(new ArrayList<>(existingList));
// Create a new tag.
Tag myTag = Tag.builder()
.key(label)
.value(LabelValue)
.build();
// push new tag to list.
newTagList.add(myTag);
Tagging tagging = Tagging.builder()
.tagSet(newTagList)
.build();
PutObjectTaggingRequest taggingRequest = PutObjectTaggingRequest.builder()
.key(key)
.bucket(bucketName)
.tagging(tagging)
.build();
s3.putObjectTagging(taggingRequest);