AWS S3のバケット別使用量を調べる

AWS S3 の各バケットで使用している容量を調べる方法をメモ。

AWS 管理画面から使用量を出力

AWS 管理画面のアカウントメニューに「Usage Reports」がある。
この機能を利用して S3 のバケットごとの使用量(Byte-Hours)を調べる。

aws_usage_reports
Service に “Amazon Simple Storage Service” を選択
Usage Types に “TimedStorage-ByteHrs” を選択
あとは期間とフォーマットを指定してダウンロード。

出力データにはバケットごとに使用量が UsageValue カラムに出力される。

単位は Byte-Hours なので、請求の目安に利用できる。
要らなくなったバケットに大きな数字がのっていたら、さっさと整理しないといけない。

CSV Format

Service, Operation, UsageType, Resource, StartTime, EndTime, UsageValue
AmazonS3,StandardStorage,TimedStorage-ByteHrs,dummy-bucket-75,03/02/14 00:00:00,03/03/14 00:00:00,4840
...

XML Format

<?xml version="1.0" encoding="UTF-8"?>
<ServiceUsage>
	<OperationUsage>
		<ServiceName>AmazonS3</ServiceName>
		<OperationName>StandardStorage</OperationName>
		<UsageType>TimedStorage-ByteHrs</UsageType>
		<Resource>dummy-bucket-75</Resource>
		<StartTime>03/02/14 00:00:00</StartTime>
		<EndTime>03/03/14 00:00:00</EndTime>
		<UsageValue>4840</UsageValue>
	</OperationUsage>
	...
</ServiceUsage>

注意点としては、この機能は決済情報を閲覧できるような強い権限がないと使えない。
権限がなりないアカウントでこの画面に遷移すると、以下のようなエラー画面が表示される。

aws_usage_report_error

via

プログラムから使用量を調べる

プログラマブルにバケットごとのサイズを調べる方法。
いろいろな SDK から計算できるのだろうけど、今回は boto(python) を利用。

指定したバケットの全オブジェクトを走査し、オブジェクトサイズの合計を求める。単位はバイト。

import boto
s3 = boto.connect_s3()
bucket = s3.lookup('your-bucket-name')
total_bytes = 0
for key in bucket:
       total_bytes += key.size
print total_bytes

boto は $ sudo yum install python-boto でインストールできる。
EC2 インスタンス内で実行すれば、通信料が発生しない。

via

Advertisements
Tagged with: , ,
Posted in aws

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: