1

我正在尝试使用来自 NodeJS AWS Lambda 的aws-sdk ,其中 Lambda 在 AWS 上的 VPC 内运行。我发现当我在我的 Lambda 中进行 AWS API 调用然后执行 Lambda 时,它只是超时并显示“任务在 180.05 秒后超时”,我没有从 AWS API 调用返回结果。

如果没有 AWS API 调用,那么 Lambda 可以正常工作,当然没有任何 AWS API 结果。

为什么是这样?是不是 aws-api 试图呼叫互联网而这个 VPC Lambda 没有互联网连接?我该怎么做才能让它工作?

4

1 回答 1

0

似乎你的 lambda 函数在 180 秒后超时,所以你应该尝试使用 lambda 函数的最大超时限制,以前大约是 300 秒,但现在大约是15 分钟,是的,它是分钟而不是秒。这取决于您的要求,您想使用什么超时限制。

https://aws.amazon.com/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-c​​an-run-up-to-15-minutes/

要在 nodeJS 中配置超时限制,您可以尝试以下方式:

// maxRetries: retry count / timeout: socket timeout / connectTimeout: new connection timeout

var AWS = require('aws-sdk');

AWS.config.update({

    maxRetries: 2,

    httpOptions: {

        timeout: 30000,

        connectTimeout: 5000

    }

});

了解更多信息:

https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-retry-timeout-sdk/ https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html

于 2020-09-27T03:25:49.987 回答