繁体   English   中英

AWS Lambda 中的异步调用

[英]Asynchronous call in AWS Lambda

实际上,我对 AWS Lambda 函数中的异步过程如何发生有点困惑。

Normally in a sync call, a request is made through the API Gateway which directly linked to the the Lambda function and waits for the Lambda function to return a response. 但是在异步中,通过 API 网关的请求可能最终进入 SQS 队列,并且成功放入队列的临时响应(可能需要也可能不需要取决于实现)返回给用户,而无需等待实际 Lambda function 响应返回给用户。 然后 Lambda function 将异步消费队列中的请求并返回响应。

问题是——这个响应 go 在哪里?

I know it will go to downstream resource like Lambda with a function url or EventBridge or another SQS queue, but what if there is no downstream resource? 整个事情只是一个 API 网关 + Lambda + SQS。

响应是否会立即从 API 网关返回? 由于他们不等待响应,用户将如何以这种方式捕获它? 或者如果他们这样做了,他们如何等待呢? 如果他们使用 typescript CDK,他们会调用类似 await 的东西吗?

这取决于你的反应是什么意思。 API 网关将收到来自 lambda 的请求已收到的响应(当称为异步时)。 但结果会根据您的配置在下游进行处理。 使用 Lambda 目的地,您可以进一步引导结果,但 API 网关无法获取您的结果。

如果您想作为调用客户端接收该结果,则必须使用 iE a websocket。 通常有意义的是使用一些存储优先模式并将 messageId 从 sqs 返回给调用者,并在 api 网关上注册路由以接收带有该 messageId 的结果。 对于更受管理的解决方案,您可以使用 AppSync

这是一个很好的解决方案资源: https://aws.amazon.com/blogs/compute/building-storage-first-applications-with-http-apis-service-integrations/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM