Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

744
Vistas
Python/ Boto 3: ¿Cómo recuperar/descargar archivos de AWS S3?

En Python/Boto 3, descubrí que para descargar un archivo individualmente desde S3 a local puede hacer lo siguiente:

 bucket = self._aws_connection.get_bucket(aws_bucketname) for s3_file in bucket.list(): if filename == s3_file.name: self._downloadFile(s3_file, local_download_directory) break;

Y para descargar todos los archivos en un directorio elegido:

 else: bucket = self._aws_connection.get_bucket(aws_bucketname) for s3_file in bucket.list(): self._downloadFile(s3_file, local_download_directory)

Y la función auxiliar _downloadFile() :

 def _downloadFile(self, s3_file, local_download_destination): full_local_path = os.path.expanduser(os.path.join(local_download_destination, s3_file.name)) try: print "Downloaded: %s" % (full_local_path) s3_file.get_contents_to_filename(full_local_path)

Pero ambos no parecen estar funcionando. Usando Boto 3 y Python, me gustaría poder descargar todos los archivos, preferiblemente como un zip, en un directorio definido en S3 a mi local.

¿Qué podría estar haciendo mal y cuál es la implementación correcta de los parámetros?

Gracias de antemano, y me aseguraré de aceptar/votar la respuesta.

CÓDIGO DE ACTUALIZACIÓN : Getting an error: “AttributeError: 'S3' object has no attribute

 import sys import json import os import subprocess import boto3 from boto.s3.connection import S3Connection s3 = boto3.resource('s3') s3client = boto3.client('s3') #This works for bucket in s3.buckets.all(): print(bucket.name) def main(): #Getting an error: “AttributeError: 'S3' object has no attribute 'download'” s3client.download('testbucket', 'fileone.json', 'newfile') if __name__ == "__main__": main()
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para descargar archivos de S3 a Local FS, utilice el método download_file()

 s3client = boto3.client('s3') s3client.download_file(Bucket, Key, Filename)

Si el objeto S3 es s3://mybucket/foo/bar/file.txt , entonces los argumentos serían

 Bucket --> mybucket Key --> foo/bar/file.txt Filename --> /local/path/file.txt

No hay ningún método para descargar el depósito completo. Una forma alternativa sería listar todos los objetos en el cubo y descargarlos individualmente como archivos.

 for obj in s3client.list_objects(Bucket='mybucket')['Contents']: try: filename = obj['Key'].rsplit('/', 1)[1] except IndexError: filename = obj['Key'] localfilename = os.path.join('/home/username/Downloads/', filename) # The local directory must exist. s3client.download_file('mybucket', obj['Key'], localfilename)

Nota: La respuesta de list_objects() se trunca a 1000 objetos. Use los marcadores en la respuesta para recuperar el resto de objetos en el depósito.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda