python - Amazon 的 Alexa Skill Kit (ASK) Lambda 交互故障排除

标签 python amazon-web-services amazon-dynamodb aws-lambda alexa-skills-kit

我开始进行 ASK 开发。我对某些行为有点困惑,我想知道如何从“服务模拟器”控制台调试错误。如何获取有关 The remote endpoint could not be called, or the response it returned was invalid. 错误的更多信息?

这是我的情况:

我有一项技能和三个 Lambda 函数(ARN:A、ARN:B、ARN:C)。如果我将技能的端点设置为 ARN:A 并尝试从技能的服务模拟器对其进行测试,我会收到错误响应:无法调用远程端点,或者它返回的响应无效。 我复制了 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 或技能相关的任何条目。

不确定是否相关,我在我的 lambda 运行时使用 python,代码(目前)在 Web 编辑器上内联,我使用 boto3 持久保存到 DynamoDB。

最佳答案

tl;dr: 无法调用远程端点,或者它返回的响应无效。 也意味着等待端点可能超时。

我能够将它缩小到超时。 似乎 Alexa 服务模拟器(以及 Alexa 本身)对长响应的容忍度低于 lambda 测试控制台。在开发过程中,我将 ARN:1 的超时时间增加到 30 秒(而我相信默认值为 3 秒)。 ARN:1 使用的 DynamoDB 表有更多数据,处理时间比 ARN:3 几乎是空表的处理时间稍长。一旦我注释掉一些数据加载内容,它就会运行得稍微快一些,并且 Alexa 服务模拟器再次运行。我在任何地方都找不到记录的时间预算,我猜是 3 秒?我很可能需要转移到另一个后端,lambda 上的 DynamoDB+Python 对于非常琐碎的请求来说太慢了。

关于python - Amazon 的 Alexa Skill Kit (ASK) Lambda 交互故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887061/

相关文章:

java - Eclipse AWS Explorer 无法看到使用 Java 创建的 Dynamodb 表

python : communication with c++ command line program not working when using <cstdio>

python - Python 多处理模块的 .join() 方法到底在做什么?

amazon-web-services - 如何使用 AWS CLI 从 S3 文件中删除特定标签

amazon-web-services - 在 AWS PHP 的上传功能中指定 Content-Type

c++ - AWS 开发工具包 C++ : putting an object in S3 with server side encryption

amazon-dynamodb - AppSync:嵌套类型解析器

java - 扫描 DynamoDB 中特定哈希的所有排序键

python - 如何使jpg图像半透明?

python - IronPython.dll - 使用哪一个?