如果在API Gateway中使用"Lambda Proxy Integration"(同样适用和这里),会发生两个重要的变化:
1)数据被映射到
2)
以下是一个简单的Lambda函数示例,它期望输入符合来自API Gateway的Lambda代理集成(node10x)-
测试输入直接作为
有没有更好的技术可以将“测试”输入数据发送到 Lambda 函数中? 除非我漏掉了什么,否则似乎你需要获得更好的解决方案或手工制作测试输入来“匹配”从带有 Lambda 代理集成的 API Gateway 调用的预期有效负载。
1)数据被映射到
event.body
(而不是直接映射到event
对象需要映射模板)2)
event.body
被字符串化,并且需要JSON.parse解析以下是一个简单的Lambda函数示例,它期望输入符合来自API Gateway的Lambda代理集成(node10x)-
exports.handler = async (event, context) => {
if (event && event.body) {
try {
event.body = JSON.parse(event.body);
} catch(e) {
return {
statusCode: 200,
body: JSON.stringify({message: 'Hit error in try/catch'})
}
}
}
return {
statusCode: 200,
body: JSON.stringify({message: event})
}
}
问:如何(或者应该)使用Lambda的“内置”测试输入功能来测试一个期望按照Lambda代理集成方式处理数据的Lambda脚本?测试输入直接作为
event
对象中的数据(而不是event.body
),并且测试负载的数据没有进行字符串化。
如果函数期望的是 event.body
,我们可以将其传递给测试,但是需要对 event.body 进行字符串化。我们可以默默地跳过 try/catch,但这似乎有点笨拙。有没有更好的技术可以将“测试”输入数据发送到 Lambda 函数中? 除非我漏掉了什么,否则似乎你需要获得更好的解决方案或手工制作测试输入来“匹配”从带有 Lambda 代理集成的 API Gateway 调用的预期有效负载。