Code pour supprimer tous les fichiers du préfixe spécifié dans AWS S3 (Java)

J'avais une telle exigence dans mon travail, alors je l'ai mise en œuvre.

C'était inattendu de penser que je pouvais écrire en une ou deux lignes ... La bibliothèque utilise Guava et lombok. (Malheureusement, mon lieu de travail est Java 7) Je pense qu'il existe un meilleur moyen, mais cela a fonctionné pour le moment, alors prenez note

code

S3ObjectDelete.java


@RequiredArgsConstructor
public class S3ObjectDelete {
    private AmazonS3Client client = new AmazonS3Client();

    private final String bucket;

    public static void main(String[] args) {
        val hoge = new S3ObjectDelete("Nom du godet");
        hoge.delete("Préfixe");
    }

    public void delete(String prefix) {
        //Il semble que le nombre maximum d'éléments pouvant être supprimés en même temps soit de 1000, donc divisez et traitez
        for (val keys : Lists.partition(keys(prefix), 1000)) {
            String[] array = keys.toArray(new String[keys.size()]);
            client.deleteObjects(new DeleteObjectsRequest(bucket).withKeys(array));
        }
    }

    List<String> keys(String prefix) {
        ObjectListing objects = client.listObjects(bucket, prefix);
        val f = new S3Object2StringKey();
        List<String> keys = new ArrayList<>(Lists.transform(objects.getObjectSummaries(), f));

        //Il semble que le nombre par défaut d'objets pouvant être acquis en même temps soit de 1000, alors bouclez et acquérez tous
        while (objects.isTruncated()) {
            objects = client.listNextBatchOfObjects(objects);
            keys.addAll(Lists.transform(objects.getObjectSummaries(), f));
        }
        return keys;
    }
}

public static class S3Object2StringKey implements Function<S3ObjectSummary, String> {
    @Override
    public String apply(S3ObjectSummary input) {
        return input.getKey();
    }
}

Postscript

** Le client Amazon S3 ** est obsolète Semble recommander l'utilisation d'AmazonS3ClientBuilder Cet article a été utile.

Recommended Posts

Code pour supprimer tous les fichiers du préfixe spécifié dans AWS S3 (Java)
[outil java] Un outil qui supprime les fichiers sous le chemin spécifié par extension
Importer des fichiers de la même hiérarchie en Java
Devinez le code de caractère en Java
Suppression d'objets AWS S3 dans Java
Dossiers renommés dans AWS S3 (Java)
Examiner les informations système de l'environnement d'exploitation AWS Lambda en Java
Examiner la liste des polices disponibles dans AWS Lambda + Java
Exemple de code utilisant JMustache, le moteur de modèles Moustache en Java
Obtenez le résultat de POST en Java
Obtenir une liste de fichiers S3 avec ListObjectsV2Request (AWS SDK for Java)
Ceci et cela de la mise en œuvre du jugement en temps réel des dates en Java
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Toutes les mêmes chaînes de code de hachage en Java
L'histoire de l'écriture de Java dans Emacs
[Java] Où est la classe d'implémentation de l'annotation qui existe dans BeanValidation?
Valider le jeton d'ID d'un utilisateur authentifié par AWS Cognito en Java
Exemple de code pour obtenir les valeurs de type SQL clés dans Java + MySQL 8.0
L'histoire de la comparaison de chaînes de bas niveau en Java
[Java] Gestion des Java Beans dans la chaîne de méthodes
L'histoire de la fabrication d'un Othello ordinaire à Java
À propos de l'idée des classes anonymes en Java
[Java] Accéder à l'URL signée de s3 (version signée 2)
L'histoire de l'apprentissage de Java dans la première programmation
Ressentez le passage du temps même à Java
Première touche de la classe Files (ou Java 8)
J'ai écrit un code de test (Junit & mockit) pour le code qui appelle l'API AWS (Java)
Obtenez l'URL de la destination de la redirection HTTP en Java
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Modifier la qualité de stockage des images JPEG en Java
Code qui affiche uniquement la caméra intégrée dans le traitement
Différences de code lors de l'utilisation du système de longueur en Java
Récapitulez les éléments supplémentaires de la classe Optional dans Java 9
L'histoire que .java est également construite dans Unity 2018
Un programme (Java) qui génère la somme des nombres pairs et impairs dans un tableau
Crier Java au cœur des technologies-Thèmes et technologies élémentaires que les ingénieurs Java devraient poursuivre en 2017-
Exemple de code pour obtenir les valeurs des principaux types SQL dans Java + Oracle Database 12c
Créer une base de données de tous les livres qui ont circulé au Japon au siècle dernier
[Java] Il semble que `0 <hoge <10` ne puisse pas être écrit dans l'expression conditionnelle de l'instruction ʻif`.
A été effectué dans l'année de base de la semaine calendaire Java
Une explication rapide des cinq types de statique Java
Obtenu le jour ouvrable suivant la date spécifiée avec JAVA
Résolution du problème d'affichage de toutes les données du tableau
[Java] [Java EE] [Glassfish] (suite) Style qui met en doute le cache de Glassfish
Comptez le nombre de chiffres après la virgule décimale en Java
Éléments à prendre en compte lors de l'écriture de code en Java
Corrigez le code de caractère en Java et lisez à partir de l'URL
Un programme qui compte le nombre de mots dans une liste
Comment dériver le dernier jour du mois en Java
[AWS / S3] Après tout, comment télécharger plusieurs fichiers?
[Java] Supprimer le nombre spécifié de caractères à la fin de StringBuilder
Fonction statique pour vérifier si l'erreur RVB de BufferdImage est dans le rapport spécifié en Java
Implémentons la condition que la circonférence et l'intérieur de la forme Ougi soient inclus dans Java [Partie 2]
Implémentons la condition que la circonférence et l'intérieur de la forme Ougi soient inclus dans Java [Partie 1]
Si vous n'appelez pas shutdownNow lorsque le transfert est terminé avec le SDK Java d'AWS S3, le thread continuera à rester.