AppSync调用Python Lambda返回null值问题求助
解决AppSync调用Python Lambda返回null的问题
核心原因
你的Python Lambda函数错误地将结果序列化为JSON字符串返回,而AppSync期望接收原生的Python字典对象(未序列化的JSON结构)。当AppSync接收到字符串时,会将其视为单一值,无法解析出schema定义的premise_id和definitions字段,因此返回null。
修复代码
修改Lambda的handler函数,直接返回字典对象,不要使用json.dumps()序列化:
import json def handler(event, context): # 直接返回字典,无需序列化 return get_definitions() def get_definitions(): return { "premise_id":"123456", "definitions": [ { "object_id": "123456", "definition": "ABC" }, { "object_id": "7891011", "definition": "DEF" } ] }
额外验证项
- 字段名一致性:确认Lambda返回的字典字段名(
premise_id、definitions等)与schema中的定义完全匹配(大小写、下划线都要对应),你的当前代码这部分是正确的。 - Resolver映射模板:检查AppSync中
getDefinitions查询对应的Resolver响应模板,确保逻辑正确。Lambda数据源的默认响应模板通常为$util.toJson($context.result),如果自定义了模板,需保证它能正确提取Lambda返回的结果。 - 权限配置:确认AppSync拥有调用该Lambda的权限,避免因权限问题导致结果解析异常(不过此问题一般会触发调用失败,而非返回null)。
内容的提问来源于stack exchange,提问作者berimbolo
相关产品推荐
相关产品推荐

