我正在编写一个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
来实现(它可以与 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
的文档,了解可用键属性的列表。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
head_object
调用来检查特定对象的加密状态。以下是Python/boto示例:
#!/usr/bin/env python
import boto3
s3_client = boto3.client('s3')
head = s3_client.head_object(
Bucket="<S3 bucket name>",
Key="<S3 object key>"
)
if 'ServerSideEncryption' in head:
print head['ServerSideEncryption']
请参阅: http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.head_object
boto3
是否已经修复了这个问题? - John Rotensteinboto
的问题:https://github.com/boto/boto/issues/3361 - John Rotenstein