在 Alexa Skill 中为 AWS lambda 函数调试 "read time out"

Debugging "read time out" for AWS lambda function in Alexa Skill

我正在使用 AWS lambda 函数为我的 Alexa Skill 的 NodeJS 代码库提供服务。

该技能对自定义 API 以及 Amazon GameOn API 进行外部 API 调用,它还使用 URL 提供音频文件和来自 S3 存储桶的图像。

我遇到的问题是间歇性的,影响了大约 20% 的用户。在技​​能的随机点,用户请求将产生来自技能的无效响应,并出现以下错误:

{
"Request": {
    "type": "System.ExceptionEncountered",
    "requestId": "amzn1.echo-api.request.ab35c3f1-b8e6-4478-945c-16f644359556",
    "timestamp": "2020-05-16T19:54:24Z",
    "locale": "en-US",
    "error": {
        "type": "INVALID_RESPONSE",
        "message": "Read timed out for requestId amzn1.echo-api.request.323b1fbb-b4e8-4cdf-8f31-30c9b67e4a5d"
    },
    "cause": {
        "requestId": "amzn1.echo-api.request.323b1fbb-b4e8-4cdf-8f31-30c9b67e4a5d"
    }
},

我已经查过这个问题,我认为是 lambda 函数配置有问题,但不知道在哪里!

我试过增加函数使用的内存(现在是 256MB)。

请注意,函数超时为 8000 毫秒,因为这是允许您进行 Alexa 响应的最长时间。

读取超时的原因是什么,有什么办法可以调试解决?

看看AWS XRay。通过将其与您的 Lambda 一起使用,您应该能够识别这些超时的来源。

这篇 link 应该可以帮助您了解如何应用它。

我们发现当技能试图访问存储在我们的 Azure 网站上的资源时会发生这种情况。

天蓝色站点CPU和内存分配太低,面对大量请求时会失败。

为了解决这个问题,我们改进了 运行 应用服务的计划。