【问题标题】:Lambda Function working, but cannot work with API GatewayLambda 函数工作,但不能与 API 网关一起工作
【发布时间】:2020-12-13 13:00:51
【问题描述】:

当我使用测试事件对其进行测试时,我有一个有效的 Lambda 函数:

{
  "num1_in": 51.5,
  "num2_in": -0.097
}


import json
import Function_and_Data_List

#Parse out query string parameters
def lambda_handler(event, context):
    num1_in = event['num1_in']
    num2_in = event['num2_in']
    coord = {'num1': num1_in, 'num2': num2_in}
    output = func1(Function_and_Data_List.listdata, coord)
    return {
        "Output": output
    }

但是,当我使用 API 网关创建 REST API 时,我不断收到错误消息。我的 REST API 方法是: 1.) 构建 REST API 2.) 操作 -> 创建资源 3.) 动作 -> 创建方法 -> GET 4.) 集成类型为 Lambda 函数,使用 Lambda 代理集成 5.) 部署

让这个 API 工作我缺少什么?

【问题讨论】:

  • 您遇到什么错误?您是否拥有 API Gateway 调用 lambda 函数的必要权限?
  • @PubuduJayawardana 我是管理员 - 错误是 { "message": "Internal server error" } 转换前的端点响应正文:{"errorMessage": "'num1_in'", "errorType": "KeyError", "stackTrace": [["/var/task/lambda_function.py", 18, "lambda_handler", "num1_in = event['num1_in']"]]} 2020 年 8 月 24 日星期一 22:16:25 UTC :由于客户函数错误:“num1_in”,Lambda 执行失败,状态为 200。 Lambda 请求 id:XXXXXX Mon Aug 24 22:16:25 UTC 2020:方法完成,状态:502

标签: amazon-web-services api aws-lambda


【解决方案1】:

如果您使用lambda proxy integration,您的播放负载将位于body。你似乎也有错误的return format

因此,我建议您尝试以下版本的代码:

import json
import Function_and_Data_List

#Parse out query string parameters
def lambda_handler(event, context):

    print(event)

    body = json.loads(event['body'])

    num1_in = body['num1_in']
    num2_in = body['num2_in']

    coord = {'num1': num1_in, 'num2': num2_in}
    output = func1(Function_and_Data_List.listdata, coord)

    return {
        "statusCode": 200,
        "body": json.dumps(output)
    }

在上面我还添加了print(event),以便在 CloudWatch Logs 中检查 event 对象,这应该有助于调试问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2023-03-12
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多