如何通过Lambda测试事件传递事件替代Event Bridge转换器?解决JSON加载报错
Lambda测试事件JSON格式问题排查与解决
问题背景
我们通过Lambda函数实现定时任务,用于统计并导出多张表的数据。通常通过Event Bridge的转换器将时间戳和表名传递给Lambda函数。当需要针对特定表排查故障时,希望通过Lambda测试事件手动运行函数,将测试事件设置为与Event Bridge转换器生成的Payload一致,但执行json.loads(event)时报错(定时任务通过转换器执行正常)。
测试事件配置
{ "time": "2023-03-26T02:05:00Z", "table": "T_Test" }
Lambda代码
import os import sys import json from datetime import datetime, date, timedelta def lambda_handler(event, context): print('event: ', event) payload = json.loads(event) dateFormatter = "%Y-%m-%dT%H:%M:%S%z" time = payload['time'] table = payload['table'] tables = table.split(',') for table in tables: print(table) ..
错误信息
[ERROR] TypeError: the JSON object must be str, bytes or bytearray, not dict
疑问
我们知晓测试事件JSON存在问题,但不确定原因。请问能否仅修改测试事件而非Lambda代码来解决该错误?
已验证解决方案
修改测试事件为如下格式后执行正常:
"{ \"time\": \"2023-03-26T02:05:00Z\" , \"table\": \"T_Test\" }"
内容的提问来源于stack exchange,提问作者Sachiko
相关产品推荐
相关产品推荐

