我需要更新所有 AmazonS3 云文件中的缓存控制 header 。但是,我不知道如何使用 jclouds API 来做到这一点。 我正在使用 apache jclouds 插件。我得到了两个相关的答案:
- jclouds : how do I update metadata for an existing blob?
- Set Expires header for an existing S3 object using AWS Java SDK
第一个答案是建议使用 SwiftKey Api 类,该类在 grails 的 jcloud 插件中不可用。第二个答案是使用 AWS java sdk,其中已经有一个 grails 包装插件 https://grails.org/plugin/aws-sdk但不支持元数据更新。
最佳答案
可以通过执行对象复制来更改元数据(请参阅 How to update metadata using Amazon S3 SDK ):
ObjectMetadata metadataCopy = new ObjectMetadata();
// copy previous metadata
metadataCopy.addUserMetadata("newmetadata", "newmetadatavalue");
CopyObjectRequest request = new CopyObjectRequest(bucketName, existingKey, bucketName, existingKey)
.withNewObjectMetadata(metadataCopy);
amazonS3Client.copyObject(request);
这是否是哲学上的“更新”由您决定。
关于java - 如何更新现有 Amazon S3 文件的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61521563/