首页 > 解决方案 > 使用 API Gateway 依次调用 1 个 AWS Lambda

问题描述

我知道有一个标题相同的问题,但我的问题有点不同:我有一个 Lambda API - saveInputAPI() 来将值保存到指定的字段中。用户可以使用不同的参数调用此 API,例如:

saveInput({"adressType",1}); //adressType is a DB field.

或者

saveInput({"name","test"})  //name is a DB field.

当然,这个托管在 AWS 上,所以我也使用 API Gateway。但问题是有时会发生这样的错误:

在此处输入图像描述

如你看到的。第 19 号 API 先被调用,但后来完成

 (10:10:16:828) -> (10:10:18:060) 

虽然 API No.18 稍后被调用但完成得更快......

 (10:10:17:611) -> (10:10:17:861)

这导致我的项目出现很多问题。有时,2 个 API 之间的延迟长达 10 秒。前端项目独立运行,因此用户不知道后面发生了什么。他们认为他们已经将 addressType 设置为 1,但实际上,addressType 仍然是 2。由于这个项目很大,我无法更改这种 [仅使用 1 个 API 更新 DB 值] 的设计。我有什么办法可以解决这个问题吗??真的很感激任何想法。谢谢

标签: aws-lambdaaws-api-gatewaysequential

解决方案


如果上次更新的时间戳比源事件时间戳更新,则无法跳过对数据库的更新,我们需要将 Api Gateway 和 Lambda 解耦。

  • Api Gateway 写入SQS FIFO Queue
  • Lambda 使用 SQS 并处理请求。

这将确保首先处理较旧的事件。


推荐阅读