在Lambda中使用AWS-SDK?(AWS.ApiGatewayManagementApi不是Response的构造函数)

mut*_*ies 4 amazon-web-services aws-lambda aws-api-gateway

我试图在lambda中使用aws-sdk,但似乎无法弄清楚。

var AWS = require('aws-sdk');
AWS.config.update();
var DDB = new AWS.DynamoDB({ apiVersion: "2012-10-08" });


exports.handler = function (event, context, callback) {
  var url_handler = event.requestContext.domainName + "/" + event.requestContext.stage;


  var scanParams = {
    TableName: "tbl-web-socket-connection",
    ProjectionExpression: "id"
  };

  DDB.scan(scanParams, function (err, data) {
    console.log(err, "Error");
    if (err) {
      callback(null, {
        statusCode: 500,
        body: JSON.stringify(err)
      });
    } else {
      console.log(AWS, "AWSSS");
      var apigwManagementApi = new AWS.ApiGatewayManagementApi({
        apiVersion: "2018-11-29",
        endpoint: event.requestContext.domainName + "/" + event.requestContext.stage
      });
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

这就是我在lambda函数上喜欢的内容,但是它给了我错误“ AWS.ApiGatewayManagementApi不是Response的构造函数”。在云端观看。

我错过了什么?像在lambda函数本身上包含aws-sdk一样?

编辑:更新以显示整个lambda函数

mut*_*ies 5

对于那些和我有同样问题的人

看起来lambda执行中可用的“ aws-sdk”版本为2.29。ApiGatewayManagementApi已在2.379中添加

这就是为什么它不能调用构造函数的原因。

为了解决这个问题,我创建了一个带有aws-sdk的图层,并将其添加到lambda函数中。


rob*_*rus 1

2019 年 5 月 15 日起,您可以将 Lambda 作为节点版本 10.x运行,并且ApiGatewayManagementApi默认包含在 aws-sdk 中。

https://aws.amazon.com/about-aws/whats-new/2019/05/aws_lambda_adds_support_for_node_js_v10/