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 ?

46voto

Tom Andersen Points 3523

Il n'y a aucun moyen, à moins que vous

  1. 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

  2. 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.

43voto

mastaBlasta Points 343

Vous pouvez utiliser AWS cloudwatch metrics for s3 pour voir le nombre exact de chaque bucket. cloudwatch metric when you select bucket

17voto

veben Points 597

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"

12voto

Molomby Points 630

2021 Réponse

Ces informations apparaissent désormais dans le tableau de bord AWS. Il suffit de naviguer jusqu'au panier et de cliquer sur l'onglet Metrics.

enter image description here

7voto

Eric Points 1316

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.

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