【问题标题】:How to update metdata of object on amazon s3 using aws sdk?如何使用 aws sdk 在 amazon s3 上更新对象的元数据?
【发布时间】:2021-09-26 22:36:25
【问题描述】:

我正在研究与亚马逊 s3 服务相关的 java 项目,在该项目中我使用 jets3 库进行 s3 操作,如创建存储桶等,现在我用 aws-sdk-java-v2 替换 jets3 但问题即在 jets3 中更新上传对象元数据的方法是:-

s3ervice.updateObjectMetadata(sBucket, sObject);

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

代码:-

    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 更新上传对象的元数据。

【问题讨论】:

    标签: java aws-sdk-java-2.0


    【解决方案1】:

    没有复制的元数据

    不幸的是,如果不复制对象就无法更新元数据。这是亚马逊的摘录

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

    Working with object metadata

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

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

    Editing object metadata in the Amazon S3 console

    【讨论】:

      猜你喜欢
      • 2012-08-04
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 2017-07-13
      • 2018-09-20
      • 1970-01-01
      相关资源
      最近更新 更多