Amazon Lex调用Lambda时返回无效响应问题排查求助
Lex对接Lambda报错排查方案
- 优先校验Lambda返回格式:Lambda本地测试时不会校验返回结构是否符合Lex规范,但对接时必须严格匹配你所用的Lex版本(V1/V2)的响应要求,比如必须包含
dialogAction字段、响应内容的contentType配置正确,字段缺失、结构层级错误都会直接触发Lex侧报错 - 检查Lex调用Lambda的权限:需要确认Lambda的资源策略中已允许Lex服务发起调用,可在Lambda控制台的「配置-权限-资源策略」页面查看是否存在
lex.amazonaws.com的调用授权,无授权可通过aws lambda add-permission命令手动添加 - 适配Lex入参结构:Lex触发Lambda时传入的事件结构和你本地测试用的自定义事件大概率存在差异,比如槽位值的存储位置、会话属性的字段命名不同,你可以在Lambda代码开头增加完整入参打印逻辑,将Lex触发时的入参输出到CloudWatch日志,和测试用事件对比,确认代码的字段读取逻辑适配Lex入参结构
- 调整Lambda运行配置:如果Lambda配置的内存过低、超时时间过短,本地测试无额外链路延迟可正常运行,对接Lex后链路耗时增加就可能触发超时,可先将Lambda超时时间调整到10秒以上、内存调整到256M以上复测
- 校验返回内容编码:若返回内容包含特殊字符、非UTF-8编码内容,会导致Lex解析失败,可先将返回内容替换为最简单的纯文本内容测试是否能正常返回
内容的提问来源于stack exchange,提问作者sas
相关产品推荐
相关产品推荐

