我需要为每个存储桶的“属性”选项卡上的设置记录数百个S3存储桶。这是为了验证没有一个是公共的,没有一个是未加密的。稍后,我还必须为每个存储桶提供ACL。
以下是我所了解的
from boto3.session import Session
import config
import pandas as pd
ACCESS_KEY=config.awsAccessKey
SECRET_KEY=config.awsSecretKey
session = Session(aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
s3 = session.resource('s3')
counter = 0
csv_list = []
path = '//ant.amazon.com/dept/DCGSI/Extracts/s3_buckets_list.csv'
for bucket in s3.buckets.all():
for obj in bucket.objects.all():
if counter == 10:
break
bucketsTwoDeep = bucket.name + obj.key
counter += 1
这为我提供了存储桶和第一级“文件夹”对象。我似乎找不到找到存储桶中属性的方法。有办法吗?一旦获得数据,我将不得不将其放入CSV或其他格式,因此希望我可以得到的任何数据都可以是可数据化的。
答案 0 :(得分:0)
您可能正在寻找s3client中的一整堆get_bucket方法。 get_bucket_encryption()和get_bucket_acl()浮现在脑海。
例如
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> from pprint import pprint
>>> s3client = boto3.client('s3')
>>> response = s3client.get_bucket_acl(Bucket = 'bucketname')
>>> pprint (response['Grants'])
[{'Grantee': {'DisplayName': 'username',
'ID': '3c9b78c1dbb3599d60dab12c5d9c9d7eef13ca95e2505d6e022c98345c70e5fc',
'Type': 'CanonicalUser'},
'Permission': 'FULL_CONTROL'}]
位于https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client的s3 Client命令的完整列表