AWS S3-Object没有属性SERVER_SIDE_ENCRYPTION'

问题描述

有人能解释一下这两个电话的区别吗?第一个给出了正确的server_side_ENCRYPTION,第二个给出了错误。其他属性提供相同的值-

#!/usr/bin/python

import boto3
import botocore

s3 = boto3.resource('s3')
s3_client = boto3.client('s3')


object = s3.Object('abcdefhkjl9999','error.html')

print(object.bucket_name)
print(object.key)
print(object.last_modified)
print(object.storage_class)
print(object.server_side_encryption)


bucket = s3.Bucket('abcdefhkjl9999')
for object in bucket.objects.all():
    print("#############################")
    print(object.bucket_name)
    print(object.key)
    print(object.last_modified)
    print(object.storage_class)
    print(object.server_side_encryption)


The output is -
abcdefhkjl9999
error.html
2017-08-20 22:58:02+00:00
REDUCED_REDUNDANCY
aws:kms
#############################
abcdefhkjl9999
error.html
2017-08-20 22:58:02+00:00
REDUCED_REDUNDANCY
Traceback (most recent call last):
File "./test3.py", line 26, in <module>
print(object.server_side_encryption)
AttributeError: 's3.ObjectSummary' object has no attribute       'server_side_encryption'

解决方案

正如您收到的错误所述,您尝试从中获取server_side_encryption属性的对象实际上不是s3.Object类型,而是s3.ObjectSummary类型

幸运的是,您可以将对象作为子资源获取specified here

inner = outer.Object() 然后查询属性

print(inner.server_side_encryption)

相关文章