首页 > 解决方案 > 我的 Lambda 抛出调用错误超时

问题描述

通常我的 lambda 运行良好,今天我开始收到此错误:

ERROR   Invoke Error    
{
    "errorType": "TimeoutError",
    "errorMessage": "Connection timed out after 120000ms",
    "code": "TimeoutError",
    "message": "Connection timed out after 120000ms",
    "time": "2020-11-27T10:34:39.272Z",
    "region": "eu-west-1",
    "hostname": "lambda.eu-west-1.amazonaws.com",
    "retryable": true,
    "stack": [
        "TimeoutError: Connection timed out after 120000ms",
        "    at ClientRequest.<anonymous> (/var/task/node_modules/aws-sdk/lib/http/node.js:83:34)",
        "    at Object.onceWrapper (events.js:286:20)",
        "    at ClientRequest.emit (events.js:198:13)",
        "    at ClientRequest.EventEmitter.emit (domain.js:448:20)",
        "    at TLSSocket.emitRequestTimeout (_http_client.js:673:40)",
        "    at Object.onceWrapper (events.js:286:20)",
        "    at TLSSocket.emit (events.js:198:13)",
        "    at TLSSocket.EventEmitter.emit (domain.js:448:20)",
        "    at TLSSocket.Socket._onTimeout (net.js:443:8)",
        "    at ontimeout (timers.js:436:11)"
    ]
}

我不知道是什么导致了这种情况,我知道这个 lambda 调用了几个 lambda 并等待它们全部结束,我检查了 cloudwatch 上的每个日志,并且所有这些都已成功完成。

这是我用来触发所有这些子 lambda 并等待它们的代码片段:

function invokeAll(){

const baseLambdaPayload = {
  arg1: args.myarg1,
  arg2: args.myarg2,
  arg3: args.myarg3,
  arg4: args.myarg4
};

lambdaInvocations = [
  ...lambdaInvocations,
  triggerLamdba(
    'lambda1', {
      ...baseLambdaPayload,
      morePayload: await getMorePayload()
    }),
  triggerLamdba(
    'lambda2', baseLambdaPayload),
  triggerLamdba(
    'lambda3', baseLambdaPayload),
  triggerLamdba(
    'lambda4', baseLambdaPayload)
];

return await Promise.all(lambdaInvocations);
}

const triggerLamdba = (name, payload) => {
  const params = {
    FunctionName: name,
    InvocationType: 'RequestResponse',
    Payload: JSON.stringify(payload)
  };

  return lambda.invoke(params).promise();
}

关于我应该研究的任何提示?谢谢。

标签: amazon-web-serviceslambdatimeoutinvoke

解决方案


推荐阅读