繁体   English   中英

无法让 aws lambda/DynamoDB api 工作

[英]Can’t get aws lambda/DynamoDB api to work

这是我第一次尝试 Aws dynamoDB 和 Lambda node.js。 我在这里遵循了 aws 文档的确切说明: https ://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-dynamo-db.html#http-api-dynamo-db-attach-integrations

这是我使用的函数代码,来自文档的第 10 步

const AWS = require("aws-sdk");

const dynamo = new AWS.DynamoDB.DocumentClient();

exports.handler = async (event, context) => {
  let body;
  let statusCode = 200;
  const headers = {
    "Content-Type": "application/json"
  };

  try {
    switch (event.routeKey) {
      case "DELETE /items/{id}":
        await dynamo
          .delete({
            TableName: "http-crud-tutorial-items",
            Key: {
              id: event.pathParameters.id
            }
          })
          .promise();
        body = `Deleted item ${event.pathParameters.id}`;
        break;
      case "GET /items/{id}":
        body = await dynamo
          .get({
            TableName: "http-crud-tutorial-items",
            Key: {
              id: event.pathParameters.id
            }
          })
          .promise();
        break;
      case "GET /items":
        body = await dynamo.scan({ TableName: "http-crud-tutorial-items" }).promise();
        break;
      case "PUT /items":
        let requestJSON = JSON.parse(event.body);
        await dynamo
          .put({
            TableName: "http-crud-tutorial-items",
            Item: {
              id: requestJSON.id,
              price: requestJSON.price,
              name: requestJSON.name
            }
          })
          .promise();
        body = `Put item ${requestJSON.id}`;
        break;
      default:
        throw new Error(`Unsupported route: "${event.routeKey}"`);
    }
  } catch (err) {
    statusCode = 400;
    body = err.message;
  } finally {
    body = JSON.stringify(body);
  }

  return {
    statusCode,
    body,
    headers
  };
};

但是每次我按照文档中的结构尝试 API 时,我都会收到“内部服务器错误”。 我在两个终端和邮递员那里都试过了,同样的错误。 我在其他地方找不到任何有用的链接来解决这个问题。 有什么我需要做的不同吗?

Lambda 向 APIGW 返回 500 异常的原因有很多,例如:

https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-lambda-stage-variable-500/

https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-internal-server-error/

我的建议是剥离您的功能代码,只返回对 APIGW 的响应,没有其他逻辑并进行测试。 然后你可以决定从那里向前或向后工作。

暂无
暂无

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

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