Borrar un directorio de S3 con Python

08/Mar/2016 Python Deja un comentario

En un anterior ejemplo vimos cómo podíamos borrar un fichero de S3 con Python, en este caso vamos a realizar algo parecido que es borrar un directorio de S3 con Python.

Si bien, en el caso del borrado de ficheros contábamos con el método .delete() la librería TinyS3 no nos ofrece un método que permita el borrado de un directorio, así que tendremos que implementarlo nosotros mismos.

La idea de borrar un fichero de S3 con Python lo que busca es borrar todos y cada uno de los ficheros que haya en el directorio, para, al final, borrar el directorio en si mismo. Ya que si intentamos borrar un directorio que tenga contenido nos va a dar error.

Lo primero para poder borrar un directorio de S3 con Python será conectarnos al sistema de Amazon S3 mediante la clave privada y secreto.

  1. S3_ACCESS_KEY = 'BAKIBAKI678H67HGA'
  2. S3_SECRET_KEY = '+vpOpILD+E9872AialendX0Ui123CKCKCKw'
  3. BUCKET = '/vcp-prueba'
  4. DIRECTORIO = '/midirectorio/'
  5.  
  6. conn = tinys3.Connection(S3_ACCESS_KEY,S3_SECRET_KEY,BUCKET,endpoint='s3-eu-west-1.amazonaws.com')

Lo que vamos a hacer es listar el directorio que queremos borrar. Para ello vamos a utilizar el método <.list()

  1. lista = conn.list(DIRECTORIO,BUCKET)

Vemos que no solo hay que indicar el nombre del directorio a listar, si no que además hay que indicar el bucket que lo contiene.

Ahora empezaremos a recorrer los ficheros que tiene el directorio.

  1. for fichero in lista:
  2. conn.delete(fichero['key'])

Por cada uno de los ficheros vamos a ejecutar el método .delete() que lo que va a hacer es borrar dicho fichero. Es importante saber que tenemos que utilizar la metainformación de la clave para pasarla como parámetro al método .delete()

Una vez que hayamos borrado todos los ficheros del directorio solo nos quedará borrar el directorio, ya vacío, mediante el mismo método.

  1. conn.delete(DIRECTORIO)

De esta forma ya habremos conseguido borrar un directorio de S3 con Python.

Vídeos sobre Python


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*