AWS S3: bagaimana cara melihat berapa banyak ruang disk yang digunakan

113

Saya memiliki akun AWS. Saya menggunakan S3 untuk menyimpan cadangan dari server yang berbeda. Pertanyaannya apakah ada informasi di konsol AWS tentang berapa banyak ruang disk yang digunakan di cloud S3 saya?

KennyPowers
sumber
1
Anda harus mendapatkan semua objek, lalu menjumlahkan semua ukuran file. Anda tidak dapat melakukannya dalam satu operasi.
Layke
Aneh bahwa tidak ada solusi nyata untuk masalah ini. Memeriksa semua item dan menghitung bukanlah solusi jika Anda memiliki 10 juta file! Di UI s3 AWS Anda dapat dengan mudah melihat penggunaan di bawah Manajemen -> Metrik. Mengapa tidak ada cara untuk mendapatkannya dari baris perintah?
Sarang

Jawaban:

117

Hore - pembaruan untuk AWS CLI memungkinkan Anda untuk secara rekursif melalui keranjang ...

aws s3 ls s3://<bucketname> --recursive  | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
puding
sumber
print total / 1024/1024/1024 * .03 memberikan perkiraan yang bagus untuk $ penggunaan jika Anda di bawah 1TB. @cudds kedahsyatan - terima kasih banyak !!!
chrislovecnm
4
Anda tidak memerlukan bagian grep jika Anda memiliki satu ember.
jpbochi
7
AWS Cloudwatch sekarang memiliki metrik untuk ukuran bucket dan jumlah objek yang diperbarui setiap hari. Tentang waktu! aws.amazon.com/blogs/aws/…
cudds
3
Contoh 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 Penting: Anda harus menentukan StorageType dan BucketName dalam argumen dimensi jika tidak, Anda tidak akan mendapatkan hasil.
Sam Martin
@ SamMartin, apa yang dibutuhkan StorageType? Juga jawaban ini membutuhkan waktu yang sangat lama untuk menghitung bucket yang lebih besar dari 100 GB
Vivek Katial
104

Saya tidak yakin kapan ini ditambahkan ke AWSCLI mengingat pertanyaan asli adalah 3 tahun yang lalu, tetapi alat baris perintah memberikan ringkasan yang bagus dengan menjalankan:

aws s3 ls s3://mybucket --recursive --human-readable --summarize
thaavik
sumber
4
Jawaban Anda dan Christopher sejauh ini adalah jawaban terbaik.
Michael Ahlers
2
Solusi yang jauh lebih sederhana daripada jawaban yang diterima. Terima kasih!
Adrian Macneil
1
ini tidak menunjukkan ukuran sebenarnya dengan versi. Apakah ada cara untuk memeriksa ukuran total bucket s3 dengan semua versi?
Shanika Ediriweera
1
Cetak ukuran total setiap ember Anda: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

Untuk mengetahui ukuran bucket S3 menggunakan AWS Console:

  1. Klik nama bucket S3
  2. Pilih tab "Manajemen"
  3. Klik tombol navigasi "Metrik"
  4. Secara default, Anda akan melihat metrik Penyimpanan bucket

Semoga ini membantu.

endriju
sumber
3
Ini bekerja lebih cepat jika bucket Anda memiliki TB data. Jawaban yang diterima membutuhkan banyak waktu untuk menghitung semua objek dalam skala itu.
sokras
Perhatikan juga bahwa ini akan menangkap unggahan yang belum selesai, dengan lssolusi berbasis tidak.
David Moles
cara tercepat untuk melakukannya adalah jawaban ini
Mohammad Zekrallah
36

s3cmd dapat menunjukkan ini kepada Anda dengan menjalankan s3cmd du, secara opsional meneruskan nama bucket sebagai argumen.

