AWS S3: come posso vedere quanto spazio su disco sta utilizzando


113

Ho un account AWS. Sto usando S3 per archiviare i backup da diversi server. La domanda è che ci sono informazioni nella console AWS su quanto spazio su disco è in uso nel mio cloud S3?


1
Devi ottenere tutti gli oggetti, quindi riassumere tutte le dimensioni dei file. Non puoi farlo in una singola operazione.
Layke

È strano che non ci sia una vera soluzione a questo problema. Passare in rassegna tutti gli elementi e calcolare non è una soluzione se si dispone di 10 milioni di file! Nell'interfaccia utente s3 di AWS puoi facilmente vedere l'utilizzo in Gestione -> Metriche. Perché non c'è un modo per ottenerlo dalla riga di comando?
Sarang

Risposte:


117

Yippe: un aggiornamento di AWS CLI ti consente di eseguire l'istruzione in modo ricorsivo attraverso i bucket ...

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 fornisce una buona stima per l'utilizzo di $ se hai meno di 1 TB. @cudds awesomeness - grazie mille !!!
chrislovecnm

4
Non hai bisogno della parte grep se hai un singolo secchio.
jpbochi

7
AWS Cloudwatch ora ha una metrica per la dimensione del bucket e il numero di oggetti che viene aggiornata quotidianamente. Era ora! aws.amazon.com/blogs/aws/…
cudds

3
Esempio 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 Importante: è necessario specificare sia StorageType che BucketName nell'argomento delle dimensioni altrimenti non si otterranno risultati.
Sam Martin

@SamMartin cosa deve essere StorageType? Anche questa risposta richiede molto tempo per il calcolo per bucket più grandi di 100 GB
Vivek Katial

104

Non sono sicuro di quando questo è stato aggiunto all'AWSCLI dato che la domanda originale era di 3 anni fa, ma lo strumento della riga di comando fornisce un bel riepilogo eseguendo:

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

4
La tua e quella di Christopher sono di gran lunga le migliori risposte.
Michael Ahlers

2
Soluzione molto più semplice della risposta accettata. Grazie!
Adrian Macneil

1
questo non mostra la dimensione reale con le versioni. C'è un modo per controllare la dimensione totale del bucket s3 con tutte le versioni?
Shanika Ediriweera

1
Stampa la dimensione totale di ciascuno dei tuoi secchi:for b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
Matt White

69

Per conoscere la dimensione del bucket S3 utilizzando la Console AWS:

  1. Fare clic sul nome del bucket S3
  2. Seleziona la scheda "Gestione"
  3. Fare clic sul pulsante di navigazione "Metriche"
  4. Per impostazione predefinita, dovresti vedere la metrica di archiviazione del bucket

Spero che questo ti aiuti.


3
Funziona più velocemente nel caso in cui il tuo bucket abbia TB di dati. Le risposte accettate richiedono molto tempo per calcolare tutti gli oggetti in quella scala.
sokras

Nota anche che questo catturerà caricamenti incompleti sospesi, mentre le lssoluzioni basate su non lo fanno.
David Moles,

Il modo più veloce per farlo è questa risposta
Mohammad Zekrallah

36

s3cmd può mostrarti questo eseguendo s3cmd du, facoltativamente passando il nome del bucket come argomento.


1
Cordiali saluti, ho provato questo e la versione aws cli in cudds risponde. Entrambi funzionano bene, ma s3cmd è stato significativamente più lento nei casi che ho provato a partire dalla versione 1.5.0-rc1.
DougW

@DougW: Grazie, informazioni utili. AWS CLI 1.0.0 è stato rilasciato nel settembre 2013 , quindi non esisteva al momento in cui ho scritto la mia risposta.
Markusk

s3cmd non supporta l'hashing AWS4, quindi non funzionerà con nessuna nuova regione, inclusa la regione dell'UE "eu-central-1"
Koen.

@ Koen .: Grazie, non ne ero a conoscenza. Sembra che il manutentore di s3cmd stia cercando di aggiungere il supporto per AWS4: github.com/s3tools/s3cmd/issues/402
markusk

@Koen .: s3cmd ora supporta l'hashing AWS4 a partire dalla 1.5.0, rilasciata il 12/01/2015. Vedi s3tools.org/news .
markusk

28

L'AWS CLI ora supporta il --queryparametro che accetta espressioni JMESPath .

Ciò significa che puoi sommare i valori di dimensione forniti list-objectsutilizzando sum(Contents[].Size)e contare come length(Contents[]).

Questo può essere eseguito utilizzando l'AWS CLI ufficiale come di seguito ed è stato introdotto nel febbraio 2014

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

Ho dovuto usare le virgolette doppie attorno alla stringa di query nella riga di comando di Windows. Funziona come un campione però.
Travis Steel

Attenzione: se il bucket è vuoto il comando fallirà con il seguente errore: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"Altrimenti la query funziona alla grande!
Meccatronatore il

