Python dynamodb put_项中使用boto3的Unicode解码错误
我试图将API密码等存储在dynamodb表中,用AES加密,但存储起来有问题。我有一个记录着我正在写的数据的口述Python dynamodb put_项中使用boto3的Unicode解码错误,python,amazon-dynamodb,Python,Amazon Dynamodb,我试图将API密码等存储在dynamodb表中,用AES加密,但存储起来有问题。我有一个记录着我正在写的数据的口述 for key in endpoint: if 'password' in key or 'security' in key or 'secret' in key: #encrypt the value obj = AES.new( landlord_registry['default_
for key in endpoint:
if 'password' in key or 'security' in key or 'secret' in key:
#encrypt the value
obj = AES.new(
landlord_registry['default_crypt_salt'],
AES.MODE_CFB,
landlord_registry['default_crypt_iv'])
endpoint[key] = {'B' : obj.encrypt(endpoint[key])}
else:
endpoint[key] = {'S' : endpoint[key]}
生成的dict如下所示:
{'mvp_version':{'S':'0.3'},'endpoint_details':[{u'time_interval':{'S':u'30'},u'username':{'S':u'blahblah@blahblah.org“},u'primary_key':{'S':u'Id'},u'security_token':{'B':'&\xd9\t\x7b\x9…},u'service_name':{'S':u'blahblah'},u'enabled':{'S':u'1'},u'endpoint_Id':{'S':u'SFORG0',u'password:{B'B':“K9\x958\x31\3 3 3 3 1...”}},,,{u'u''B'B'B'B'B'B''B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'C'B'B'B'B'C'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'B'3'B'B'C'C'C'B'B'B'B'3'3'3'3'3'3'3'3'5'9'9'9'9'9'9'9'9\xe2n….'}]}
错误是:Dynamo插入错误:(,UnicodeDecodeError('utf8',…,1,2,'无效的继续字节')
但是从我所知道的,因为我使用了{'B':'encoded text'},它应该尝试将其存储为字节而不是unicode文本。我需要在Python 2中使用二进制(文本)包装器,以便在dynamodb中存储二进制文本。因此,行:
endpoint[key] = {'B' : obj.encrypt(endpoint[key])}
应该是这样的:
endpoint[key] = {'B' : Binary(obj.encrypt(endpoint[key]))}