2012-08-03 4 views
1

Je suis à la recherche d'un meilleur moyen de supprimer un seau S3.
AWS SDK pour .Net ne permet pas de supprimer un compartiment non vide et
n'a aucun DeleteBucket() surchargé pour supprimer des objets enfants dans le compartiment.Supprimer un seau dans S3

C'est la façon dont je suis actuellement un seau Suppression -

  • récupérer tous les objets dans le seau
  • Supprimer les objets
  • seau Supprimer

// Supprimer tous les objets du seau d'abord - un seau non vide ne peut pas être supprimé

using (ListObjectsResponse response = amazonS3Client.ListObjects(new ListObjectsRequest().WithBucketName(bucket.Name))) 
{ 
    if (response.S3Objects.Count > 0) 
    { 
     List<KeyVersion> keys = response.S3Objects.Select(obj => new KeyVersion(obj.Key)).ToList(); 
     DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest 
     { 
      BucketName = bucket.Name, 
      Keys = keys 
     }; 
     amazonS3Client.DeleteObjects(deleteObjectsRequest); 
    } 
} 

//Delete Bucket 
DeleteBucketRequest request = new DeleteBucketRequest 
{ 
    BucketName = bucket.Name 
}; 
amazonS3Client.DeleteBucket(request); 

Est-il une meilleure façon de supprimer un compartiment dans S3 - où je n'ai pas besoin d'aller chercher les objets en premier.
Existe-t-il une méthode qui me manque dans AWS SDK pour .Net?

Merci!

Répondre

1

Je ne pense pas que ce soit possible. Pas même leur API REST prend en charge la suppression d'un seau non vide:

SUPPRIMER Godet
Description de
Cette mise en œuvre de l'opération SUPPRIMER permet de supprimer le seau nommé dans l'URI. Tous les objets (y compris toutes les versions d'objet et les marqueurs de suppression) dans le compartiment doivent être supprimés avant que le compartiment lui-même puisse être supprimé.

(prise de S3 REST API).

Vous le faites de la bonne manière, en appelant la demande de suppression de plusieurs objets. Sachez simplement que si vous utilisez des compartiments avec version, vous devez supprimer tous les objets dans toutes leurs versions avant de supprimer le compartiment.

0

Il est plus facile de le faire directement sans l'API. Il existe un moyen très facile de supprimer un seau dans S3 en utilisant les paramètres « Lifecycle » à l'aide de la console de gestion S3:

  • Sélectionnez le seau que vous souhaitez supprimer et aller à « cycle de vie » sous Propriétés.

  • Ajouter une nouvelle règle Définir la nouvelle règle à appliquer au « seau entier »

  • Cliquez sur le bouton « Configurer la règle » en bas à droite

  • Dans le menu déroulant « sur les objets » , sélectionnez "supprimer définitivement"

  • Définissez le nombre de jours à "1" Vous avez terminé. Le seau sera parti dans 24 heures.

Questions connexes