如何在AppSync流水线中让Lambda返回值?
问题解决:AppSync流水线中Lambda解析器返回空响应错误
问题根源
你的Lambda采用async函数作为handler,但同时混用了callback回调和return语句,这会导致AppSync无法正确接收响应。Async函数默认返回Promise,而callback是传统回调式处理逻辑,两者混用会引发执行流程冲突,最终返回的响应不符合流水线解析器的格式要求,触发“Template transformation yielded an empty response”错误。
修正方案
移除callback相关代码,仅使用return返回结果,这是async函数的标准用法:
exports.handler = async (event, context) => { // 执行你的业务逻辑生成myValue return myValue; };
如果需要处理异常,使用try/catch抛出错误(AppSync会自动将其转为标准GraphQL错误):
exports.handler = async (event, context) => { try { // 业务逻辑处理 const myValue = /* 生成你的结果 */; return myValue; } catch (err) { throw new Error(err.message); } };
额外注意事项
- 确保返回的
myValue结构与你AppSync流水线的映射模板匹配,比如如果模板期望读取data字段,需返回类似{ data: { /* 结果内容 */ } }的结构,避免因格式不匹配导致解析失败。 - 测试时不要直接返回空对象
{},应返回符合模板预期的最小结构,比如{ data: {} },确保流水线能正确解析响应。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

