2011-03-12 3 views
0

alors j'essaie de cloner des objets dans un dossier sur mon compte S3 (Amazon S3). Mais je me demandais s'il y avait un moyen de le faire sans avoir d'abord écrire le fichier sur mon système local, puis de le télécharger sur S3? Finalement, je veux que ce soit des dossiers et des objets de clonage entièrement récursifs dans un compartiment donné, mais pour l'instant je suis bloqué sur l'obtention de cloner efficacement.Comment cloner des objets dans Amazon S3 en utilisant RestS3Service

disent que le trajet du godet est images.example.com/products/prodSku et dans ce dossier prodSku j'ai un tas d'images que je veux copier dans un nouveau dossier

voici ce que j'ai jusqu'à présent.

(note: ce qui est écrit dans groovy, mais si vous savez java, c'est la même chose)

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 
} 

Désolé la mise en forme est tout foiré, la première fois l'affichage d'un message.

mais toute aide serait grandement appréciée!

Merci!

Répondre

1

ne suis pas sûr API JetS3t mais le AWS SDK for Java fournit une méthode simple copyObject

+2

Les exemples de copie JetS3t sont [ici] (http://jets3t.s3.amazonaws.com/toolkit/code-samples.html#copying). –

0

donc je fini par trouver comment faire cloner l'actif en utilisant s3 JetS3t. C'était plus simple que ce à quoi je m'attendais. Je vais poster au cas où quelqu'un googles jamais cette question.

Tout est d'abord obtenir l'objet s3 que vous voulez cloner. après l'avoir, appelez setKey (nom de fichier) sur l'objet s3. "filename" est le chemin où vous voulez que l'objet soit suivi par le nom du fichier lui-même ie yours3bucketname/products/assets/picture.png

après avoir fini avec cela, appelez simplement putObject (bucket_name, s3object), en passant l'objet s3 que vous avez appelé setKey on comme deuxième argument.

bonne chance! bonne programmation!

Questions connexes