簡體   English   中英

如何使用 aws sdk 在 amazon s3 上更新對象的元數據?

[英]How to update metdata of object on amazon s3 using aws sdk?

我正在研究與 amazon 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 更新上傳對象的元數據。

沒有復制的元數據

不幸的是,如果不執行復制對象,則無法更新元數據。 這是亞馬遜的摘錄

上傳對象后,您將無法修改對象元數據。 修改對象元數據的唯一方法是制作對象的副本並設置元數據。 修改對象元數據的唯一方法是制作對象的副本並設置元數據。

使用對象元數據

此外,即使是通過管理控制台公開的用於更改元數據的功能也會復制對象。

此操作使用更新的設置和上次修改日期創建對象的副本。

在 Amazon S3 控制台中編輯對象元數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM