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