AWS Lambda努力使ListFunctions工作

时间:2018-11-21 20:03:17

标签: node.js amazon-web-services lambda aws-lambda amazon-iam

我正在努力从ListFunctions获得任何不为null的响应。我在单个区域中有3个函数,并且在参数和AWS.config.region方面玩得相当好。我一直得到null作为回报,并且在控制台日志中,我什么也得不到。任何帮助将不胜感激!

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更改

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

1 个答案:

答案 0 :(得分:1)

使您的功能不异步。 当标记为异步并且处理程序函数返回时,lambda返回该值。您没有显式的返回值,但是如果函数在没有显式的返回值的情况下结束,则nodejs将返回undefined。

您还可以从使用回调功能切换

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";
}