AWS S3: comment voir la quantité d'espace disque utilisée


113

J'ai un compte AWS. J'utilise S3 pour stocker des sauvegardes de différents serveurs. La question est-elle qu'il y a des informations dans la console AWS sur la quantité d'espace disque utilisée dans mon cloud S3?


1
Vous devez obtenir tous les objets, puis additionner toutes les tailles de fichiers. Vous ne pouvez pas le faire en une seule opération.
Layke

Il est étrange qu'il n'y ait pas de vraie solution à ce problème. Parcourir tous les éléments et calculer n'est pas une solution si vous avez des dizaines de millions de fichiers! Dans l'interface utilisateur s3 d'AWS, vous pouvez facilement voir l'utilisation sous Gestion -> Métriques. Pourquoi n'y a-t-il pas un moyen d'obtenir cela à partir de la ligne de commande?
Sarang

Réponses:


117

Yippe - une mise à jour de l'AWS CLI vous permet de passer récursivement à travers des buckets ...

aws s3 ls s3://<bucketname> --recursive  | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'

print total / 1024/1024/1024 * .03 donne une belle estimation de l'utilisation de $ si vous avez moins de 1 To. @cudds awesomeness - merci beaucoup !!!
chrislovecnm

4
Vous n'avez pas besoin de la partie grep si vous n'avez qu'un seul compartiment.
jpbochi

7
AWS Cloudwatch dispose désormais d'une métrique pour la taille du compartiment et le nombre d'objets mis à jour quotidiennement. À propos du temps! aws.amazon.com/blogs/aws/…
cudds

3
Exemple aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2015-07-15T10:00:00 --end-time 2015-07-31T01:00:00 --period 86400 --statistics Average --region eu-west-1 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=toukakoukan.com Name=StorageType,Value=StandardStorage Important: vous devez spécifier à la fois StorageType et BucketName dans l'argument dimensions, sinon vous n'obtiendrez aucun résultat.
Sam Martin

@SamMartin Que doit être StorageType? De plus, cette réponse prend beaucoup de temps à calculer pour les compartiments de plus de 100 Go
Vivek Katial

104

Je ne sais pas quand cela a été ajouté à l'AWSCLI étant donné que la question d'origine remontait à 3 ans, mais l'outil de ligne de commande donne un bon résumé en exécutant:

aws s3 ls s3://mybucket --recursive --human-readable --summarize

4
La vôtre et celle de Christopher sont de loin les meilleures réponses.
Michael Ahlers

2
Solution beaucoup plus simple que la réponse acceptée. Merci!
Adrian Macneil

1
cela ne montre pas la vraie taille avec les versions. Existe-t-il un moyen de vérifier la taille totale du seau s3 avec toutes les versions?
Shanika Ediriweera

1
Imprimez la taille totale de chacun de vos seaux:for b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
Blanc mat le

69

Pour connaître la taille du compartiment S3 à l'aide de AWS Console:

  1. Cliquez sur le nom du compartiment S3
  2. Sélectionnez l'onglet "Gestion"
  3. Cliquez sur le bouton de navigation "Statistiques"
  4. Par défaut, vous devriez voir la métrique de stockage du compartiment

J'espère que cela t'aides.


3
Cela fonctionne plus rapidement au cas où votre bucket contiendrait des To de données. Les réponses acceptées prennent beaucoup de temps pour calculer tous les objets de cette échelle.
sokras

Notez également que cela capturera les téléchargements incomplets suspendus, lsce qui n'est pas le cas pour les solutions basées sur ces derniers.
David Moles

Le moyen le plus rapide de le faire est cette réponse
Mohammad Zekrallah

36

s3cmd peut vous le montrer en exécutant s3cmd du, en passant éventuellement le nom du compartiment comme argument.


1
FYI - J'ai essayé ceci et la version aws cli dans cudds répond. Ils fonctionnent tous les deux très bien, mais s3cmd était nettement plus lent dans les cas que j'ai essayés à partir de la version 1.5.0-rc1.
DougW

