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

时间:2015-10-05 18:25:07

标签: amazon-s3 boto

我正在编写一个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。

3 个答案:

答案 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