如何使用boto检查S3对象是否已加密?

3

我正在编写一个python脚本,用于查找S3对象是否已加密。我尝试使用以下代码,但是key.encrypted始终返回None,即使我可以看到S3上的对象已加密。

keys = bucket.list()
for k in keys:
    print k.name, k.size, k.last_modified, k.encrypted , "\n"

k.encrypted总是返回None。


我确认这些结果。奇怪!我想知道 boto3 是否已经修复了这个问题? - John Rotenstein
1
提出了针对 boto 的问题:https://github.com/boto/boto/issues/3361 - John Rotenstein
3个回答

7

对于这个问题,你可以使用boto3来实现(它可以与 boto并存)。

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
for obj in bucket.objects.all():
    key = s3.Object(bucket.name, obj.key)
    print key.server_side_encryption

请参阅 boto3文档,了解可用键属性的列表。

2
扩展@mfisherca的回答,您可以使用AWS CLI完成此操作:
aws s3api head-object --bucket <bucket> --key <key>

# or query the value directly

aws s3api head-object --bucket <bucket> --key <key> \
  --query ServerSideEncryption --output text

1

我该如何获取所有对象的状态而不是特定对象的状态?我想知道特定存储桶中所有对象的加密状态。 - manda1238
@manda1238 David Morales的回答循环遍历所有对象并返回每个对象的加密状态。如果您希望一次性获取所有对象的状态,则无法通过单个API调用实现。 - mfisherca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接