files - ¿Cómo puedo saber cuántos objetos he almacenado en un cubo S3?
aws s3 ls (19)
Uso de AWS CLI
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 anterior de CloudWatch parece funcionar por un tiempo y no por otros. Discutido aquí: https://forums.aws.amazon.com/thread.jspa?threadID=217050
Usar la consola web de AWS
Puede ver la sección métrica de cloudwatch para obtener aproximadamente el número de objetos almacenados.
Tengo aproximadamente 50 millones de productos y me llevó más de una hora contar con aws s3 ls
A menos que me falta algo, parece que ninguna de las API que he analizado le dirá cuántos objetos hay en un cubo / carpeta S3 (prefijo). ¿Hay alguna manera de obtener un conteo?
¿Qué hay de análisis de la clase de almacenamiento S3? Obtiene las API, así como en la consola - https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html
Ahora hay una solución fácil con la API S3 (disponible en AWS cli):
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[])]"
Desde la línea de comandos en AWS CLI, use ls plus --summarize
. Le dará la lista de todos sus artículos y la cantidad total de documentos en un cubo en particular. No he intentado esto con cubos que contienen sub-cubos:
aws s3 ls "s3://MyBucket" --summarize
Hace falta algo de tiempo (tardó en listar mis documentos de 16 + K aproximadamente 4 minutos), pero es más rápido que contar 1K a la vez.
En s3cmd, simplemente ejecute el siguiente comando (en un sistema Ubuntu):
s3cmd ls -r s3://mybucket | wc -l
La API devolverá la lista en incrementos de 1000. Verifique la propiedad IsTruncated para ver si todavía hay más. Si hay, debe hacer otra llamada y pasar la última clave que recibió como propiedad Marker en la próxima llamada. Luego continuará haciendo un ciclo así hasta que IsTruncated sea falso.
Consulte este documento de Amazon para obtener más información: iteración a través de resultados de varias páginas
La forma más fácil es usar la consola de desarrollador, por ejemplo, si está en Chrome, elija Herramientas de desarrollador, y puede ver lo siguiente, puede buscar y contar o hacer alguna coincidencia, como 280-279 + 1 = 2
...
Ninguna de las API le dará un conteo porque realmente no hay ninguna API específica de Amazon para hacer eso. Solo debe ejecutar una lista de contenido y contar la cantidad de resultados que se devuelven.
No hay forma, a menos que tú
enumere todos en lotes de 1000 (que pueden ser lentos y absorber el ancho de banda, amazon parece que nunca comprime las respuestas XML), o
inicie sesión en su cuenta en S3 e ingrese Cuenta - Uso. ¡Parece que el departamento de facturación sabe exactamente cuántos objetos has almacenado!
Simplemente descargar la lista de todos sus objetos en realidad llevará algo de tiempo y le costará algo de dinero si tiene 50 millones de objetos almacenados.
También vea este hilo sobre StorageObjectCount , que está en los datos de uso.
Una API S3 para obtener al menos los conceptos básicos, incluso si fue horas de antigüedad, sería genial.
Puede descargar e instalar el navegador s3 desde http://s3browser.com/ . Cuando selecciona un cubo en la esquina central derecha, puede ver la cantidad de archivos en el depósito. Pero, el tamaño que muestra es incorrecto en la versión actual.
Gubs
Puede utilizar potencialmente el inventario de Amazon S3 que le dará una lista de objetos en un archivo csv
Si usa la herramienta de línea de comandos s3cmd , puede obtener una lista recursiva de un s3cmd particular y enviarlo a un archivo de texto.
s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt
Luego, en Linux, puede ejecutar wc -l en el archivo para contar las líneas (1 línea por objeto).
wc -l listing.txt
Utilicé el script python de scalablelogic.com (agregando el registro de conteo). Funcionó muy bien.
#!/usr/local/bin/python
import sys
from boto.s3.connection import S3Connection
s3bucket = S3Connection().get_bucket(sys.argv[1])
size = 0
totalCount = 0
for key in s3bucket.list():
totalCount += 1
size += key.size
print ''total size:''
print "%.3f GB" % (size*1.0/1024/1024/1024)
print ''total count:''
print totalCount
Vaya a Facturación de AWS, luego a los informes y luego a los informes de Uso de AWS. Seleccione Amazon Simple Storage Service, luego Operation StandardStorage. Luego puede descargar un archivo CSV que incluye un UsageType de StorageObjectCount que enumera el recuento de elementos para cada segmento.
Veo muchas respuestas aquí con | wc -l
| wc -l
Sin embargo, nadie ha mencionado el interruptor de --summarize
que muestra información resumida del cucharón (es decir, número de objetos, tamaño total).
Entonces, esta es la respuesta correcta usando AWS cli:
aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"
Total Objects: 194273
Ver la documentation
Viejo hilo, pero sigue siendo relevante ya que estaba buscando la respuesta hasta que me di cuenta de esto. Quería un conteo de archivos usando una herramienta basada en GUI (es decir, sin código). Ya uso una herramienta llamada 3Hub para arrastrar y soltar transferencias hacia y desde S3. Quería saber cuántos archivos tenía en un cubo en particular (no creo que la facturación los descomponga por cubos).
So, using 3Hub,
- list the contents of the bucket (looks basically like a finder or explorer window)
- go to the bottom of the list, click ''show all''
- select all (ctrl+a)
- choose copy URLs from right-click menu
- paste the list into a text file (I use TextWrangler for Mac)
- look at the line count
Tenía 20521 archivos en el cubo y el archivo contaba en menos de un minuto.