AWS S3: làm cách nào để biết dung lượng ổ đĩa đang sử dụng


113

Tôi có tài khoản AWS. Tôi đang sử dụng S3 để lưu trữ các bản sao lưu từ các máy chủ khác nhau. Câu hỏi là có bất kỳ thông tin nào trong bảng điều khiển AWS về dung lượng ổ đĩa đang được sử dụng trong đám mây S3 của tôi không?


1
Bạn phải lấy tất cả các đối tượng, sau đó tổng hợp tất cả các kích thước tệp. Bạn không thể làm điều đó trong một hoạt động duy nhất.
Layke

Thật kỳ lạ là không có giải pháp thực sự cho vấn đề này. Xem qua tất cả các mục và tính toán không phải là giải pháp nếu bạn có 10 phần triệu tệp! Trong giao diện người dùng s3 của AWS, bạn có thể dễ dàng thấy việc sử dụng trong Quản lý -> Chỉ số. Tại sao không có cách nào để lấy điều này từ dòng lệnh?
Sarang

Câu trả lời:


117

Yippe - bản cập nhật cho AWS CLI cho phép bạn đệ quy thông qua các nhóm ...

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

in tổng số / 1024/1024/1024 * .03 đưa ra một ước tính tốt cho việc sử dụng $ nếu bạn dưới 1TB. @cudds awesomeness - cảm ơn rất nhiều !!!
chrislovecnm

4
Bạn không cần phần grep nếu bạn là một nhóm duy nhất.
jpbochi

7
AWS Cloudwatch hiện có chỉ số cho kích thước nhóm và số lượng đối tượng được cập nhật hàng ngày. Khoảng thời gian! aws.amazon.com/blogs/aws/…
cudds

3
Ví dụ 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 Quan trọng: Bạn phải chỉ định cả StorageType và BucketName trong đối số thứ nguyên, nếu không bạn sẽ không nhận được kết quả nào.
Sam Martin

@SamMartin StorageType cần là gì? Ngoài ra, câu trả lời này mất rất nhiều thời gian để tính toán cho các nhóm lớn hơn 100 GB
Vivek Katial

104

Tôi không chắc khi nào điều này được thêm vào AWSCLI vì câu hỏi ban đầu là 3 năm trước, nhưng công cụ dòng lệnh đưa ra một bản tóm tắt đẹp bằng cách chạy:

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

4
Của bạn và của Christopher cho đến nay là câu trả lời tốt nhất.
Michael Ahlers

2
Giải pháp đơn giản hơn nhiều so với câu trả lời được chấp nhận. Cảm ơn!
Adrian Macneil

1
điều này không hiển thị kích thước thực với các phiên bản. Có cách nào để kiểm tra tổng kích thước của thùng s3 với tất cả các phiên bản không?
Shanika Ediriweera

1
In tổng kích thước của từng nhóm của bạn: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

Để tìm hiểu kích thước của nhóm S3 bằng Bảng điều khiển AWS:

  1. Nhấp vào tên nhóm S3
  2. Chọn tab "Quản lý"
  3. Nhấp vào nút điều hướng "Số liệu"
  4. Theo mặc định, bạn sẽ thấy chỉ số Bộ nhớ của nhóm

Hi vọng điêu nay co ich.


3
Điều này hoạt động nhanh hơn trong trường hợp nhóm của bạn có hàng TB dữ liệu. Các câu trả lời được chấp nhận mất rất nhiều thời gian để tính toán tất cả các đối tượng trong thang đo đó.
sokras

Cũng lưu ý rằng điều này sẽ khiến các bản tải lên không hoàn chỉnh bị treo, với các lsgiải pháp dựa trên thì không.
David Moles

cách nhanh nhất để làm điều đó là câu trả lời này
Mohammad Zekrallah

36

s3cmd có thể cho bạn thấy điều này bằng cách chạy s3cmd du, tùy chọn chuyển tên thùng làm đối số.