markusk
sumber
1
FYI - Saya mencoba ini dan versi cli aws dalam jawaban cudds. Keduanya bekerja dengan baik, tetapi s3cmd secara signifikan lebih lambat dalam kasus yang saya coba pada rilis 1.5.0-rc1.
DougW
@DougW: Terima kasih, info berguna. AWS CLI 1.0.0 dirilis pada September 2013 , jadi tidak ada pada saat saya menulis jawaban saya.
markusk
s3cmd tidak mendukung hashing AWS4 sehingga tidak akan berfungsi dengan wilayah baru mana pun, termasuk wilayah UE "eu-central-1"
Koen.
@Koen .: Terima kasih, saya tidak menyadarinya. Tampaknya pengelola s3cmd sedang mempertimbangkan untuk menambahkan dukungan untuk AWS4: github.com/s3tools/s3cmd/issues/402
markusk
@Koen .: s3cmd sekarang mendukung hashing AWS4 mulai 1.5.0, yang dirilis pada 01-12 2015. Lihat s3tools.org/news .
markusk
28

AWS CLI sekarang mendukung --queryparameter yang mengambil ekspresi JMESPath .

Ini berarti Anda dapat menjumlahkan nilai ukuran yang diberikan dengan list-objectsmenggunakan sum(Contents[].Size)dan menghitung suka length(Contents[]).

Ini dapat dijalankan menggunakan AWS CLI resmi seperti di bawah ini dan diperkenalkan pada Feb 2014

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
Christopher Hackett
sumber
Saya harus menggunakan tanda kutip ganda di sekitar string kueri di baris perintah windows. Bekerja seperti juara sekalipun.
Travis Steel
Hati-hati: jika bucket kosong, perintah akan gagal dengan error berikut: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"Jika tidak, kueri berfungsi dengan baik!
mechatroner
7

Di kotak linux yang memiliki python(dengan pippenginstal), grepdan awk, instal AWS CLI (alat baris perintah untuk EC2, S3, dan banyak layanan lainnya)

sudo pip install awscli

lalu buat .awssecretfile di home folder anda dengan konten seperti dibawah ini (sesuaikan key, secret dan region sesuai kebutuhan):

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

Jadikan file ini baca-tulis hanya untuk pengguna Anda:

sudo chmod 600 .awssecret

dan mengekspornya ke lingkungan Anda

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

kemudian jalankan di terminal (ini adalah perintah baris tunggal, dipisahkan oleh \agar mudah dibaca di sini):

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"}'
  • yang awsbagian daftar ember (atau opsional 'sub-folder')
  • yang grepbagian menghilangkan (menggunakan -v) baris yang cocok dengan Regular Expression (menggunakan -E). ^$adalah untuk baris kosong, --adalah untuk garis pemisah pada keluaranaws s3 ls
  • yang terakhir awkcukup tambahkan ke totalkolom ke-3 dari output yang dihasilkan (ukuran dalam KB) lalu tampilkan di bagian akhir

CATATAN perintah ini berfungsi untuk keranjang atau 'folder' saat ini, tidak secara rekursif

JScoobyCed
sumber
7

Cloud watch juga memungkinkan Anda membuat metrik untuk bucket S3 Anda. Ini menunjukkan kepada Anda metrik berdasarkan ukuran dan jumlah objek. Layanan> Alat Manajemen> Jam Cloud. Pilih wilayah tempat bucket S3 Anda berada dan metrik ukuran dan jumlah objek akan berada di antara metrik yang tersedia.

rowelee
sumber
6

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

Dijawab oleh 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';
?>
JonLovett
sumber
Tahukah Anda jika gigabyte dalam kasus ini adalah 1024 3 atau 1000 3? Saya mengalami kesulitan menemukan pernyataan S3 yang pasti.
dfrankow
@dfrankow Baris echo ($totalSize / 1024 / 1024 / 1024) . ' GB';ini ada di bagian bawah kode sumber.
MJD
@MJD Saya tidak ingat apa yang saya pikirkan di sini. Itu menanyakan tentang penggunaan s3cmd atau S3 dari kata "gigabyte", bukan kode PHP ini.
dfrankow
5

