使用步骤函数出现错误 AWS lambda 函数超时

问题描述 投票:0回答:1

我收到超时错误,因为需要将 dynamodb 表迁移到新表。旧表中有很多项目。因此,我使用lastevaluatedkey进行分页读取操作,但lambda函数存活15分钟。因此,我创建了一个阶跃函数,如下所示:

{
  "Comment": "DynamoDB Scan Workflow",
  "StartAt": "ScanDynamoDB",
  "States": {
    "ScanDynamoDB": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:**********:function:dynamo-table-migrator",
      "Next": "IsScanComplete"
    },
    "IsScanComplete": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.LastEvaluatedKey",
          "IsPresent": true,
          "Next": "ScanDynamoDB"
        }
      ],
      "Default": "Done"
    },
    "Done": {
      "Type": "Succeed"
    }
  }
}

我的 lambda 函数的超时时间是 10 分钟。我将其从 30 秒增加到实际上迁移了几乎一半的表,但随后又出现错误。错误:

The cause could not be determined because Lambda did not return an error type. Returned payload: {"errorMessage":"2024-01-10T06:55:49.427Z 4730971c-c428-4692-aa23-4486932da4f2 Task timed out after 600.18 seconds"}
amazon-web-services aws-lambda aws-step-functions
1个回答
0
投票

我希望这是一次迁移表的过程:我的意思是对你来说这不是一项平常的任务。

只需检查一次是否可以改进流程:

  • 您是否在同一个 lambda 调用中从两个表中读取和写入数据。
  • 只需检查您是否已经可以读取和准备数据。

快捷方式:

如果数据量不是非常非常大..

  • 您可以将数据导出到文件。
  • 使用您的代码准备新数据。
  • 将新数据文件上传到 S3,因为 Dynamo 喜欢用它来导入数据
  • 直接从此S3文件加载数据

其他方式:

  • 您可以将数据导出到文件。
  • 使用您的代码准备新数据并将其存储在 Dynamo 中,就像您已经在做的那样。
© www.soinside.com 2019 - 2024. All rights reserved.