亚马逊Lex在Lambda Fullfilment上展示30秒后

时间:2017-11-25 20:43:08

标签: node.js aws-lambda amazon-lex

我有一个lambda函数,它通过web服务绑定到一些外部自动化。任务完成大约需要45秒。

我已经将lambda调用的时间限制更新为2分钟,当我测试它时工作正常。

但是,当我在Amazon Lex中使用文本bot时,我收到以下消息:

发生错误:无效的Bot配置:Lambda请求未在允许的时间(30秒)内完成。

任何人都知道如何增加Lex Bot配置以使我的lambda脚本至少持续1分钟?

由于

2 个答案:

答案 0 :(得分:1)

目前无法修改此限制,因为已定义AWS Lex会抛出424 - DependencyFailedException如果:

  

其中一个依赖项(例如AWS Lambda或Amazon Polly)引发了异常。例如,

     
      
  • 如果Amazon Lex没有足够的权限来调用Lambda函数。
  •   
  • 如果Lambda函数执行时间超过30秒。
  •   
  • 如果履行Lambda函数返回代理对话框操作而不删除任何插槽值。
  •   

来源:AWS Lex docs.

答案 1 :(得分:1)

你能详细说明你想在这里实现的目标吗?从哲学上讲,机器人应该是响应式的,因此Lex可以理解为lambda调用设置了这样的时间限制。我建议以最终用户探测机器人进行更新的方式对机器人进行建模(这就像从ned用户轮询来查看此处的响应)。在lambda中,请求处理应该异步发生。例如,当lambda收到请求时:

  • 您可以为请求创建一个UUID并异步处理请求(将请求放在另一个lambda选择并处理类似的SQS上)。
  • 将UUID返回给最终用户,说“是请求ID。请检查此作业的状态几秒钟。”。
  • 最终用户将继续检查请求的结果,说“最新状态”。对于这样和话语,你可以有另一个意图触发lambda来检查响应。同时,在步骤1中执行的处理的响应可以被发布到S3或者放入数据库中(使用UUID作为该数据的标识符)。这个当前的lambda可以探测S3或数据库以获得结果并返回它。