Java 如何使用RestS3Service克隆Amazon S3中的对象

Java 如何使用RestS3Service克隆Amazon S3中的对象,java,groovy,amazon-s3,clone,Java,Groovy,Amazon S3,Clone,因此,我试图克隆S3(AmazonS3)帐户上文件夹中的对象。但我想知道是否有一种方法可以做到这一点,而不必先将文件写入本地系统,然后再将该文件上传回S3 最终,我希望它能够完全递归地克隆给定存储桶中的文件夹和对象,但目前我一直在努力让它高效地克隆 假设bucket路径为images.example.com/products/prodSku 在prodSku文件夹中,我有一堆图像要复制到一个新文件夹中 这是我到目前为止所拥有的 (注意:这是用groovy编写的,但是如果你懂java,那也是一样的

因此,我试图克隆S3(AmazonS3)帐户上文件夹中的对象。但我想知道是否有一种方法可以做到这一点,而不必先将文件写入本地系统,然后再将该文件上传回S3

最终,我希望它能够完全递归地克隆给定存储桶中的文件夹和对象,但目前我一直在努力让它高效地克隆

假设bucket路径为images.example.com/products/prodSku 在prodSku文件夹中,我有一堆图像要复制到一个新文件夹中

这是我到目前为止所拥有的

(注意:这是用groovy编写的,但是如果你懂java,那也是一样的)

很抱歉,格式混乱,第一次发布消息

但任何帮助都将不胜感激


谢谢

不确定JetS3t API,但是,确实提供了一个简单的方法

,因此我最终找到了如何使用JetS3t在s3中克隆资产的方法。这比我想象的要简单。我会把它贴上去,以防有人用谷歌搜索这个问题

我们要做的就是首先获取要克隆的s3对象。完成后,在s3对象上调用setKey(filename)。“filename”是您希望对象后跟文件名本身的路径,即yours3bucketname/products/assets/picture.png

完成后,只需调用putObject(bucket_name,s3object),将调用setKey的s3object作为第二个参数传递

祝你好运!快乐编程

JetS3t复制示例如下。
try{

    def s3os = restService.listObjects(bucket_name, sourcePrefix, null)
    def s3o
    for(def i in s3os){
        s3o = get(bucket_name, i.key)
        // i want to be able to do something like this, just putting the input stream
        // back into s3. but i can't. from what i know now, i have to write the
        // dataInputStream into a file locally, then use that file to create a new S3Object
        // which is placed as the second argument in the putObject method
        restService.putObject(destinationBucketName, s3o.dataInputStream)
    }
}catch(S3ServiceException e)
{

    println e
}