【问题标题】:AWS Lambda and Gateway API Integration, returns status code 500AWS Lambda 和网关 API 集成,返回状态码 500
【发布时间】:2017-04-27 12:23:53
【问题描述】:

首先,我是整个 AWS 本身的新手。我正在尝试使用 AWS lambda 和 API Gateway 解决问题。

  1. 我创建了一个 python lambda 函数。它需要一些数据并根据某些条件返回string。如下所示:
def lambda_function(event, context):
    if event['some_property']:
        return "SUCCESS: Operation performed successfully."
    else
        return "ERROR: Operation failed."
  1. 在触发器下,我设置了一个网关API。

  2. 在创建资源的 API 网关服务中,集成请求被配置为传递给 lambda 函数。我已经测试了 lambda 函数,它可以正确返回值。

  3. 但是如果我 curl API 发出一个 post 请求,它会返回一个服务器错误。消息是这样的。

{“消息”:“内部服务器错误”}

  1. 我试着到处玩。如果我从函数返回一个空 json 并创建一个内容类型为 application/json 的正文映射模板并为其使用空模型模板,那么它工作正常。

我想,我在集成响应部分遗漏了一些东西。如果操作成功执行,我想要的是返回一个200 状态码以及成功消息。

【问题讨论】:

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


    【解决方案1】:

    您需要在执行 Lambda 函数后传递statusCode。如果您不通过它,API 网关将默认触发502 Bad Gateway

    message = {
       'message': 'Execution started successfully!'
    }
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': json.dumps(message)
    }
    

    【讨论】:

      【解决方案2】:

      我首先建议使用“代理”Lambda 集成。它更容易配置和使用。这是http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.htmlhttp://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html 的文档

      但听起来您没有正确映射响应。很难从您的描述中说出问题所在,但您可以使用示例“Petstore API”来查看响应应该是什么样子。这可能会有所帮助。您可以在“创建 API”屏幕中看到该选项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 2020-09-30
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多