我从 ASK 开发开始。我对某些行为有点困惑,我想知道如何从“服务模拟器”控制台调试错误。我怎样才能获得更多关于The remote endpoint could not be called, or the response it returned was invalid.
errors?
这是我的情况:
我有一项技能和三个 Lambda 函数(ARN:A、ARN:B、ARN:C)。如果我将技能的端点设置为 ARN:A 并尝试从技能的服务模拟器中测试它,我会收到错误响应:The remote endpoint could not be called, or the response it returned was invalid.
我复制 lambda 请求,前往 ARN:A 的 lambda 控制台,将测试设置为均匀,粘贴来自服务模拟器的请求,对其进行测试并得到完美的 ASK 响应。然后,我前往 ARN:B 的 lambda 控制台,并创建一个虚拟处理程序,该处理程序返回与 ARN:A 从控制台给我的响应完全相同的响应(字面意义上的复制和粘贴)。我将技能的端点设置为 ARN:B,使用服务模拟器对其进行测试,并得到预期的响应(因此,响应格式良好),尽管是静态的。我再次前往 lambda 控制台,将代码从 ARN:A 复制并粘贴到新的 ARN:C 中。将技能的端点设置为 ARN:C,它就可以正常工作。 ARN:C 的问题在于它没有适当的权限将数据保存到 DynamoDB 中(我仍在熟悉该系统,不确定是否可以在不同的 lambda 之间共享 IAM 角色,我相信不能)。
我怎样才能知道 ARN:A 发生了什么?是否记录在某处?我在 cloudwatch/logs 中找不到与此特定 lambda 或该技能相关的任何条目。
不确定是否相关,我使用 python 作为 lambda 运行时,代码(目前)内联在 Web 编辑器上,并且我使用 boto3 来持久保存到 DynamoDB。
tl;dr: The remote endpoint could not be called, or the response it returned was invalid.
也意味着等待端点可能超时。
我能够将范围缩小到超时。
似乎 Alexa 服务模拟器(以及 Alexa 本身)对长响应的容忍度不如 lambda 测试控制台。在开发过程中,我将 ARN:1 的超时时间增加到 30 秒(而我认为默认值为 3 秒)。 ARN:1 使用的 DynamoDB 表具有更多数据,并且处理时间比 ARN:3 稍长,后者的表几乎为空。当我注释掉一些数据加载内容后,它的运行速度稍微快了一些,并且 Alexa 服务模拟器又开始工作了。我找不到任何地方记录的时间预算,我猜是 3 秒?我很可能需要转移到另一个后端,Lambda 上的 DynamoDB+Python 对于非常琐碎的请求来说太慢了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)