【问题标题】:AWS Lambda struggling to get ListFunctions workingAWS Lambda 努力让 ListFunctions 工作
【发布时间】:2019-04-24 11:21:48
【问题描述】:

我正在努力从 ListFunctions 获得任何不为空的响应。我在一个区域中有 3 个函数,并且玩过 params 和 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:
      - "*"

【问题讨论】:

  • 试着让你的函数不是异步的。当它被标记为异步并且函数返回时,它会返回该值。您没有显式返回,但如果函数在没有显式返回值的情况下结束,nodejs 会返回 undefined
  • 就是这样......谢谢你好心的先生。

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


【解决方案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";
}

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2015-12-31
    • 2017-10-14
    • 2021-07-05
    相关资源
    最近更新 更多