繁体   English   中英

aws-serverless-lambda:“内部服务器错误”

[英]aws-serverless-lambda: “Internal server error”

我是无服务器 lambda function 的新手。 我使用 lambda 创建了一个帖子请求。 我将我的应用程序部署到AWS 我正在使用 Postman 测试我的应用程序。 我厌倦了我的发帖请求,我收到了internal server error. . 我还在 api-gateway 中进行了测试,我得到了这个错误:

Fri Mar 05 19:09:33 UTC 2021 : Endpoint response body before transformations: null
Fri Mar 05 19:09:33 UTC 2021 : Execution failed due to configuration error: Malformed Lambda proxy response
Fri Mar 05 19:09:33 UTC 2021 : Method completed with status: 502

我不明白我做错了什么。 这是我的 yaml 文件发布请求事件

  createBeers:
    handler: handlers/createBeers.createBeers
    events:
      - http:
          path: createBeers
          method: post
          cors: true

这是我的 lambda function

'use strict';
const AWS = require('aws-sdk');

const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports.createBeers = async event => {
  const requestBody = JSON.parse(event.body);
  const params = {
    TableName: "tablename",
    Item: {
      beer_name: requestBody.beer_name,
      beer_type: requestBody.beer_type,
      beer_img_url: requestBody.beer_img_url,
      beer_description: requestBody.beer_description,
      alcohol_per: requestBody.alcohol_per
    }
  };

  try {
    await dynamoDb.put(params).promise();
    return {
      statusCode: 200,
      body: JSON.stringify(requestBody),
    };
  } catch (error) {
    console.log(error);
  }
};

格式错误的 Lambda 代理响应

这听起来像您的 lambda 没有返回正确的响应。 一些故障排除建议:

  1. 打印出 lambda 中的请求正文,以说服自己 lambda 代码正在执行并且事件如您所料。
  2. 如果您的 lambda 失败,您不会返回响应。 尝试在你的 catch 块中返回一个错误
  try {
    await dynamoDb.put(params).promise();
    return {
      statusCode: 200,
      body: JSON.stringify(requestBody),
    };
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify(error),
    };
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM