401 votes

Comment puis-je obtenir la taille d'un seau Amazon S3 ?

J'aimerais représenter graphiquement la taille (en octets et en nombre d'éléments) d'un seau Amazon S3 et je cherche un moyen efficace d'obtenir ces données.

El s3cmd fournissent un moyen d'obtenir la taille totale du fichier en utilisant s3cmd du s3://bucket_name mais je m'inquiète de sa capacité à évoluer car il semble qu'il récupère les données de chaque fichier et calcule sa propre somme. Étant donné qu'Amazon facture les utilisateurs en Go-mois, il semble étrange qu'ils n'exposent pas cette valeur directement.

Bien que API REST d'Amazon renvoie le nombre d'éléments dans un seau, s3cmd ne semble pas l'exposer. Je pourrais faire s3cmd ls -r s3://bucket_name | wc -l mais ça ressemble à un piratage.

Le Rubis AWS::S3 semblait prometteuse, mais elle ne fournit que le nombre d'éléments du seau, et non la taille totale du seau.

Quelqu'un connaît-il d'autres outils ou bibliothèques en ligne de commande (de préférence Perl, PHP, Python ou Ruby) qui permettent d'obtenir ces données ?

0 votes

J'ai écrit un outil pour analyser la taille des seaux : github.com/EverythingMe/ncdu-s3

29 votes

Je m'étonne qu'Amazon facture l'espace, mais ne fournisse pas la taille totale occupée par un seau S3 simplement via le panneau S3.

0 votes

Pour moi, la plupart des réponses ci-dessous prenaient un temps assez long pour récupérer la taille du seau, mais ce script en Python était beaucoup plus rapide que la plupart des réponses -. slsmk.com/getting-the-size-of-an-s3-bucket-using-boto3-for-aws

26voto

Si vous téléchargez un rapport d'utilisation vous pouvez représenter graphiquement les valeurs quotidiennes de la TimedStorage-ByteHrs champ.

Si vous voulez ce nombre en GiB, il suffit de diviser par 1024 * 1024 * 1024 * 24 (c'est-à-dire des GiB-heures pour un cycle de 24 heures). Si vous souhaitez obtenir le nombre d'octets, il vous suffit de diviser par 24 et de faire un graphique.

25voto

szymon Points 131

Utilisation des outils officiels de ligne de commande AWS s3 :

aws s3 ls s3://bucket/folder --recursive | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'

C'est une meilleure commande, il suffit d'ajouter les 3 paramètres suivants --summarize --human-readable --recursive après aws s3 ls . --summarize n'est pas nécessaire mais donne une touche agréable à la taille totale.

aws s3 ls s3://bucket/folder --summarize --human-readable --recursive

1 votes

Fournissez le lien vers l'endroit où Amazon déclare cela, s'il vous plaît. Je n'arrive pas à le trouver.

1 votes

1 votes

16voto

Brent Faust Points 251

S4cmd est le moyen le plus rapide que j'ai trouvé (un utilitaire de ligne de commande écrit en Python) :

pip install s4cmd

Il s'agit maintenant de calculer la taille totale du seau en utilisant plusieurs threads :

s4cmd du -r s3://bucket-name

8 votes

Non, s4cmd du s3://123123drink ne retournera pas simplement la taille du seau. Pour obtenir la taille du seau, vous devez ajouter la fonction récursive -r comme ceci : s4cmd du -r s3://123123drink

1 votes

Oui, bon point @BukLau (ajouté -r à l'exemple ci-dessus pour éviter toute confusion lorsque des personnes utilisent des dossiers simulés sur S3).

0 votes

Que faire si l'on veut que les versions soient également prises en compte dans le calcul pour les seaux versionnés ?

9voto

user319660 Points 111

Vous pouvez utiliser l'utilitaire s3cmd, par exemple :

s3cmd du -H s3://Mybucket
97G      s3://Mybucket/

0 votes

Comment faire si nous devons utiliser quelque chose comme aws --profile saml s3 xyz et ainsi de suite.

6voto

Charles Caldwell Points 368

Ainsi, en se promenant dans l'API et en effectuant les mêmes requêtes, S3 produira le contenu entier d'un seau en une seule requête, sans avoir besoin de descendre dans les répertoires. Les résultats ne nécessitent alors que la sommation des différents éléments XML, et non des appels répétés. Je n'ai pas d'échantillon de seau contenant des milliers d'éléments, donc je ne sais pas si cela sera efficace, mais cela semble raisonnablement simple.

0 votes

Cela semble être la meilleure option. Je mettrai ce post à jour à l'avenir si cela ne fonctionne pas bien et que je dois faire autre chose. La bibliothèque qui a fini par fournir un accès facile aux résultats bruts de l'API est cette bibliothèque PHP : undesigned.org.za/2007/10/22/amazon-s3-php-class

0 votes

N'est-ce pas limité aux 1000 premiers articles ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X