Selain jawaban Christopher.

Jika Anda perlu menghitung ukuran total penggunaan bucket berversi:

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

Ini menghitung versi Terbaru dan Diarsipkan.

ruletkin.dll
sumber
5

Mendapatkan ukuran bucket yang besar melalui API (baik aws cli atau s4cmd) cukup lambat. Inilah HowTo saya menjelaskan cara mengurai Laporan Penggunaan S3 menggunakan bash one liner:

cat report.csv | awk -F, '{printf "%.2f GB %s %s \n", $7/(1024**3 )/24, $4, $2}' | sort -n
Jakub Głazik
sumber
1

Konsol AWS tidak akan menunjukkan ini kepada Anda, tetapi Anda dapat menggunakan Bucket Explorer atau Cloudberry Explorer untuk mendapatkan ukuran total dari sebuah ember. Keduanya memiliki versi gratis yang tersedia.

Catatan: produk ini masih harus mendapatkan ukuran masing-masing objek, sehingga bisa memakan waktu lama untuk bucket dengan banyak objek.

Geoff Appleford
sumber
Saya hanya bisa melihat trialware sekalipun. Apakah tawaran itu telah dihapus?
Trefex
1

Berdasarkan jawaban @ 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]

Selain itu, Cyberduck memungkinkan penghitungan ukuran untuk sebuah ember atau folder dengan mudah.

Evgeny Goldin
sumber
1

Jawaban Mini John benar-benar berhasil untuk saya! Luar biasa ... harus menambahkan

--region eu-west-1 

dari Eropa sekalipun

pitxon_net
sumber
1

Ini adalah pertanyaan lama, tetapi karena saya sedang mencari jawabannya, saya menemukannya. Beberapa jawaban membuat saya ingat saya menggunakan S3 Browser untuk mengelola data. Anda dapat mengklik ember dan menekan properti dan itu menunjukkan kepada Anda total. Cukup mudah. Saya sangat merekomendasikan peramban: https://s3browser.com/default.aspx?v=6-1-1&fam=x64

pengguna7191982
sumber
0

Nah, Anda juga bisa melakukannya melalui klien S3 jika Anda lebih suka UI yang ramah manusia.

Saya menggunakan CrossFTP , yang gratis dan lintas platform, dan di sana Anda dapat mengklik kanan pada direktori folder -> pilih "Properties ..." -> klik tombol "Calculate" di sebelah Size dan voila.

Yiannis Tsimalis
sumber
0

s3admin adalah aplikasi sumber terbuka (UI) yang memungkinkan Anda menjelajahi keranjang, menghitung ukuran total, menampilkan file terbesar / terkecil. Ini disesuaikan untuk memiliki ikhtisar singkat tentang Bucket Anda dan penggunaannya.

maksion
sumber
0

Anda bertanya: informasi di konsol AWS tentang berapa banyak ruang disk yang digunakan di cloud S3 saya ?

Saya begitu ke Billing Dashboard dan memeriksa penggunaan S3 di tagihan saat ini .

Mereka memberi Anda informasi - MTD - dalam Gb hingga 6 poin desimal, IOW, hingga level Kb.

Ini dipecah berdasarkan wilayah, tetapi menambahkannya (dengan asumsi Anda menggunakan lebih dari satu wilayah) cukup mudah.

BTW: Anda mungkin memerlukan izin IAM khusus untuk mendapatkan informasi Penagihan.

Danny Schoemann
sumber
-2

Saya menggunakan Cloud Turtle untuk mendapatkan ukuran masing-masing ember. Jika ukuran bucket melebihi> 100 Gb, maka perlu beberapa waktu untuk menampilkan ukuran tersebut. Penyu awan adalah freeware.

Sangram Anand
sumber
8
Hati-hati dengan software ini. Ini menginstal ekstensi chrome tambahan dan tampaknya agak berisi spam.
styks