Skip to main content

Amazon S3: バケットのサイズを取得する

概要

S3 バケットに現在保存されているサイズを取得するには、BucketSizeBytes メトリクスを参照します。

参考) Metrics and dimensions - Amazon Simple Storage Service (S3)

コード

例) aws-s3-bucket-sizes.py

def get_s3_bucket_size_bytes(bucket_name: str, region_name: str) -> Optional[int]:
end_datetime = datetime.now()
start_datetime = end_datetime - timedelta(days=2)
cw_client = boto3.client("cloudwatch", region_name=region_name, config=Config(retries={"mode": "standard"}))
response = cw_client.get_metric_statistics(
Namespace="AWS/S3",
MetricName="BucketSizeBytes",
Dimensions=[
{"Name": "BucketName", "Value": bucket_name},
{"Name": "StorageType", "Value": "StandardStorage"},
],
Statistics=["Maximum"],
StartTime=start_datetime,
EndTime=end_datetime,
Period=86400, # daily
)
datapoints = sorted(response["Datapoints"], key=lambda x: x["Timestamp"])
if len(datapoints) == 0:
return None
return int(datapoints[-1]["Maximum"]) # latest value