我的用例如下。我想使用Java S3 SDK将文件从某个s3Location移动到不同的s3Location。
例如,如果文件位于bucket/current
,我想将其移至bucket/old
。
我目前可以将文件下载为S3Object,将该对象转换为文件(java.io,因为S3 Java客户端因为我不明白不允许你上传S3Object,所以您下载的对象!)并上传该文件。我很好奇是否有更好的方法。
谢谢!
答案 0 :(得分:5)
在S3中没有直接实现重命名或移动操作。相反,典型的解决方案是将对象复制到新位置,然后删除原始对象。您可以使用AWS SDK for Java的AmazonS3#copyObject
和AmazonS3#deleteObject
方法完成此操作。
这比您在本地下载文件然后在新密钥下重新上传文件的问题中描述的技术更有效。 copyObject
内部使用S3 REST API PUT Object - Copy操作中提供的S3服务器端副本。该副本在S3服务器端执行,因此与本地文件下载/上载相比,您不必支付I / O成本(以及从AWS服务器转出时的实际成本)。
请注意,这与典型本地文件系统中提供的重命名操作有很大不同,原因有多种:
答案 1 :(得分:0)
您可以使用StorageService类的moveObject。