【发布时间】:2020-04-16 06:13:19
【问题描述】:
我正在尝试在 csv 中列出 s3 存储桶及其大小。
- 存储桶名称大小
- 存储桶 A 2 GB
- B 桶 10 GB
正在寻找这样的东西......
我可以使用以下代码列出存储桶。
def main():
with open('size.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow([
'Bucket Name',
'Bucket Size'
])
with open('accountroles.json') as ec2_file:
ec2_data = json.load(ec2_file)
region_list = ['us-west-1']
for region in region_list:
for index in range(len(ec2_data['Items'])):
Account_Number = ec2_data['Items'][index]['Aws_Account_Number']
Account_Name = ec2_data['Items'][index]['Acc_Name']
ARN = ec2_data['Items'][index]['ARN']
b = get_assume_arn_to_keys(Account_Number,Account_Name,ARN)
#ds_client = boto3.client('s3',region_name=region,aws_access_key_id=``,aws_secret_access_key=``,aws_session_token=``)
ds_client = boto3.client('s3',region_name=region,aws_access_key_id=b[1],aws_secret_access_key=b[2],aws_session_token=b[3])
#s3_client = boto3.client('s3')
bucket_list = ds_client.list_buckets()
for bucket in bucket_list['Buckets']:
************
??????????
writer.writerow([
Account_Name,
#region,
bucket['Name'],
Bucketsize
])
main()
我可以列出存储桶。请帮助我如何继续获取尺寸。 我提到的很少,似乎可以通过 CW 指标获得大小。有什么办法吗。
帮我写剧本。
编辑/更新:
bucket_list = ds_client.list_buckets()
for bucket in bucket_list['Buckets']:
try:
lifecycle = ds_client.get_bucket_lifecycle(Bucket=bucket['Name'])
rules = lifecycle['Rules']
except:
rules = 'No Policy'
try:
encryption = ds_client.get_bucket_encryption(Bucket=bucket['Name'])
Encryptiontype = encryption['ServerSideEncryptionConfiguration']['Rules']
except:
Encryptiontype = 'Not Encrypted'
print(bucket['Name'], rules, Encryptiontype)
谢谢
【问题讨论】:
-
查看 S3 库存。也许这也适合您的用例。
-
CW 指标的用处不大,因为它对于 S3 每 24 小时只获取一个数据点。
-
是的,我不想使用帖子中提到的 CW 指标...还有其他的吗?
-
桶中有多少个对象?如果它很大(数万),我会推荐Amazon S3 Inventory,它可以提供一个桶中所有对象的每日 CSV 文件(包括它们的大小)。
-
@JohnRotenstein 我至少有 200 个存储桶,每个存储桶的大小从 1GB 到 4TB 不等,有多个对象...有没有办法可以将它添加到我的脚本中。因为我已经提取了存储桶的所有属性。我只想要 csv 中大小的新列。
标签: python amazon-web-services amazon-s3 boto3