¿Cómo puedo saber cuántos objetos he almacenado en un depósito de S3?
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?
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.
Tengo aproximadamente 50 millones de productos y me llevó más de una hora contarlos.aws s3 ls
Hay un --summarize
interruptor 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
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":
Que establece lo siguiente:
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[])]"