J'aimerais représenter graphiquement la taille (en octets et nombre d'éléments) d'un compartiment Amazon S3 et je recherche un moyen efficace d'obtenir les données.
Les outils s3cmd fournissent un moyen d'obtenir la taille totale du fichier s3cmd du s3://bucket_name
, mais je suis inquiet quant à sa capacité à évoluer, car il semblerait qu'il récupère les données de chaque fichier et calcule sa propre somme. Étant donné qu'Amazon facture ses utilisateurs en Go-Mois, il semble étrange qu'ils n'exposent pas cette valeur directement.
Bien que l'API REST d'Amazon renvoie le nombre d'éléments dans un compartiment , s3cmd ne semble pas l'exposer. Je pourrais le faire, s3cmd ls -r s3://bucket_name | wc -l
mais cela semble être un bidouillage.
La bibliothèque Ruby AWS :: S3 semblait prometteuse, mais ne fournit que le nombre d'éléments de compartiment, pas la taille totale du compartiment.
Est-ce que quelqu'un connaît d'autres outils ou bibliothèques en ligne de commande (préférez Perl, PHP, Python ou Ruby) qui fournissent des moyens d'obtenir ces données?
la source
Réponses:
AWS CLI prend désormais en charge le
--query
paramètre qui prend une expression JMESPath .Cela signifie que vous pouvez additionner les valeurs de taille données en
list-objects
utilisantsum(Contents[].Size)
et compter commelength(Contents[])
.Ceci peut être exécuté à l'aide de l'AWS CLI officiel, comme ci-dessous, et a été introduit en février 2014.
la source
s4cmd du s3://bucket-name
s3cmd
devrait avoir les mêmes frais généraux queAWS CLI
. Dans le code, il montres3cmd
faire une demande pour chaque répertoire dans un compartiment.aws s3api --profile PROFILE_NAME 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"}'
s4cmd du
est merveilleux, merci @Brent Faust! petite note (pour les personnes concernées) que vous devez ajouter-r
pour obtenir également la taille des sous-répertoires.Cela peut maintenant être fait de manière triviale avec seulement le client de ligne de commande AWS officiel:
Documentation officielle
Cela accepte également les préfixes de chemin si vous ne voulez pas compter le compartiment entier:
la source
AWS Console:
En date du 28 de Juillet ici à 2015 , vous pouvez obtenir ces informations via CloudWatch . Si vous souhaitez une interface graphique, accédez à la console CloudWatch : (Choisissez une région>)> Métriques> S3
Commande AWS CLI:
Ceci est beaucoup plus rapide que certaines des autres commandes publiées ici, car il ne demande pas la taille de chaque fichier individuellement pour calculer la somme.
Important : Vous devez spécifier StorageType et BucketName dans l'argument de dimensions, sinon vous n'obtiendrez aucun résultat. Tout ce que vous devez changer est la
--start-date
,--end-time
etValue=toukakoukan.com
.Voici un script bash que vous pouvez utiliser pour éviter de devoir spécifier
--start-date
et--end-time
manuellement.la source
Invalid value ('1525354418') for param timestamp:StartTime of type timestamp
s3cmd peut faire ceci:
s3cmd du s3://bucket-name
la source
BotoClientError: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format.
pour les compartiments avec des caractères majuscules.Si vous téléchargez un rapport d'utilisation , vous pouvez représenter graphiquement les valeurs quotidiennes du
TimedStorage-ByteHrs
champ.Si vous voulez ce nombre en Gio, divisez simplement par
1024 * 1024 * 1024 * 24
(c'est Gio-heure pour un cycle de 24 heures). Si vous voulez le nombre en octets, il suffit de diviser par 24 et de tracer le graphique.la source
Utilisation des outils de ligne de commande AWS s3 officiels:
C'est une meilleure commande, il suffit d'ajouter les 3 paramètres suivants
--summarize --human-readable --recursive
aprèsaws s3 ls
.--summarize
n'est pas obligatoire, mais donne une bonne idée de la taille totale.la source
s4cmd est le moyen le plus rapide que j'ai trouvé (un utilitaire de ligne de commande écrit en Python):
Maintenant, calculons la taille totale du compartiment en utilisant plusieurs threads:
la source
s4cmd du s3://123123drink
je ne retournerai pas simplement la taille du seau. Pour obtenir la taille du seau, vous devez ajouter un-r
élément récursif , comme ceci: s4cmd du -r s3: // 123123drink-r
à l'exemple ci-dessus pour éviter toute confusion lorsque des personnes utilisent des dossiers simulés sur S3).J'ai utilisé l' API S3 REST / Curl répertoriée plus haut dans ce fil de discussion:
la source
Vous pouvez utiliser l'utilitaire s3cmd, par exemple:
la source
Alors, parcourant l'API et jouant à plusieurs requêtes identiques, S3 produira le contenu complet d'un compartiment en une seule requête et il n'aura pas besoin de descendre dans des répertoires. Les résultats nécessitent alors simplement de faire la somme des différents éléments XML et non des appels répétés. Je n'ai pas d'échantillons contenant des milliers d'articles, alors je ne sais pas dans quelle mesure il va évoluer, mais cela semble assez simple.
la source
... Un peu tard, mais le meilleur moyen que j'ai trouvé est d'utiliser les rapports du portail AWS. J'ai créé une classe PHP pour le téléchargement et l'analyse des rapports. Avec cela, vous pouvez obtenir le nombre total d'objets pour chaque compartiment, la taille totale en Go ou en octets et plus.
Check it out et laissez-moi savoir si était utile
AmazonTools
la source
Je recommande d'utiliser le rapport d'utilisation S3 pour les grands compartiments. Pour plus d'informations , reportez- vous à la section Comment l' obtenir. Vous devez essentiellement télécharger le rapport d'utilisation du service S3 pour le dernier jour avec Stockage synchronisé - Octets heures et l'analyser pour obtenir l'utilisation du disque.
la source
La documentation AWS vous explique comment procéder:
Voici le résultat obtenu:
la source
Pour une approche vraiment low-tech: utilisez un client S3 capable de calculer la taille pour vous. J'utilise Panic's Transmit, cliquez sur un seau, faites "Obtenir des informations" et cliquez sur le bouton "Calculer". Je ne suis pas sûr de sa rapidité ni de sa précision par rapport à d'autres méthodes, mais cela semble redonner la taille à laquelle je m'attendais.
la source
Puisqu'il y a tant de réponses, j'ai pensé que j'allais ajouter les miennes. J'ai écrit mon implémentation en C # en utilisant LINQPad. Copiez, collez et entrez la clé d'accès, la clé secrète, le point de terminaison de la région et le nom du compartiment que vous souhaitez interroger. Assurez-vous également d'ajouter le package de nuget AWSSDK.
En testant contre un de mes seaux, il m'a donné un compte de 128075 et une taille de 70,6 Go. Je sais que la précision est de 99,9999%, alors je suis bon avec le résultat.
la source
Si vous souhaitez obtenir la taille de la console AWS:
Par défaut, vous devriez voir la métrique de stockage du compartiment.
la source
Je sais que c'est une question plus ancienne, mais voici un exemple de PowerShell:
Get-S3Object -BucketName <buckename> | select key, size | foreach {$A += $_.size}
$A
contient la taille du compartiment, et il existe un paramètre keyname si vous souhaitez uniquement la taille d'un dossier spécifique dans un compartiment.la source
Pour vérifier toutes les tailles de seaux, essayez ce script bash
la source
Vous pouvez utiliser
s3cmd
:ou
Il donne le nombre total d'objets et la taille du seau sous une forme très lisible.
la source
du
liste de tous les objets ou récupère-t-il les métadonnées? Voudrais vraiment une version api de la version des rapports ou de ce qui est affiché dans la console aws ...Il existe un outil de recherche de métadonnées pour AWS S3 à l’ adresse https://s3search.p3-labs.com/ . Cet outil fournit des statistiques sur les objets dans un compartiment avec une recherche sur des métadonnées.
la source
C'est également ce que fait Hanzo S3 Tools . Une fois installé, vous pouvez faire:
Mais je pense que cela est également résumé du côté client et n'est pas récupéré via l'API AWS.
la source
Par Cloudberry , il est également possible de lister la taille du compartiment, le nombre de dossiers et le nombre total de fichiers, en cliquant sur "propriétés" juste en haut du compartiment.
la source
Si vous ne souhaitez pas utiliser la ligne de commande, sous Windows et OSX, il existe une application de gestion de fichiers à distance polyvalente appelée Cyberduck . Connectez-vous à S3 avec votre paire clé d'accès / clé secrète, cliquez avec le bouton droit sur le répertoire, cliquez sur
Calculate
.la source
J'ai écrit un script Bash, s3-du.sh, qui répertorie les fichiers dans un compartiment avec s3ls et affiche le nombre de fichiers et les tailles telles que
Script complet:
Il fait la taille du sous-répertoire, car Amazon renvoie le nom du répertoire et la taille de tout son contenu.
la source
CloudWatch a maintenant un tableau de bord de service S3 par défaut qui le répertorie dans un graphique appelé "Bucket Size Bytes Average". Je pense que ce lien fonctionnera pour toute personne déjà connectée à AWS Console:
la source
La méthode suivante utilise AWS PHP SDK pour obtenir la taille totale du compartiment.
la source
Cela fonctionne pour moi ..
la source