AWS LEX V2调用updateBotAlias时codeHookInterfaceVersion异常及$LATEST配置问题
问题原因与解决方案
1. codeHookInterfaceVersion报错原因
你这里混淆了两个完全不同的版本概念:
codeHookInterfaceVersion不是你自己Lambda函数的发布版本号,而是Lex V2与Lambda代码钩子之间的通信协议版本,目前Lex V2官方仅支持固定值1.0,你填的"1"不符合要求所以触发校验错误。
修改请求里对应的字段值即可:
"codeHookInterfaceVersion": "1.0"
2. 指定Lambda $LATEST版本的方法
要指向Lambda的$LATEST版本,只需要在lambdaARN字段末尾拼接版本后缀:$LATEST即可,示例如下:
"lambdaARN": "arn:aws:lambda:us-east-1:##########93:function:fulfill-lambda:$LATEST"
注意:生产环境不推荐使用$LATEST版本,建议发布固定Lambda版本并绑定Lex别名,避免Lambda更新后影响线上对话逻辑。
修正后的完整请求示例
{ "botAliasId": "TSTALIASID", "botAliasName": "TestBotAlias", "botId": "3UR9######", "botAliasLocaleSettings": { "en_US": { "enabled": true, "codeHookSpecification": { "lambdaCodeHook": { "lambdaARN": "arn:aws:lambda:us-east-1:##########93:function:fulfill-lambda:$LATEST", "codeHookInterfaceVersion": "1.0" } } } }, "description": "en_US (Alias)" }
额外校验点
如果修改后仍报错,可检查以下两项:
- 你使用的Lex V2服务角色,或者Lex本身的服务权限,是否有调用对应Lambda函数的权限,需要给Lambda添加允许
lexv2.amazonaws.com触发的资源策略。 - 确认你的Lambda函数所在区域和Lex Bot所在区域一致。
内容的提问来源于stack exchange,提问作者Bela Vizy
相关产品推荐
相关产品推荐

