node.js - 通过 Node AWS SDK 的 lambda.invoke 调用在 5 分钟时超时,而 Lambda 在 4 分钟内完成
问题描述
我有一个设置为 5 分钟超时的 Lambda 函数,有时当我使用node
SDK 调用该函数时,我会在 5 分钟后收到超时错误。
但是,当我在收到客户端错误后检查 CloudWatch 日志时,我看到该功能在大约 3:30 分钟的执行时间后成功完成。
我还注意到客户端将在 CloudWatch 日志读取功能完成前 2 分钟记录超时(即,客户端错误时间戳为 4:08,CloudWatch 成功结束时间戳为 4:10),但我假设这是日志写入之间的延迟,而不是运行时间。以为我会提到它,以防万一这是值得更多思考的事情。
据我所知,当函数运行不到两分钟时,它总是得到积极的响应。
代码如下所示:
let aws_config = new AWS.Config({
region: 'us-east-1',
credentials: credentials,
httpOptions: {
proxy: process.env.HTTP_PROXY,
timeout: 300000
}
})
var lambda = new AWS.Lambda(aws_config);
lambda.invoke(params, (err, data: Result) => {
...
}
错误如下所示:
{ TimeoutError: Connection timed out after 300000ms
at ClientRequest.<anonymous> (.../node_modules/aws-sdk/lib/http/node.js:83:34)
at Object.onceWrapper (events.js:273:13)
at ClientRequest.emit (events.js:182:13)
at ClientRequest.EventEmitter.emit (domain.js:442:20)
at Socket.emitRequestTimeout (_http_client.js:661:40)
at Object.onceWrapper (events.js:273:13)
at Socket.emit (events.js:182:13)
at Socket.EventEmitter.emit (domain.js:442:20)
at Socket._onTimeout (net.js:449:8)
at ontimeout (timers.js:425:11)
message: 'Connection timed out after 300000ms',
code: 'TimeoutError',
time: 2018-10-05T20:08:35.719Z,
region: 'us-east-1',
hostname: 'lambda.us-east-1.amazonaws.com',
retryable: true } 'TimeoutError: Connection timed out after 300000ms\n at ClientRequest.<anonymous> (.../node_modules/aws-sdk/lib/http/node.js:83:34)\n at Object.onceWrapper (events.js:273:13)\n at ClientRequest.emit (events.js:182:13)\n at ClientRequest.EventEmitter.emit (domain.js:442:20)\n at Socket.emitRequestTimeout (_http_client.js:661:40)\n at Object.onceWrapper (events.js:273:13)\n at Socket.emit (events.js:182:13)\n at Socket.EventEmitter.emit (domain.js:442:20)\n at Socket._onTimeout (net.js:449:8)\n at ontimeout (timers.js:425:11)'
解决方案
推荐阅读
- terraform - Terraform 条件 - 如果变量不存在
- laravel - 如何在 Laravel 登录期间检查附加字段?
- symfony - 我的 Symfony 3.3 网站显示空白
- c# - 在其他类中计算后在静态 Main 中获得答案
- python - Python Socket编程改变服务器套接字
- python - Jupyter Notebooks 卡在 In[*]:
- python - Python - Pandas - 将格式为 2018-01-01 的日期列转换为时间戳的字符串版本
- mysql - 合并具有相同 prod_id 的 SQL 列和数据
- c# - 使用 SignalR 实现服务器端事件
- c# - 如何使用正则表达式检查一行是否包含精确的 3 个逗号