Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

883
Visualizações
¿Cómo encontrar el tamaño de una carpeta dentro de un cubo S3?

Estoy usando el módulo boto3 en python para interactuar con S3 y actualmente puedo obtener el tamaño de cada clave individual en un depósito S3. Pero mi motivo es encontrar el espacio de almacenamiento de solo las carpetas de nivel superior (cada carpeta es un proyecto diferente) y debemos cobrar por proyecto por el espacio utilizado. Puedo obtener los nombres de las carpetas de nivel superior, pero no obtengo ningún detalle sobre el tamaño de las carpetas en la siguiente implementación. La siguiente es mi implementación para obtener los nombres de las carpetas de nivel superior.

 import boto import boto.s3.connection AWS_ACCESS_KEY_ID = "access_id" AWS_SECRET_ACCESS_KEY = "secret_access_key" Bucketname = 'Bucket-name' conn = boto.s3.connect_to_region('ap-south-1', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, is_secure=True, # uncomment if you are not using ssl calling_format = boto.s3.connection.OrdinaryCallingFormat(), ) bucket = conn.get_bucket('bucket') folders = bucket.list("", "/") for folder in folders: print(folder.name)

El tipo de carpeta aquí es boto.s3.prefix.Prefix y no muestra ningún detalle de tamaño. ¿Hay alguna forma de buscar una carpeta/objeto en un depósito S3 por su nombre y luego obtener el tamaño de ese objeto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Para obtener el tamaño de una carpeta S3, los objetos (accesibles en boto3.resource('s3').Bucket) proporcionan el filter(Prefix) que le permite recuperar SOLO los archivos que respetan la condición Prefijo, y hace está bastante optimizado.

 import boto3 def get_size(bucket, path): s3 = boto3.resource('s3') my_bucket = s3.Bucket(bucket) total_size = 0 for obj in my_bucket.objects.filter(Prefix=path): total_size = total_size + obj.size return total_size

Entonces, digamos que desea obtener el tamaño de la carpeta s3://my-bucket/my/path/ , luego llamaría a la función anterior así:

 get_size("my-bucket", "my/path/")

Entonces esto, por supuesto, también es fácilmente aplicable a las carpetas de nivel superior

over 4 years ago · Santiago Trujillo Relatório

0

Para encontrar el tamaño de las "carpetas" de nivel superior en S3 (S3 realmente no tiene un concepto de carpetas, pero muestra una estructura de carpetas en la interfaz de usuario), algo como esto funcionará:

 from boto3 import client conn = client('s3') top_level_folders = dict() for key in conn.list_objects(Bucket='kitsune-buildtest-production')['Contents']: folder = key['Key'].split('/')[0] print("Key %s in folder %s. %d bytes" % (key['Key'], folder, key['Size'])) if folder in top_level_folders: top_level_folders[folder] += key['Size'] else: top_level_folders[folder] = key['Size'] for folder, size in top_level_folders.items(): print("Folder: %s, size: %d" % (folder, size))
over 4 years ago · Santiago Trujillo Relatório

0

No uso boto3, solo aws cli, pero esta breve línea sirve para el propósito. Por lo general, pongo una cola -1 para obtener solo el tamaño de la carpeta de resumen. Sin embargo, puede ser un poco lento para carpetas que tienen muchos objetos.

aws s3 ls --summarize --human-readable --recursive s3://nombre-depósito/nombre-de-carpeta | cola -1

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda