2017-11-25 285 views
0

我有一个lambda函数,它通过webservice绑定到一些外部自动化。大约需要45秒才能完成任务。亚马逊Lex在Lambda Fullfilment中以30秒的时间排出

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

然而,当我使用的文字机器人在亚马逊莱克斯我得到以下信息:发生

错误:无效博特配置:LAMBDA请求不容许的时间(30秒)内完成。

任何人都知道如何增加Lex Bot配置让我的lambda脚本长达至少1分钟?因为它是定义AWS莱克斯将抛出

感谢

回答

1

目前这个限制不能被修改的424 - DependencyFailedException如果:

其中的相关性,比如AWS LAMBDA或亚马逊波利,抛出一个例外。例如,

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

来源:AWS Lex docs.

0

你能更多地讨论你正试图在这里实现什么?从逻辑上讲,机器人应该是有回应性的,因此Lex可以理解,在lambda调用中放置这样一个时间限制。我建议以最终用户探测僵尸程序进行更新的方式建立机器人模型(这类似于来自ned用户的针对此处查看的响应的轮询)。在lambda中,请求处理应该异步发生。例如,当拉姆达得到一个请求,那么:

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