¿Cómo puedo saber cuántos objetos he almacenado en un depósito de S3?

Resuelto fields asked hace 54 años • 34 respuestas

A menos que me esté perdiendo algo, parece que ninguna de las API que he visto te dirá cuántos objetos hay en un archivo <S3 bucket>/<folder>. ¿Hay alguna manera de hacer un conteo?

fields avatar Jan 01 '70 08:01 fields
Aceptado

Uso de la CLI de AWS

aws s3 ls s3://mybucket/ --recursive | wc -l 

o

aws cloudwatch get-metric-statistics \
  --namespace AWS/S3 --metric-name NumberOfObjects \
  --dimensions Name=BucketName,Value=BUCKETNAME \
              Name=StorageType,Value=AllStorageTypes \
  --start-time 2016-11-05T00:00 --end-time 2016-11-05T00:10 \
  --period 60 --statistic Average

Nota: El comando cloudwatch anterior parece funcionar para algunos, pero no para otros. Discutido aquí: https://forums.aws.amazon.com/thread.jspa?threadID=217050

Usando la consola web de AWS

Puede consultar la sección de métricas de Cloudwatch para obtener una cantidad aproximada de objetos almacenados. ingrese la descripción de la imagen aquí

Tengo aproximadamente 50 millones de productos y me llevó más de una hora contarlos.aws s3 ls

Mayank Jaiswal avatar Oct 02 '2015 13:10 Mayank Jaiswal

Hay un --summarizeinterruptor que muestra información resumida del depósito (es decir, número de objetos, tamaño total).

Aquí está la respuesta correcta usando AWS cli:

aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"

Total Objects: 194273

Ver la documentación

advncd avatar Aug 23 '2016 22:08 advncd

Aunque esta es una pregunta antigua y se proporcionaron comentarios en 2015, ahora es mucho más simple, ya que S3 Web Console ha habilitado la opción "Obtener tamaño":

ingrese la descripción de la imagen aquí

Que establece lo siguiente:

ingrese la descripción de la imagen aquí

gvasquez avatar Mar 21 '2017 12:03 gvasquez

Ahora existe una solución sencilla con la API de S3 (disponible en la CLI de AWS):

aws s3api list-objects --bucket BUCKETNAME --output json --query "[length(Contents[])]"

o para una carpeta específica:

aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"
Raphael avatar Oct 02 '2015 13:10 Raphael