Alexa触发Lambda故障排查:转换托管技能后仍用旧index.js
问题原因与解决方法
原因分析
- 当你将技能转换为Alexa托管技能后,技能的后端执行环境会自动切换为Alexa托管的Lambda实例,而非你在AWS控制台自行创建的独立Lambda函数。此时你之前配置的自定义Lambda ARN会被系统覆盖,技能不再调用外部的Lambda。
- 代码标签页变为只读,是因为Alexa托管技能的代码由Alexa平台统一管理,默认不允许直接在控制台编辑器中修改(需通过特定方式更新)。测试时加载原
index.js,是因为转换托管技能时,系统会自动迁移原技能的代码到托管环境中,所以默认执行的是迁移后的本地代码副本。
解决方法
方案1:切换回自定义Lambda后端(继续使用自己的外部Lambda)
- 进入Alexa开发者控制台的技能页面,切换到「构建」标签下的**端点(Endpoints)**选项
- 找到「Alexa托管技能」配置区域,选择「切换到自定义HTTPS或Lambda端点」
- 重新配置你自己的Lambda函数ARN,同时确保该Lambda已添加Alexa的触发权限(在Lambda控制台的「触发器」中添加Alexa Skills Kit,关联你的技能ID)
方案2:保留Alexa托管技能,同步新代码到托管环境
如果你想继续使用Alexa托管技能,需要将外部Lambda中的新代码迁移到托管环境:
- 复制外部Lambda里的新
index.js代码内容 - 在Alexa开发者控制台的「代码」标签页,点击右上角的「编辑」按钮(若未显示,可尝试刷新页面),将复制的代码替换掉当前的
index.js内容 - 点击「部署」按钮,等待部署完成后再测试技能
内容的提问来源于stack exchange,提问作者raklorap
相关产品推荐
相关产品推荐

