API 网关和 Lambda:异步调用

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

我有一个 REST API 网关,它从客户端接收 POST 并将该 POST 传递给 Lambda,添加为异步调用。但是,我希望网关在 lambda 处理之前返回到客户端。现在,我从 Lambda 代码中收到错误,因此网关正在等待 Lambda 完成。

从客户端发布到网关:

payload = {
    'token': 'aa',
    'challenge': 'bb',
    'type': 'url_verification'
}

从网关发布到 lambda

{'body': 
    {'token': 'aa', 
    'challenge': 'bb', 
    'type': 'url_verification'}, 
'X-Amz-Invocation-Type': 'Event'}

从网关返回客户端

Status Code: 200
 Response Text: {"errorMessage": "the JSON object must be str, bytes or bytearray, not     dict", "errorType": "TypeError"... 

基本上这个错误来自 lambda 函数中的 main.py 代码。但对于客户端来说这并不重要,我只想让客户端知道网关收到了消息并调用了 lambda。

amazon-web-services rest aws-lambda aws-api-gateway
1个回答
0
投票

在这种情况下,将 Lambda 直接放在 API 网关后面可能不是一个好的选择。最好在 API 网关和 Lambda 之间设置 SQS,以确保 API 的使用者不会受到影响。

enter image description here

如果消息在失败时需要重放,可以在系统内部完成,无需请求客户端再次发送消息。

© www.soinside.com 2019 - 2024. All rights reserved.