如何使用aws-sdk在amazons3上更新对象的metdata



我正在从事与amazons3服务相关的java项目,在该项目中,我使用jets3库进行创建bucket等s3操作,现在我用aws-sdk-java-v2替换jets3,但问题是,在jets3中,有以下方法更新上传对象的元数据:-

s3ervice.updateObjectMetadata(sBucket, sObject);

但在新aws-sdk中,我没有找到任何方法。我使用以下代码块来更新metdata,但每次内容被替换时,我只想更新元数据而不替换内容,所以请建议。

代码:-

public static boolean updateObjectMetadataByCopyObject(S3Client s3Client,
String bucketName,
String objectKey
) {
Map ds = new HashMap<>();
ds.put("ds", "dsa");
String encodedUrl = null;
try {
encodedUrl = URLEncoder.encode(bucketName + "/" + objectKey, StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException e) {
System.out.println("URL could not be encoded: " + e.getMessage());
}
CopyObjectRequest copyReq = CopyObjectRequest.builder()
.destinationBucket(bucketName).copySource(encodedUrl)
.destinationKey(objectKey).metadata(ds).storageClass(StorageClass.REDUCED_REDUNDANCY)
.build();
try {
CopyObjectResponse copyRes = s3Client.copyObject(copyReq);
copyRes.copyObjectResult().toString();
return true;
} catch (S3Exception e) {
throw e;
}
}## Heading ##

请建议如何使用aws-sdk-v2更新上传对象的metdata。

无拷贝元数据

不幸的是,如果不执行复制对象,就不可能更新元数据。以下是亚马逊的摘录

上传对象后,无法修改对象元数据。修改对象元数据的唯一方法是复制对象并设置元数据。修改对象元数据的唯一方法是复制对象并设置元数据。

使用对象元数据

此外,即使是通过管理控制台公开的更改元数据的功能也会复制对象。

此操作创建一个具有更新设置和上次修改日期的对象副本。

在AmazonS3控制台中编辑对象元数据

最新更新