我的问题如下。
我目前有一个在.NET中运行的系统。该系统呼叫服务大约需要1分钟。
我们目前正在将该解决方案迁移到AWS。我发现的问题是Lambda可以在1分钟内运行(因为它使调用另一个系统需要1分钟),并且一切正常。但是,当我从Gateway API进行调用时,您会感到不适。经过调查,我发现最大超时时间为29秒。
然后,考虑到我需要等待1分钟才能使用lambda函数,因此我需要知道该问题有什么解决方案。
我想到的是从API触发调用,然后运行lambda函数,然后从客户端创建一个池以查看事务的状态。但是我不知道如何将最初的调用保持在“内存中”,当我再次调用api来查看状态时,我知道我在谈论相同的请求,以获取结果数据
这里是解决此问题的一种方法的概述:
/start
API请求/status?id=UUID
API,从而触发Lambda#3[当/status?id=UUID
API调用指示长期任务已完成(或失败)时,客户端可以发出最终的API请求,以表明它具有与UUID相关联的结果,并且可以删除DynamoDB项,或者您可以仅在DynamoDB项上实现TTL。
此过程看起来很复杂,但实际上并非如此。
而不是客户端轮询后端的状态和结果,它可以替代地轮询SQS队列中的相同对象或订阅SNS主题。
以下是解决此问题的一种方法的概述:
/start
API请求>/status?id=UUID
API,从而触发Lambda#3[当/status?id=UUID
API调用指示长期任务已完成(或失败)时,客户端可以发出最终的API请求,以表明它具有与UUID相关联的结果,并且可以删除DynamoDB项,或者您可以仅在DynamoDB项上实现TTL。
此过程看起来很复杂,但实际上并非如此。
而不是客户端轮询后端的状态和结果,它可以交替轮询SQS队列中的相同对象或订阅SNS主题。