接口 S3Client 和 Class AmazonS3Client 之间的区别
difference between Interface S3Client and Class AmazonS3Client
我正在创建一个需要 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
中的某些功能怎么办?
Java 的 AWS 开发工具包有两个版本:V1 和 V2。 AmazonS3Client 是较旧的 V1 版本,而 S3Client 是较新的 V2 版本。
亚马逊推荐使用V2:
适用于 Java 2.x 的 AWS 开发工具包是对版本 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
如果您不熟悉使用适用于 Java V2 的 AWS SDK 开发应用程序,建议您从这里开始:
Get started with the AWS SDK for Java 2.x
(这个入门主题恰好使用 Amazon S3 Java V2 API 来帮助你,运行 使用 AWS SDK for Java V2)
更新:
您声明:但是,setObjectTagging 在 AmazonS3 类型中受支持,但在 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);
我正在创建一个需要 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
中的某些功能怎么办?
Java 的 AWS 开发工具包有两个版本:V1 和 V2。 AmazonS3Client 是较旧的 V1 版本,而 S3Client 是较新的 V2 版本。
亚马逊推荐使用V2:
适用于 Java 2.x 的 AWS 开发工具包是对版本 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
如果您不熟悉使用适用于 Java V2 的 AWS SDK 开发应用程序,建议您从这里开始:
Get started with the AWS SDK for Java 2.x
(这个入门主题恰好使用 Amazon S3 Java V2 API 来帮助你,运行 使用 AWS SDK for Java V2)
更新:
您声明:但是,setObjectTagging 在 AmazonS3 类型中受支持,但在 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);