@DougW: Merci, informations utiles. AWS CLI 1.0.0 a été publiée en septembre 2013 , elle n'existait donc pas au moment où j'ai rédigé ma réponse.
markusk

s3cmd ne prend pas en charge le hachage AWS4 et ne fonctionnera donc pas avec les nouvelles régions, y compris la région de l'UE "eu-central-1"
Koen.

@Koen: Merci, je n'étais pas au courant de cela. Il semble que le responsable de s3cmd cherche à ajouter la prise en charge d'AWS4: github.com/s3tools/s3cmd/issues/402
markusk

@Koen .: s3cmd prend désormais en charge le hachage AWS4 à partir de la version 1.5.0, publiée le 12/01/2015. Voir s3tools.org/news .
markusk

28

L'AWS CLI prend désormais en charge le --queryparamètre qui prend une expression JMESPath .

Cela signifie que vous pouvez additionner les valeurs de taille données en list-objectsutilisant sum(Contents[].Size)et compter comme length(Contents[]).

Cela peut être exécuté à l'aide de l'AWS CLI officielle comme ci-dessous et a été introduit en février 2014

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"

J'ai dû utiliser des guillemets doubles autour de la chaîne de requête dans la ligne de commande Windows. Fonctionne comme un champion.
Travis Steel

Attention: si le bucket est vide, la commande échouera avec l'erreur suivante: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"Sinon, la requête fonctionne très bien!
mécatroner le

7

