如何更新现有 Amazon S3 文件的元数据?

新手上路,请多包涵

我需要更新所有 AmazonS3 的云文件中的缓存控制标头。但是,我不知道如何使用 jclouds API 来做到这一点。我正在使用 apache jclouds 插件。我得到了两个相关的答案:

第一个答案是建议使用 grails 的 jcloud 插件中不可用的 SwiftKey Api 类。第二个答案是使用 AWS java sdk,它已经有一个 grails 包装插件 https://grails.org/plugin/aws-sdk 但它不支持元数据更新。

原文由 Priyanshu Chauhan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

可以通过执行对象复制来更改元数据(请参阅 如何使用 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);

这是否是哲学上的“更新”由您决定。

原文由 Dan Gravell 发布,翻译遵循 CC BY-SA 3.0 许可协议

你不能:

每个 Amazon S3 对象都有数据、密钥和元数据。对象键(或键名)唯一标识桶中的对象。对象元数据是一组名称-值对。您可以在上传时设置对象元数据。 上传对象后,您无法修改对象元数据。修改对象元数据的唯一方法是复制对象并设置元数据。

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

原文由 E.J. Brennan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题