在 AWS API Gateway 中测试 lambda

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

我像这样设置我的 lambda 函数:

我想部署在 api 上。当我将 api 设置为休息 api 时,我尝试测试它,如下所示:

我收到以下错误:

Request
/
Latency
43
Status
200
Response body
{"errorMessage": "'base'", "errorType": "KeyError", "requestId": "f2e47d2a-5662-422c-9b34-3d6fed8e0319", "stackTrace": ["  File \"/var/task/lambda_function.py\", line 10, in lambda_handler\n    mathResult = math.pow(int(event['base']), int(event['exponent']))\n"]}
Response headers
{
  "Access-Control-Allow-Origin": "*",
  "Content-Type": "application/json",
  "X-Amzn-Trace-Id": "Root=1-65992065-8da5d12e56efe91d47bbf28e;Sampled=0;lineage=63116542:0"
}
Log
Execution log for request 359c5a53-c10b-466e-9570-c3e6f4fb4d61
Sat Jan 06 09:41:57 UTC 2024 : Starting execution for request: 359c5a53-c10b-466e-9570-c3e6f4fb4d61
Sat Jan 06 09:41:57 UTC 2024 : HTTP Method: POST, Resource Path: /
Sat Jan 06 09:41:57 UTC 2024 : Method request path: {}
Sat Jan 06 09:41:57 UTC 2024 : Method request query string: {}
Sat Jan 06 09:41:57 UTC 2024 : Method request headers: {}
Sat Jan 06 09:41:57 UTC 2024 : Method request body before transformations: {
    "Base": 2,
    "Exponent": 3
}

有人知道如何正确测试吗?我需要在我的请求中添加其他内容吗?

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

我可以在这里看到一些问题。一,正如 Frosty 在他们的评论中指出的那样,您正在传递大写字母,但正在寻找小写字母。第二个问题是,您需要将事件对象的“主体”部分转换为字典,然后才能访问字段。第三,您没有将有效的 json 字符串传递给“json.dumps()”。

您可以查看此页面,了解从 API GW 发送到您的 Lambda 函数的事件对象的格式。

代码段看起来像这样:

body = json.loads(event.body)
mathResult = math.pow(body['base'], body['exponent'])

return {
  "statusCode": 200,
  "body": 'Your result is ' + str(mathResult)
}

注意我假设消息正文将发送为:

{"base": 2, "exponent": 3}

换句话说,按键将全部为小写字母。

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