Использование aws-sdk внутри лямбды?(AWS.ApiGatewayManagementApi не является конструктором в Response) - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь использовать 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
      });
    }
  });
};

Это то, что я объявил в лямбда-функции, но это дает мне ошибку «AWS.ApiGatewayManagementApi не является конструктором в Response».на облаке смотреть.

Я что-то пропустил?Как, например, включение aws-sdk в саму лямбда-функцию?

Редактировать: обновлен для отображения всей лямбда-функции

Ответы [ 3 ]

0 голосов
/ 29 марта 2019

Я только что столкнулся с тем же сообщением об ошибке, однако моя проблема заключалась в том, что в моем шаблоне SAM я неправильно определил область действия Lambda CodeUri и, следовательно, папка node_modules не была развернута вместе с лямбдой.

У меня была лямбдакод в подкаталоге моего проекта.

Это было мое НЕПРАВИЛЬНОЕ определение:

  GetUserFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.getHandler
      Timeout: 30
      Runtime: nodejs8.10
      CodeUri: ./user

Изменение его на исправленное:

  GetUserFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.getHandler
      Timeout: 30
      Runtime: user/nodejs8.10
      CodeUri: ./
0 голосов
/ 12 июля 2019

Начиная с 15 мая 2019 вы можете запускать Lambda как узел версии 10.x , а ApiGatewayManagementApi включен в aws-sdk по умолчанию.

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

0 голосов
/ 21 февраля 2019

Для тех, у кого такая же проблема, как и у меня

Похоже, что версия «aws-sdk», доступная в лямбда-исполнении, - 2.29. ApiGatewayManagementApi добавлена ​​в 2.379

. Поэтомуон не может вызвать конструктор.

Чтобы решить эту проблему, я создал слой с aws-sdk и добавил этот слой в лямбда-функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...