Saltar al contenido

Descargar archivos S3 con Boto

Ya no tienes que buscar más por internet porque has llegado al sitio indicado, contamos con la solución que buscas sin complicaciones.

Solución:

El problema es que estás descargando a un directorio local que no existe (media/user1). Necesitas:

  • Cree primero el directorio en la máquina local
  • Simplemente use el nombre de archivo en lugar de una ruta completa
  • Use la ruta completa, pero reemplace las barras inclinadas (/) con otro carácter — esto asegurará la unicidad del nombre de archivo sin tener que crear directorios

La última opción podría lograrse a través de:

k.get_contents_to_filename(str(k.key).replace('/', '_'))

Ver también: Boto3 para descargar todos los archivos de un S3 Bucket

Descargar archivos usando boto3 es muy simple, configure sus credenciales de AWS a nivel de sistema antes de usar este código.

client = boto3.client('s3')

// if your bucket name is mybucket and the file path is test/abc.txt
// then the Bucket='mybucket' Prefix='test'

resp = client.list_objects_v2(Bucket="", Prefix="") 

for obj in resp['Contents']:
    key = obj['Key']
    //to read s3 file contents as String
    response = client.get_object(Bucket="",
                         Key=key)
    print(response['Body'].read().decode('utf-8'))

    //to download the file to local
    client.download_file('', key, key.replace('test',''))

reemplazar es ubicar el archivo en su local con el nombre de archivo s3, si no lo reemplaza, intentará guardarlo como ‘prueba/abc.txt’.

Si sostienes alguna desconfianza y disposición de aclarar nuestro división eres capaz de realizar una acotación y con mucho placer lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *