DynamoDB 项目没有在 lambda 的第一个请求中插入需要发出 4-5 个请求

DynamoDB items are not getting inserted at first request from lambda need to make 4-5 requests

我有一个 DynamoDB table 和一个 本地二级索引 (LSI)。当我尝试从本地机器插入新项目时,它会插入到第一个请求中,但是当我将相同的代码部署到 AWS lambda 时,它需要 4-5 个请求,然后插入新记录。我为 table 保留了 自动缩放 是否影响它..?

插入记录的代码

async function addLogstoDynamoDB(body, tries = 1) {
  var params = {
    TableName: config.tableName,
    Item: {
      start: body.timestamp,      //Local secondary index
      number: "+" + body.cli,     //Primary key
      id: "CON-" + body.callid,   //Sort key
    },
  };

  let result = await DynamoDB.insertRecord(params);
  if (result.error !== null && tries < 3) {
    console.log(result.error);
    tries++;
    addLogstoDynamoDB(body, tries);
  }
}

DynamoDB.insertRecord() 代码

static insertRecord(params) {
    return new Promise((resolve) => {
      dynamoDB.put(params, function (error, data) {
        resolve({ error, data });
      });
    });
  }

您应该调用 await dynamoDB.put(params).promise() 而不是 await DynamoDB.insertRecord(params);。您无需将其包装到额外的函数中。

lambda 在从主导出函数返回响应后中止后台进程 运行,因此这是导致问题的原因。我的主要 lambda 函数在将记录添加到 DynamoDB 之前返回响应