106 votes

Est-il possible d'effectuer un téléchargement en lot vers Amazon S3 ?

Est-ce qu'Amazon S3 prend en charge les téléversements en lot? J'ai un travail qui doit téléverser chaque nuit environ 100 000 fichiers qui peuvent aller jusqu'à 1 Go, mais qui sont fortement déséquilibrés en faveur de petits fichiers (90% font moins de 100 octets et 99% font moins de 1000 octets de longueur).

Est-ce que l'API S3 prend en charge le téléversement de plusieurs objets en un seul appel HTTP?

Tous les objets doivent être disponibles dans S3 en tant qu'objets individuels. Je ne peux pas les héberger ailleurs (FTP, etc.) ou dans un autre format (base de données, lecteur local EC2, etc.). C'est une exigence externe que je ne peux pas modifier.

1voto

Si vous voulez utiliser un programme Java pour le faire, vous pouvez :

public void uploadFolder(String bucket, String path, boolean includeSubDirectories) {
    File dir = new File(path);
    MultipleFileUpload upload = transferManager.uploadDirectory(bucket, "", dir, includeSubDirectories);
    try {
        upload.waitForCompletion();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

La création du client S3 et du gestionnaire de transfert pour se connecter à S3 local si vous souhaitez tester est la suivante :

AWSCredentials credentials = new BasicAWSCredentials(accessKey, token);
s3Client = new AmazonS3Client(credentials); // Cela est obsolète mais vous pouvez le créer en utilisant les beans standard fournis par spring/aws
s3Client.setEndpoint("http://127.0.0.1:9000");// Si vous souhaitez vous connecter à S3 local en utilisant Minio, etc...
TransferManager transferManager = TransferManagerBuilder.standard().withS3Client(s3Client).build();

0voto

Oren Points 1436

Un fichier (ou une partie d'un fichier) = une requête HTTP, mais l'API Java prend désormais en charge un téléchargement de fichiers multiple efficace sans avoir à écrire le multithreading vous-même, en utilisant TransferManager

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X