201 votes

Comment puis-je savoir combien d'objets j'ai stockés dans un panier S3 ?

À moins que quelque chose ne m'échappe, il semble qu'aucune des API que j'ai examinées ne permette de savoir combien d'objets se trouvent dans un fichier <S3 bucket>/<folder> . Existe-t-il un moyen d'obtenir un décompte ?

369voto

Mayank Jaiswal Points 553

Utilisation de l'interface de programmation AWS

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

ou

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

Note : La commande cloudwatch ci-dessus semble fonctionner pour certains et pas pour d'autres. Nous en parlons ici : https://forums.aws.amazon.com/thread.jspa?threadID=217050

Utilisation de la console Web AWS

Vous pouvez consulter section métrique de cloudwatch pour obtenir le nombre approximatif d'objets stockés. enter image description here

J'ai environ 50 millions de produits et il m'a fallu plus d'une heure pour les compter. aws s3 ls

179voto

advncd Points 385

Il existe un --summarize commutateur qui indique informations récapitulatives sur le seau (c'est-à-dire le nombre d'objets, la taille totale).

Voici la bonne réponse en utilisant AWS cli :

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

Total Objects: 194273

Voir le la documentation

88voto

gvasquez Points 663

Bien qu'il s'agisse d'une vieille question, et que des commentaires aient été fournis en 2015, c'est maintenant beaucoup plus simple, car S3 Web Console a activé une option "Obtenir la taille" :

enter image description here

Qui fournit les éléments suivants :

enter image description here

61voto

Raphael Points 598

Il existe désormais une solution simple avec l'API S3 (disponible dans le client AWS) :

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

ou pour un dossier spécifique :

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

52voto

Jim Murphy Points 91

Si vous utilisez le s3cmd vous pouvez obtenir une liste récursive d'un seau particulier, en l'affichant dans un fichier texte.

s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt

Ensuite, sous Linux, vous pouvez lancer un wc -l sur le fichier pour compter les lignes (1 ligne par objet).

wc -l listing.txt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X