1
FYI - Tôi đã thử điều này và phiên bản cli của aws trong câu trả lời cudds. Cả hai đều hoạt động tốt, nhưng s3cmd chậm hơn đáng kể trong các trường hợp tôi đã thử kể từ bản phát hành 1.5.0-rc1.
DougW

@DougW: Cảm ơn, thông tin hữu ích. AWS CLI 1.0.0 đã được phát hành vào tháng 9 năm 2013 , vì vậy nó không tồn tại vào thời điểm tôi viết câu trả lời của mình.
markusk

s3cmd không hỗ trợ băm AWS4 nên sẽ không hoạt động với bất kỳ khu vực mới nào, bao gồm cả khu vực EU "eu-central-1"
Koen.

@Koen: Cảm ơn, tôi không biết về điều này. Có vẻ như nhà bảo trì s3cmd đang xem xét thêm hỗ trợ cho AWS4: github.com/s3tools/s3cmd/issues/402
markusk

@Koen .: s3cmd hiện hỗ trợ băm AWS4 kể từ 1.5.0, được phát hành 2015-01-12. Xem s3tools.org/news .
markusk

28

AWS CLI hiện hỗ trợ --querytham số nhận biểu thức JMESPath .

Điều này có nghĩa là bạn có thể tính tổng các giá trị kích thước đã cho bằng list-objectscách sử dụng sum(Contents[].Size)và đếm như length(Contents[]).

Điều này có thể được chạy bằng AWS CLI chính thức như bên dưới và được giới thiệu vào tháng 2 năm 2014

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

Tôi đã phải sử dụng dấu ngoặc kép xung quanh chuỗi truy vấn trong dòng lệnh windows. Hoạt động như một nhà vô địch mặc dù.
Travis Steel

Lưu ý: nếu thùng rỗng, lệnh sẽ không thành công với lỗi sau: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"Nếu không, truy vấn hoạt động tốt!
mechatroner

7

Trên hộp linux có python(với trình pipcài đặt) grepawkcài đặt AWS CLI (công cụ dòng lệnh cho EC2, S3 và nhiều dịch vụ khác)

sudo pip install awscli

sau đó tạo một .awssecrettệp trong thư mục chính của bạn với nội dung như bên dưới (điều chỉnh khóa, bí mật và khu vực nếu cần):

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

Đặt tệp này chỉ đọc-ghi cho người dùng của bạn:

sudo chmod 600 .awssecret

và xuất nó vào môi trường của bạn

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

sau đó chạy trong terminal (đây là một lệnh dòng đơn, được phân tách bằng cách \để dễ đọc ở đây):

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"}'
  • các awsphần liệt kê các xô (hoặc tùy chọn một 'tiểu thư mục')
  • các greploại bỏ việc phần (sử dụng -v) các dòng phù hợp với Regular Expression (sử dụng -E). ^$dành cho dòng trống, --dành cho các dòng phân tách trong đầu ra củaaws s3 ls
  • cuối cùng awkchỉ cần thêm vào totalcột thứ 3 của kết quả đầu ra (kích thước tính bằng KB), sau đó hiển thị nó ở cuối

LƯU Ý lệnh này hoạt động cho nhóm hiện tại hoặc 'thư mục', không phải đệ quy


7

Đồng hồ đám mây cũng cho phép bạn tạo chỉ số cho nhóm S3 của mình. Nó hiển thị cho bạn các chỉ số theo kích thước và số lượng đối tượng. Dịch vụ> Công cụ quản lý> Đồng hồ đám mây. Chọn khu vực có nhóm S3 của bạn và các chỉ số kích thước và số lượng đối tượng sẽ nằm trong số các chỉ số có sẵn đó.


6

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

Trả lời bởi 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';
?>

Bạn có biết gigabyte trong trường hợp này là 1024 3 hay 1000 3 không? Tôi đang gặp khó khăn khi tìm một tuyên bố S3 chính xác.
dfrankow

