AWS S3:使用しているディスク容量を確認するにはどうすればよいですか?


113

AWSアカウントを持っています。S3を使用して、さまざまなサーバーからのバックアップを保存しています。問題は、AWSコンソールにS3クラウドで使用されているディスク容量についての情報はありますか?


1
すべてのオブジェクトを取得してから、すべてのファイルサイズを合計する必要があります。一度の操作ではできません。
Layke

この問題に対する実際の解決策がないのは奇妙です。数千万のファイルがある場合、すべてのアイテムを調べて計算することは解決策ではありません!AWSのs3 UIでは、[Management]-> [Metrics]で使用状況を簡単に確認できます。コマンドラインからこれを取得する方法がないのはなぜですか?
サラン

回答:


117

Yippe-AWS CLIの更新により、バケットを介して再帰的にlsを実行できます...

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は、1TB未満の場合、$の使用量を適切に見積もります。@cudds awesomeness-ありがとうトン!!!
chrislovecnm 2014年

4
単一のバケットを使用する場合、grepの部分は必要ありません。
jpbochi 2014

7
AWS Cloudwatchに、バケットサイズと毎日更新されるオブジェクト数のメトリックが追加されました。良い頃!aws.amazon.com/blogs/aws/...
cudds

3
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 重要:引数引数でStorageTypeとBucketNameの両方を指定する必要があります。指定しない場合、結果が得られません。
Sam Martin

@SamMartin StorageTypeは何である必要がありますか?また、この回答は100 GBを超えるバケットの計算に非常に長い時間がかかります
Vivek Katial

104

これがAWSCLIにいつ追加されたかはわかりませんが、元の質問は3年前だったので、コマンドラインツールを実行すると、次のように実行すると良い要約が得られます。

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

4
あなたとクリストファーのものは断然最高の答えです。
Michael Ahlers 2016年

2
受け入れられた答えよりもはるかに簡単な解決策。ありがとう!
エイドリアン・マクニール2016

1
これは、バージョンの実際のサイズを示していません。すべてのバージョンでs3バケットの合計サイズを確認する方法はありますか?
Shanika Ediriweera

1
:あなたのバケットのそれぞれの合計サイズプリントfor b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
マット・ホワイト

69

AWSコンソールを使用してS3バケットのサイズを確認するには:

  1. S3バケット名をクリックします
  2. 「管理」タブを選択
  3. 「Metrics」ナビゲーションボタンをクリックします
  4. デフォルトでは、バケットのストレージメトリックが表示されます。

お役に立てれば。


3
バケットにTBのデータがある場合、これはより速く機能します。受け入れられた回答は、そのスケールですべてのオブジェクトを計算するのに長い時間がかかります。
ソクラ

また、これは、不完全なアップロードのハングをキャプチャしますが、lsベースのソリューションはキャプチャしません。
David Moles

それを行う最も速い方法はこの答えです
Mohammad Zekrallah

36

s3cmdは、を実行しs3cmd du、オプションでバケット名を引数として渡すことでこれを表示できます。


1
参考までに-私はこれを試しました、そしてcudds回答のaws cliバージョンです。どちらも正常に動作しますが、リリース1.5.0-rc1で試した場合、s3cmdは大幅に遅くなりました。
DougW 2014

@DougW:ありがとう、役立つ情報。AWS CLI 1.0.0は2013年9月にリリースされたので、回答を書いた時点では存在しませんでした。
markusk 2014

s3cmdはAWS4ハッシュをサポートしていないため、EUリージョン「eu-central-1」を含む新しいリージョンでは機能しません
Koen。

@公園:ありがとう、私はこれを知らなかった。s3cmdのメンテナがAWS4のサポートの追加を検討しているようです:github.com/s3tools/s3cmd/issues/402
markusk

@Koen .: 2015-01-12にリリースされた1.5.0以降、s3cmdはAWS4ハッシュをサポートするようになりました。s3tools.org/newsを参照してください。
markusk 2015

28

AWS CLI --queryJMESPathをとるパラメーターをサポートするようになりました式を。

これは、list-objectsを使用sum(Contents[].Size)して指定されたサイズの値を合計して、次のようにカウントできることを意味しますlength(Contents[])

これは、以下の公式AWS CLIを使用して実行でき、2014年2月に導入されました

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

Windowsコマンドラインでクエリ文字列を二重引用符で囲む必要がありました。チャンピオンのように機能します。
Travis Steel

注意:バケットが空の場合、コマンドは次のエラーで失敗します。In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"それ以外の場合、クエリは適切に機能します。
メカトロナー

