gpt4 book ai didi

python - 如何使用 boto3 手动从 DynamoDB 有线协议(protocol)转换为 native Python 对象?

转载 作者:太空狗 更新时间:2023-10-29 20:39:27 28 4
gpt4 key购买 nike

我有一个由 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 包含转换后的对象,而不是传递给处理程序的有线格式版本。

关于python - 如何使用 boto3 手动从 DynamoDB 有线协议(protocol)转换为 native Python 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36558646/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com