我正在创建一个需要S3客户机作为参数的方法。我不知道我该宣布它是什么类型的。
这是S3Client https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html的文档
忽略,因为回答了(这是AmazonS3Client https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html的文档,我的问题是推荐哪种类型,它们之间有什么区别?(谢谢!)
更新:
我在这里发现了另一个S3客户机:AmazonS3接口。https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html
但是,在类型setObjectTagging中支持的不是AmazonS3,而是S3Client类型。
AmazonS3是否提供了比S3Client更多的功能?如果我需要一些AmazonS3中的函数,而不是S3Client中的函数,或者S3Client中的一些函数,而不是AmazonS3中的函数呢?
发布于 2021-06-11 22:06:10
有两个版本: V1和V2。AmazonS3Client是较早的V1版本,而S3Client是较新的V2版本。
亚马逊建议使用V2:
AWSSDKforJava2.x是版本1.x代码库的主要重写版本。它构建在Java 8+之上,并添加了几个经常被请求的特性。这包括对非阻塞I/O的支持,以及在运行时插入不同的HTTP实现的能力。
您可以在这里的中找到S3 V2代码示例:
(此时,Amazon服务指南中没有S3示例。)
此外,您还可以在这里找到AWS中的所有S3 V2代码示例:
如果您不熟悉使用AWS V2开发应用程序,建议您从这里开始:
(这个即将开始的主题恰好使用来帮助您启动和运行S3 S3 V2)
更新
您说过:,但在类型AmazonS3中支持setObjectTagging,但在S3Client类型中支持。
使用在S3 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);https://stackoverflow.com/questions/67943534
复制相似问题