7

Linuxボックスの持っているpython(とpipインストーラ)、grepおよびawk、AWS CLI(EC2、S3および他の多くのサービスのためのコマンドラインツール)をインストールします

sudo pip install awscli

次に.awssecret、ホームフォルダーに以下の内容のファイルを作成します(必要に応じてキー、シークレット、リージョンを調整します)。

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

このファイルをユーザーのみに読み書き可能にします。

sudo chmod 600 .awssecret

それを環境にエクスポートします

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

次に、ターミナルで実行します(これは、\ここで読みやすくするために区切られた1行のコマンドです)。

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"}'
  • awsパーツリストバケット(または必要に応じて「サブフォルダ」)
  • grep一部の除去(使用-v)正規表現(使用と一致する行-E)。^$空白行です--用で、の出力の区切り線用ですaws s3 ls
  • 最後はawk単純にtotal結果の出力の3番目の列(サイズはKB)に追加し、最後に表示します

注:このコマンドは現在のバケットまたは「フォルダ」に対して機能し、再帰的には機能しません


7

Cloud Watchでは、S3バケットの指標を作成することもできます。サイズとオブジェクト数ごとにメトリックを表示します。サービス>管理ツール>クラウドウォッチ。S3バケットが存在するリージョンを選択し、サイズとオブジェクト数のメトリックがそれらの使用可能なメトリックの中に含まれます。


6

/server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucketを参照してください

ヴィックが答えました...

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

この場合のギガバイトが1024 3か1000 3かを知っていますか?確実なS3ステートメントを見つけるのに苦労しています。
dfrankow 2013

@dfrankowこの行echo ($totalSize / 1024 / 1024 / 1024) . ' GB';はソースコードの一番下にあります。
MJD 2014

@MJD私の考えがここにあったか覚えていません。このPHPコードではなく、「ギガバイト」という単語のs3cmdまたはS3の使用について尋ねていました。
dfrankow 14

5

クリストファーの答えに加えて。

バージョン付きバケットの合計サイズをカウントする必要がある場合:

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

最新バージョンとアーカイブバージョンの両方をカウントします。



1

AWSコンソールには表示されませんが、バケットエクスプローラーまたはCloudberryエクスプローラーを使用できますをの合計サイズを取得できます。どちらにも無料版があります。

注:これらの製品では、個々のオブジェクトのサイズを取得する必要があるため、多くのオブジェクトを含むバケットの場合は長い時間がかかる可能性があります。


私はトライアルウェアしか見ることができません。そのオファーは削除されましたか?
Trefex 2013年

1

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

また、Cyber​​duckを使用すると、バケットまたはフォルダのサイズを簡単に計算できます。


1

ミニジョンの答えは私のために完全にうまくいきました!素晴らしい...追加する必要がありました

--region eu-west-1 

ヨーロッパから


1

これは古い質問ですが、私は答えを探していたので、それを偶然見つけました。回答の中には、データの管理にS3ブラウザを使用していることを覚えているものがあります。バケットをクリックしてプロパティをヒットすると、合計が表示されます。ものすごく単純。私はブラウザを強くお勧めしますhttps : //s3browser.com/default.aspx?v=6-1-1&fam=x64


0

まあ、人間にやさしいUIを好むなら、S3クライアントを介してそれを行うこともできます。

私は無料でクロスプラットフォームのCrossFTPを使用しています。そこで、フォルダーディレクトリを右クリックして、[プロパティ...]を選択し、[サイズと横]の横にある[計算]ボタンをクリックします。


0

s3adminは、バケットの閲覧、合計サイズの計算、最​​大/最小ファイルの表示を可能にするオープンソースアプリ(UI)です。バケットとその使用法の概要をすばやく把握できるように調整されています。


0

あなたが尋ねた:私のS3クラウドで使用されているディスク容量に関するAWSコンソールの情報

私はそうする請求ダッシュボードと、現在の法案でS3の使用状況を確認します

彼らはあなたに情報-MTD-をGbで6小数点、IOW、Kbレベルに与えます。

地域ごとに分類されていますが、それらを追加する(複数の地域を使用している場合)のは簡単です。

ところで:お支払い情報にアクセスするには、特定のIAM権限が必要な場合があります。


-2

Cloud Turtleを使用して、個々のバケットのサイズを取得します。バケットのサイズが100 GBを超える場合、サイズの表示に時間がかかります。Cloud turtleはフリーウェアです。


8
このソフトウェアには注意してください。それは余分なクロム拡張機能をインストールし、かなりスパムのようです。
スタイクス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.