web-dev-qa-db-fra.com

Impossible de supprimer le répertoire d'Amazon S3

J'utilise l'interface Web de S3 d'Amazon. Lorsque je clique avec le bouton droit de la souris sur un dossier X et que je choisis Supprimer, X semble être supprimé. Ensuite, lorsque j'actualise l'interface, X peut disparaître ou rester; si je continue à cliquer sur rafraîchir, le dossier est manquant ou présent. Est-ce un bug ou est-ce que je fais quelque chose de mal? Le dossier est toujours présent, autant que je sache; un de mes travaux EMR se plaint que le dossier de sortie X existe toujours.

24
verve

J'ai eu le même problème dans l'interface Web AWS après la suppression d'un dossier "récursif" dans un compartiment par AWS Command Line (CLI). Certains objets ont réapparu de manière aléatoire (pas des fichiers, mais bien des "dossiers") dans l'interface Web. Même si j'ai essayé de supprimer ces dossiers dans l'interface Web, ils étaient toujours là (l'interface indique que l'opération a abouti ...)

Solution qui a fonctionné pour moi dans l'interface Web AWS: Clic droit sur le dossier -> CUT et PASTE dans un autre dossier. Travaillé très bien, puis supprimé le nouveau dossier. Disparu!

Essayé de la même façon que le réponse de Kristoffer, mais CUT/PASTE dans un autre dossier empêchait la suppression du nouveau dossier.

Autres hacking: créer un nouveau compartiment temporaire. COUPE/COLLE le dossier dans ce compartiment et supprime le compartiment.

10
Zanon

S3 n'utilise pas réellement de dossiers. Au lieu de cela, les séparateurs de chemin dans les chemins d'objet sont traités comme des dossiers. Si vous souhaitez supprimer un dossier, tout son contenu devra être supprimé.

En cas de retard dans la suppression de tout le contenu, le dossier peut continuer d'exister.

8
datasage

Depuis mars 2017, l'interface utilisateur de la console AWS a changé et vous ne pouvez plus entrer dans un «mode de gestion des versions» décrit dans mon ancien message.

Il semble maintenant que les dossiers contenant des fichiers versionnés puissent être supprimés librement et sans restriction.

Si ce n'est pas le cas, laissez un commentaire pour que je puisse corriger ce message.


Version précédente de AWS Console

Si vous utilisez AWS Management Console et que vous avez activé le contrôle de versionSUR, vous devez être en «mode de contrôle de version» pour supprimer le dossier. Vous entrez en «versioning mode» en allant en haut de la page et à côté de «Versions:», sélectionnez le bouton Afficher . Ensuite, vous pouvez procéder à un clic droit et supprimer votre dossier . Espérons que cela aide quelqu'un.

6
Ian Newland

J'ai essayé diverses alternatives pour supprimer de l'interface Web afin de supprimer un dossier contenant des sous-dossiers sans succès .

3
Manoj Srivastava

Je pense que je vois un comportement similaire. La gestion des versions de mon seau est activée; même avec un dossier/répertoire vide dans le compartiment, la tentative de "suppression" du dossier/répertoire dans le compartiment via la console AWS Web UI ne provoque pas sa suppression effective. Je suppose que les versions "supprimées" des fichiers dans ce chemin existent toujours (mais ne sont pas visibles dans la console Web), donc le compartiment n'est pas vraiment vide, et n'est pas vraiment supprimé. Vous devrez peut-être vérifier, via les outils de la CLI, si des versions supprimées des fichiers de ce dossier/répertoire existent (mais ne sont pas visibles dans la console Web), supprimez-les définitivement, puis essayez de supprimer le répertoire/dossier de votre compartiment.

2
Mike Atlas

J'ai le même problème que je ne peux pas supprimer un compartiment s3, avec le message "Une erreur est survenue (AccessDenied) lors de l'appel de l'opération DeleteBucket: Accès refusé"

Après un moment, je supprime la politique de compartiment dans l'onglet "permission", bouton "Politique de compartiment" et cela fonctionna comme un charme, avec:

aws s3 rb s3: //elasticbeanstalk-us-west-..../ --force

J'espère que cette aide! Est une autre option Pablo

0
Pablo Ezequiel

J'ai eu le même problème et je n'avais pas accès à la console Amazon mais je pouvais le supprimer avec ce code Java. 

    AmazonS3Client amazonS3Client = new AmazonS3Client(basicAWSCredentials);
    ObjectListing objectListing = amazonS3Client.listObjects("bucketName", "prefix");
    DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest("bucketName");
    List<DeleteObjectsRequest.KeyVersion> keysToDelete = new ArrayList<>();
    objectListing.getObjectSummaries().forEach(s3ObjectSummary -> {
        keysToDelete.add(new DeleteObjectsRequest.KeyVersion(s3ObjectSummary.getKey()));
    });
    deleteObjectsRequest.setKeys(keysToDelete);
    amazonS3Client.deleteObjects(deleteObjectsRequest);

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-Java-sdk</artifactId>
        <version>1.7.4</version>
    </dependency>
0
Anis Smail