簡體   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