À 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 ?
Réponses
Trop de publicités?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.
J'ai environ 50 millions de produits et il m'a fallu plus d'une heure pour les compter. aws s3 ls
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
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[])]"
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
- Réponses précédentes
- Plus de réponses