我正在尝试根据表中的更改来处理dynamoDB流。
流中的项目具有流中存在的数据类型。
我正在尝试找到一个类似于dynamodb-data-types的库,它可以将dynamoDB结构展开为python的json结构。我的lambda是python。
例如: 我正在尝试转换
{
"fruit": {
"S": "Apple"
},
"count": {
"N": "12"
}
}
到
{
fruit: 'Apple',
count: 12
}
我试图在wrb中搜索,但无法找到并解决。
如果没有这样的图书馆,你认为自己处理这个图书的最佳方法是什么。
修改
目前我正在实现这一目标(我不确定这是否是推荐方式):
def cleanDynamoDBStream(record):
newImage = record["dynamodb"]["NewImage"]
for key, dynamoDBValue in newImage.items():
for dataType, value in dynamoDBValue.items():
newImage[key] = value
return newImage
答案 0 :(得分:1)
从 boto3
开始,您可以使用 TypeDeserializer
-- 它是一个有点奇怪的 api(不必要的面向对象),但它似乎可以满足您的需求:
>>> obj = {
... "fruit": {
... "S": "Apple"
... },
... "count": {
... "N": "12"
... }
... }
>>> from boto3.dynamodb.types import TypeDeserializer
>>> deserializer = TypeDeserializer()
>>> deserializer.deserialize({'M': obj})
{'fruit': 'Apple', 'count': Decimal('12')}
请注意,我必须将对象包裹在 {'M': ...}
中,因为对象的顶层是地图