7

Su Linux box che dispone python(con programma di pipinstallazione) grepe awkinstalla AWS CLI (strumenti a riga di comando per EC2, S3 e molti altri servizi)

sudo pip install awscli

quindi crea un .awssecretfile nella tua cartella Inizio con il contenuto come di seguito (regola chiave, segreto e regione secondo necessità):

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

Rendi questo file in lettura-scrittura solo per il tuo utente:

sudo chmod 600 .awssecret

ed esportalo nel tuo ambiente

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

quindi esegui nel terminale (questo è un comando a riga singola, separato da \per una facile lettura qui):

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 awsparte elenca il bucket (o facoltativamente una 'sottocartella')
  • la grepparte rimuove (usando -v) le linee che corrispondono all'espressione regolare (usando -E). ^$è per la riga vuota, --è per le linee di separazione nell'output diaws s3 ls
  • l'ultimo awksi aggiunge semplicemente alla totalterza colonna dell'output risultante (la dimensione in KB), quindi lo visualizza alla fine

NOTA questo comando funziona per il bucket o la "cartella" corrente, non in modo ricorsivo


7

Cloud Watch ti consente anche di creare metriche per il tuo bucket S3. Ti mostra le metriche in base alle dimensioni e al numero di oggetti. Servizi> Strumenti di gestione> Cloud watch. Scegli la regione in cui si trova il tuo bucket S3 e le metriche delle dimensioni e del conteggio degli oggetti saranno tra quelle disponibili.


6

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

Risposta di 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';
?>

Sai se gigabyte in questo caso è 1024 3 o 1000 3? Faccio fatica a trovare una dichiarazione S3 definitiva.
dfrankow

@dfrankow La riga echo ($totalSize / 1024 / 1024 / 1024) . ' GB';è proprio lì in fondo al codice sorgente.
MJD

@MJD Non ricordo quale fosse il mio pensiero qui. Stava chiedendo dell'uso della parola "gigabyte" da parte di s3cmd o S3, non di questo codice PHP.
dfrankow

5

Oltre alla risposta di Christopher.

Se è necessario contare la dimensione totale dell'uso del bucket con versione:

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

Conta sia la versione più recente che quella archiviata.



1

La console AWS non ti mostrerà questo, ma puoi utilizzare Bucket Explorer o Cloudberry Explorer per ottenere la dimensione totale di un bucket. Entrambi hanno versioni gratuite disponibili.

Nota: questi prodotti devono ancora ottenere le dimensioni di ogni singolo oggetto, quindi potrebbe richiedere molto tempo per secchi con molti oggetti.


Però posso solo vedere una versione di prova. Quell'offerta è stata rimossa?
Trefex

1

Basato sulla risposta di @ 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]

Inoltre, Cyberduck consente convenientemente il calcolo delle dimensioni per un secchio o una cartella.


1

La risposta di Mini John ha funzionato totalmente per me! Fantastico ... ho dovuto aggiungere

--region eu-west-1 

dall'Europa però


1

Questa è una vecchia domanda, ma poiché stavo cercando la risposta mi sono imbattuto in essa. Alcune delle risposte mi hanno fatto ricordare che uso il browser S3 per gestire i dati. Puoi fare clic su un bucket e premere le proprietà e ti mostrerà il totale. Abbastanza semplice. Consiglio vivamente il browser: https://s3browser.com/default.aspx?v=6-1-1&fam=x64


0

Bene, puoi farlo anche tramite un client S3 se preferisci un'interfaccia utente amichevole.

Io uso CrossFTP , che è gratuito e multipiattaforma, e lì puoi fare clic con il tasto destro sulla directory della cartella -> selezionare "Proprietà ..." -> fare clic sul pulsante "Calcola" accanto a Dimensioni e voilà.


0

s3admin è un'app opensource (UI) che ti consente di sfogliare i bucket, calcolare la dimensione totale, mostrare i file più grandi / più piccoli. È su misura per avere una rapida panoramica dei tuoi bucket e del loro utilizzo.


0

Hai chiesto: informazioni nella console AWS su quanto spazio su disco sta utilizzando sul mio cloud S3 ?

Ho così alla fatturazione Dashboard e controllare l'utilizzo S3 nel disegno di legge corrente .

Ti danno le informazioni - MTD - in Gb a 6 decimali, IOW, al livello di Kb.

È suddiviso per regione, ma sommarli (supponendo che tu usi più di una regione) è abbastanza facile.

BTW: potresti aver bisogno di autorizzazioni IAM specifiche per accedere alle informazioni di fatturazione.


-2

Uso Cloud Turtle per ottenere le dimensioni dei singoli secchi. Se la dimensione del bucket supera> 100 GB, ci vorrà del tempo per visualizzare la dimensione. Cloud turtle è freeware.


8
Stai attento con questo software. Installa estensioni Chrome aggiuntive e sembra essere piuttosto spam.
styks
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.