我正在编写一个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。
答案 0 :(得分:3)
对于它的价值,您可以使用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
docs。
答案 1 :(得分:1)
扩展@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
答案 2 :(得分:0)
您还可以使用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