À 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?Il n'y a aucun moyen, à moins que vous
-
les lister tous par lots de 1000 (ce qui peut être lent et absorber de la bande passante - amazon semble ne jamais compresser les réponses XML), ou
-
Connectez-vous à votre compte sur S3, et allez dans Compte - Utilisation. Il semble que le service de facturation sache exactement combien d'objets vous avez stockés !
Le simple téléchargement de la liste de tous vos objets prendra du temps et coûtera de l'argent si vous avez 50 millions d'objets stockés.
Voir aussi cette discussion sur StorageObjectCount - qui se trouve dans les données d'utilisation.
Une API S3 permettant d'obtenir au moins les éléments de base, même s'ils datent de plusieurs heures, serait très utile.
2020/10/22
Avec la console AWS
Regarder Métriques onglet sur votre seau
ou :
Consulter les indicateurs d'AWS Cloudwatch
Avec AWS CLI
Nombre d'objets :
ou :
aws s3api list-objects --bucket <BUCKET_NAME> --prefix "<FOLDER_NAME>" | wc -l
ou :
aws s3 ls s3://<BUCKET_NAME>/<FOLDER_NAME>/ --recursive --summarize --human-readable | grep "Total Objects"
ou avec s4cmd :
s4cmd ls -r s3://<BUCKET_NAME>/<FOLDER_NAME>/ | wc -l
Taille des objets :
aws s3api list-objects --bucket <BUCKET_NAME> --output json --query "[sum(Contents[].Size), length(Contents[])]" | awk 'NR!=2 {print $0;next} NR==2 {print $0/1024/1024/1024" GB"}'
ou :
aws s3 ls s3://<BUCKET_NAME>/<FOLDER_NAME>/ --recursive --summarize --human-readable | grep "Total Size"
ou avec s4cmd :
s4cmd du s3://<BUCKET_NAME>
ou avec les métriques de CloudWatch :
aws cloudwatch get-metric-statistics --metric-name BucketSizeBytes --namespace AWS/S3 --start-time 2020-10-20T16:00:00Z --end-time 2020-10-22T17:00:00Z --period 3600 --statistics Average --unit Bytes --dimensions Name=BucketName,Value=<BUCKET_NAME> Name=StorageType,Value=StandardStorage --output json | grep "Average"
Si vous utilisez AWS CLI sous Windows, vous pouvez utiliser la commande Measure-Object
à partir de PowerShell pour obtenir le nombre total de fichiers, tout comme wc -l
sur *nix.
PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object
Count : 25
Average :
Sum :
Maximum :
Minimum :
Property :
J'espère que cela vous aidera.