AWS Lambda изо всех сил пытается заставить работать ListFunctions - PullRequest
0 голосов
/ 21 ноября 2018

Я изо всех сил пытаюсь получить любой ответ от ListFunctions, который не является нулевым.У меня есть 3 функции в одном регионе, и я довольно много играл с params и AWS.config.region.Я постоянно получаю нулевое значение в качестве возврата, и в журналах консоли я ничего не получаю обратно.Любая помощь будет принята с благодарностью!

let AWS = require('aws-sdk');
//AWS.config.region = 'ca-central-1';
let lambda = new AWS.Lambda({ "apiVersion": "2015-03-31" });

module.exports.handler = async (event, context) => {
  let params = {
    //MasterRegion: 'ALL',
    //FunctionVersion: 'ALL',
    MaxItems: 10
  };

  lambda.listFunctions(params, function(err,data) {
    if(err){
      console.log(err);
    }
    else {
      console.log(data);
    }
    context.done(null, "function finished");
  }
}

serverless.yml changes

provider:
  name: aws
  runtime: nodejs8.10
  profile: [PROFILE_NAME]
  region: [ca-central-1]
  iamRoleStatements:
  - Effect: "Allow"
    Action:
      - "lambda:*"
    Resource:
      - "*"

1 Ответ

0 голосов
/ 22 ноября 2018

Сделайте вашу функцию не асинхронной.Когда он помечен как асинхронный и функция-обработчик возвращает значение, лямбда-выражение возвращает это значение.У вас нет явного возврата, но nodejs возвращает неопределенное значение, если функция заканчивается без явного возвращаемого значения.

Вы также можете отказаться от использования обратных вызовов

module.exports.handler = async (event, context) => {
  let params = {
    //MasterRegion: 'ALL',
    //FunctionVersion: 'ALL',
    MaxItems: 10
  };

  try {
    let result = await lambda.listFunctions(params).promise() {
    console.log(result);
  } catch (err) {
    console.log(err);
    throw err; // this try catch isn't really necessary 
  }
  return "function finished";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...