@dfrankow Dòng echo ($totalSize / 1024 / 1024 / 1024) . ' GB';nằm ngay ở cuối mã nguồn.
MJD

@MJD Tôi không nhớ suy nghĩ của tôi ở đây là gì. Nó đang hỏi về việc sử dụng từ "gigabyte" trong s3cmd hoặc S3, không phải mã PHP này.
dfrankow

5

Ngoài câu trả lời của Christopher.

Nếu bạn cần tính tổng kích thước sử dụng nhóm được phiên bản:

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

Nó tính cả phiên bản Mới nhất và Đã lưu trữ.



1

Bảng điều khiển AWS sẽ không hiển thị cho bạn điều này nhưng bạn có thể sử dụng Bucket Explorer hoặc Cloudberry Explorer để nhận tổng kích thước của một nhóm. Cả hai đều có sẵn phiên bản miễn phí.

Lưu ý: các sản phẩm này vẫn phải lấy kích thước của từng đối tượng riêng biệt nên có thể mất nhiều thời gian đối với những thùng có nhiều đối tượng.


Tôi chỉ có thể thấy một phần mềm dùng thử. Đề nghị đó đã bị xóa chưa?
Trefex

1

Dựa trên câu trả lời của @ 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]

Ngoài ra, Cyberduck cho phép tính toán kích thước cho một thùng hoặc một thư mục một cách thuận tiện.


1

Câu trả lời của Mini John hoàn toàn phù hợp với tôi! Tuyệt vời ... phải thêm

--region eu-west-1 

từ Châu Âu mặc dù


1

Đây là một câu hỏi cũ, nhưng vì tôi đang tìm câu trả lời nên tôi đã lướt qua nó. Một số câu trả lời khiến tôi nhớ rằng tôi sử dụng Trình duyệt S3 để quản lý dữ liệu. Bạn có thể nhấp vào một nhóm và đánh thuộc tính và nó hiển thị cho bạn tổng số. Khá đơn giản. Tôi thực sự khuyên bạn nên sử dụng trình duyệt: https://s3browser.com/default.aspx?v=6-1-1&fam=x64


0

Bạn cũng có thể làm điều đó thông qua ứng dụng khách S3 nếu bạn thích giao diện người dùng thân thiện với con người.

Tôi sử dụng CrossFTP , miễn phí và đa nền tảng, ở đó bạn có thể nhấp chuột phải vào thư mục thư mục -> chọn "Thuộc tính ..." -> nhấp vào nút "Tính toán" bên cạnh Kích thước và thì đấy.


0

s3admin là một ứng dụng nguồn mở (UI) cho phép bạn duyệt các nhóm, tính tổng kích thước, hiển thị các tệp lớn nhất / nhỏ nhất. Nó được thiết kế riêng để có cái nhìn tổng quan nhanh về Nhóm của bạn và cách sử dụng chúng.


0

Bạn đã hỏi: thông tin trong bảng điều khiển AWS về dung lượng ổ đĩa đang sử dụng trên đám mây S3 của tôi ?

Tôi vào Trang tổng quan thanh toán và kiểm tra việc sử dụng S3 trong hóa đơn hiện tại .

Họ cung cấp cho bạn thông tin - MTD - tính bằng Gb đến 6 dấu thập phân, IOW, đến mức Kb.

Nó được chia nhỏ theo vùng, nhưng việc cộng chúng lại (giả sử bạn sử dụng nhiều vùng) là đủ dễ dàng.

BTW: Bạn có thể cần các quyền IAM cụ thể để truy cập thông tin Thanh toán.


-2

Tôi sử dụng Cloud Turtle để lấy kích thước của từng nhóm. Nếu kích thước nhóm vượt quá> 100 Gb, thì sẽ mất một khoảng thời gian để hiển thị kích thước. Rùa mây là phần mềm miễn phí.


8
Hãy cẩn thận với phần mềm này. Nó cài đặt thêm các tiện ích mở rộng của chrome và có vẻ khá là spam.
styks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.