Wrap unwrap dynamo DB Streams

时间:2018-02-19 12:30:43

标签: python-3.x amazon-web-services amazon-dynamodb amazon-dynamodb-streams

我正在尝试根据表中的更改来处理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

1 个答案:

答案 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': ...} 中,因为对象的顶层是地图