Как клонировать объекты в Amazon S3 с помощью RestS3Service - PullRequest
0 голосов
/ 12 марта 2011

, поэтому я пытаюсь клонировать объекты в папке на моей учетной записи S3 (Amazon S3).Но мне было интересно, есть ли способ сделать это без необходимости сначала записать файл в мою локальную систему, а затем загрузить этот файл обратно на S3?

, в конце концов я хочу, чтобы это было полностью рекурсивное клонирование папок и объектовв заданном ведре, но сейчас я застрял на том, чтобы заставить его эффективно клонировать.

говорят, что путь ведра - images.example.com/products/prodSku, и в этой папке prodSku у меня есть куча изображенийя хочу скопировать в новую папку

вот что у меня есть до сих пор.

(примечание: это написано на Groovy, но если вы знаете Java, это то же самое)

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
}

Извините, что форматирование все испортилось, впервые отправив сообщение.

но любая помощь будет принята с благодарностью!

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Не уверен насчет API JetS3t, но AWS SDK для Java предоставляет простой copyObject метод

0 голосов
/ 10 апреля 2011

, поэтому я решил выяснить, как выполнить клонирование ресурса в s3 с помощью JetS3t. это было проще, чем я ожидал. Я опубликую это, если кто-нибудь когда-нибудь погуглит этот вопрос.

сначала нужно получить объект s3, который вы хотите клонировать. после этого вызовите setKey (имя файла) для объекта s3. «filename» - это путь, по которому вы хотите, чтобы за объектом следовало само имя файла, т. е. yours3bucketname / products / assets / picture.png

После того, как вы закончите с этим, просто вызовите putObject (bucket_name, s3object), передавая s3object, для которого вы вызвали setKey, в качестве второго аргумента.

удачи! счастливого программирования!

...