Sur les boîtes Linux qui ont python(avec le pipprogramme d' installation) grepet awk, installez AWS CLI (outils de ligne de commande pour EC2, S3 et de nombreux autres services)

sudo pip install awscli

puis créez un .awssecretfichier dans votre dossier personnel avec le contenu ci-dessous (ajustez la clé, le secret et la région si nécessaire):

[default]
aws_access_key_id=<YOUR_KEY_HERE>
aws_secret_access_key=<YOUR_SECRET_KEY_HERE>
region=<AWS_REGION>

Rendez ce fichier en lecture-écriture pour votre utilisateur uniquement:

sudo chmod 600 .awssecret

et exportez-le dans votre environnement

 export AWS_CONFIG_FILE=/home/<your_name>/.awssecret

puis exécutez dans le terminal (il s'agit d'une commande sur une seule ligne, séparée par \pour une lecture facile ici):

aws s3 ls s3://<bucket_name>/foo/bar | \
grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | \
awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
  • la awspartie répertorie le seau (ou éventuellement un 'sous-dossier')
  • la greppièce supprime (en utilisant -v) les lignes qui correspondent à l'expression régulière (en utilisant -E). ^$est pour la ligne vide, --est pour les lignes de séparation dans la sortie deaws s3 ls
  • le dernier awkajoute simplement à totalla 3ème colonne de la sortie résultante (la taille en Ko) puis l'affiche à la fin

REMARQUE cette commande fonctionne pour le compartiment ou le 'dossier' actuel, pas de manière récursive


7

Cloud Watch vous permet également de créer des métriques pour votre compartiment S3. Il vous montre les métriques par taille et nombre d'objets. Services> Outils de gestion> Veille cloud. Choisissez la région où se trouve votre compartiment S3 et les métriques de taille et de nombre d'objets figureraient parmi ces métriques disponibles.


6

Voir /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket

Répondu par Vic ...

<?php
if (!class_exists('S3')) require_once 'S3.php';

// Instantiate the class
$s3 = new S3('accessKeyId', 'secretAccessKey');
S3::$useSSL = false;

// List your buckets:
echo "S3::listBuckets(): ";
echo '<pre>' . print_r($s3->listBuckets(), 1). '</pre>';

$totalSize = 0;
$objects = $s3->getBucket('name-of-your-bucket');
foreach ($objects as $name => $val) {
    // If you want to get the size of a particular directory, you can do
    // only that.
    // if (strpos($name, 'directory/sub-directory') !== false)
    $totalSize += $val['size'];
}

echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
?>

Savez-vous si le gigaoctet dans ce cas est de 1024 3 ou 1000 3? J'ai du mal à trouver une déclaration S3 définitive.
dfrankow

@dfrankow La ligne echo ($totalSize / 1024 / 1024 / 1024) . ' GB';est juste là en bas du code source.
MJD

@MJD Je ne me souviens pas de ce que ma pensée était ici. Il posait des questions sur l'utilisation s3cmd ou S3 du mot "gigaoctet", pas ce code PHP.
dfrankow

5

En plus de la réponse de Christopher.

Si vous devez compter la taille totale de l'utilisation du compartiment versionné:

aws s3api list-object-versions --bucket BUCKETNAME --output json --query "[sum(Versions[].Size)]"

Il compte à la fois les versions les plus récentes et les versions archivées.



1

La console AWS ne vous montrera pas cela, mais vous pouvez utiliser Bucket Explorer ou Cloudberry Explorer pour obtenir la taille totale d'un bucket. Les deux ont des versions gratuites disponibles.

Remarque: ces produits doivent toujours avoir la taille de chaque objet individuel, cela peut donc prendre beaucoup de temps pour les seaux contenant beaucoup d'objets.


Je ne peux cependant voir qu'un logiciel d'essai. Cette offre a-t-elle été supprimée?
Trefex

1

Basé sur la réponse de @ cudds:

function s3size()
{
    for path in $*; do
        size=$(aws s3 ls "s3://$path" --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{printf "%.2fGb\n", (total/1024/1024/1024)}')
        echo "[s3://$path]=[$size]"
    done
}

...

$ s3size bucket-a bucket-b/dir
[s3://bucket-a]=[24.04Gb]
[s3://bucket-b/dir]=[26.69Gb]

En outre, Cyberduck permet de calculer facilement la taille d'un seau ou d'un dossier.


1

La réponse de Mini John a totalement fonctionné pour moi! Génial ... a dû ajouter

--region eu-west-1 

de l'Europe cependant


1

C'est une vieille enquête, mais comme je cherchais la réponse, je l'ai parcourue. Certaines des réponses m'ont rappelé que j'utilisais le navigateur S3 pour gérer les données. Vous pouvez cliquer sur un seau et cliquer sur les propriétés et cela vous montre le total. Assez simple. Je recommande vivement le navigateur: https://s3browser.com/default.aspx?v=6-1-1&fam=x64


0

Eh bien, vous pouvez le faire également via un client S3 si vous préférez une interface utilisateur conviviale.

J'utilise CrossFTP , qui est gratuit et multiplateforme, et là vous pouvez faire un clic droit sur le répertoire du dossier -> sélectionner "Propriétés ..." -> cliquer sur le bouton "Calculer" à côté de Taille et le tour est joué.


0

s3admin est une application open source (UI) qui vous permet de parcourir les buckets, de calculer la taille totale, d'afficher les fichiers les plus grands / plus petits. Il est conçu pour avoir un aperçu rapide de vos godets et de leur utilisation.


0

Vous avez demandé: des informations dans la console AWS sur la quantité d'espace disque utilisée sur mon cloud S3 ?

Je vais donc au tableau de bord de facturation et vérifie l'utilisation de S3 dans la facture actuelle .

Ils vous donnent les informations - MTD - en Go à 6 décimales, IOW, au niveau Kb.

Il est ventilé par région, mais les additionner (en supposant que vous utilisiez plus d'une région) est assez facile.

BTW: vous aurez peut-être besoin d'autorisations IAM spécifiques pour accéder aux informations de facturation.


-2

J'utilise Cloud Turtle pour obtenir la taille des seaux individuels. Si la taille du bucket dépasse> 100 Go, cela prendrait un certain temps pour afficher la taille. Cloud tortue est un logiciel gratuit.


8
Soyez prudent avec ce logiciel. Il installe des extensions Chrome supplémentaires et semble être plutôt spammé.
styks
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.