如何使用boto3从DynamoDB有线协议手动转换为原生Python对象?

石匠

我有一个由DynamoDB流触发的Lambda。Lambda进行一些处理,然后在SNS中创建有关主题的通知。理想情况下,我希望将整个新文档包括在发给SNS的通知中,以便下游客户端不必点击DynamoDB即可获取数据。

我遇到的问题是,来自DynamoDB流的数据是DynamoDB有线格式的(映射包括作为关键字的数据类型)。当我向下游客户端发送通知时,我不希望他们必须了解DynamoDB有线格式来解析消息(例如,如果我切换到新的基础数据存储,则必须重新创建该格式)。

显然,boto3客户端能够将这种格式解析为Python对象,是否有办法让我自己访问解析器?据我所知,它是从DynamoDB提取数据的一部分而被调用,但我找不到自己调用它的方法。

装饰

我有类似的情况,我使用了以下方法:

from boto3.dynamodb.types import TypeDeserializer

deser = TypeDeserializer()

...
<in handler>
    for record in event['Records']:
        old = record['dynamodb'].get('OldImage')
        new = record['dynamodb'].get('NewImage')
        if old:
            d = {}
            for key in old:
                d[key] = deser.deserialize(old[key])

这种方法对我有用。结果字典d包含转换后的对象,而不是传递给处理程序的有线格式版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用boto3从DynamoDB检索所有项目?

如何使用 Django、Python(可能还有 Javascript)手动重新排序对象列表?

将Javascript对象转换为手动功能

如何在没有手动转换为JSON的情况下使用Jersey客户端发布Pojo?

使用Spring Data Rest手动将JSON转换为对象

如何手动转换为大写?(Javascript)

AWS SQS Boto3手动将消息发送为死信

使用onnx,如何将pytorch模型手动转换为张量流模型?

Boto3和Python3:无法将“字节”对象隐式转换为str

Pine Script:如何在图表上手动绘制所有线条

如何在不使用 json_decode($object, true) 函数的情况下手动将对象转换为数组?

如何手动使用Azure表类对象的列名?

如何使用boto3删除dynamodb中的所有项目

如何使用serverless.yml创建dynamodb表并使用python boto3删除其中的项目?

将异步调用转换为RxJava,在处理完所有项目后如何手动完成?

如何使用 Boto3 for DynamoDB 修复“NoCredentialsError”

如何使用python boto3更新AWS S3中现有对象的元数据?

手动安装pyOpenSSL和boto3?由于缺少依赖项,拖放不起作用

如何在Python中将boto3 Dynamo DB项目转换为常规词典?

如何使用二进制补码手动将十六进制转换为十进制

如何使用AutoMapper手动映射DTO而没有?

有没有办法使用 ggpubr 手动添加误差线?

如何使用python申请循环避免手动重复

如何使用Python手动实现指数平滑?

如何手动将带有字符的刻度线添加到直方图中?

如何使用带有boto3库的Version从s3获取对象?

如何使用forEach在HTML标记内显示所有对象的值,而不是手动遍历所有值

如何在没有`foreach`和没有`for`的情况下使用PHP手动迭代数组/对象

使用Boto3的DynamoDB分页