当前位置: 首页 > 面试题库 >

Node.js-从另一个Lambda函数中调用AWS.Lambda函数

辛才俊
2023-03-14
问题内容

我有以下函数,可用于从我的代码中调用Lambda函数。

但是,当我尝试在Lambda函数中使用它时,出现以下错误:

AWS lambda undefined 0.27s 3 retries] invoke({ FunctionName: 'my-function-name',
  InvocationType: 'RequestResponse',
  LogType: 'Tail',
  Payload: <Buffer > })

如何从Lambda函数中调用Lambda函数?

我的功能:

'use strict';

var AWS = require("aws-sdk");

var lambda = new AWS.Lambda({
    apiVersion: '2015-03-31',
    endpoint: 'https://lambda.' + process.env.DYNAMODB_REGION + '.amazonaws.com',
    logger: console
});

var lambdaHandler = {};

// @var payload - type:string
// @var functionName - type:string
lambdaHandler.invokeFunction = function (payload, functionName, callback) {

    var params = {
        FunctionName: functionName, /* required */
        InvocationType: "RequestResponse",
        LogType: "Tail",
        Payload: new Buffer(payload, 'utf8')
    };

    var lambdaRequestObj = lambda.invoke(params);

    lambdaRequestObj.on('success', function(response) {
        console.log(response.data);
    });

    lambdaRequestObj.on('error', function(response) {
        console.log(response.error.message);
    });

    lambdaRequestObj.on('complete', function(response) {
        console.log('Complete');
    });

    lambdaRequestObj.send();

    callback();
};

module.exports = lambdaHandler;

问题答案:

使用aws-sdk每个Lambda中都提供的,从另一个Lambda函数中调用Lambda函数非常简单。

我建议首先从 简单的 事情开始。
这是lambda内调用的“ Hello World”:

Lambda_A``Lambda_B 使用Payload包含一个参数的调用name:'Alex'
Lambda_B回应有效负载"Hello Alex"

首先创建Lambda_B,它期望参数具有name 属性 , 并使用以下命令响应请求:event
"Hello "+event.name

Lambda_B

exports.handler = function(event, context) {
  console.log('Lambda B Received event:', JSON.stringify(event, null, 2));
  context.succeed('Hello ' + event.name);
};

确保你给Lambda_BLambda_A相同的作用。
例如:创建一个lambdaexecute具有AWSLambdaExecute
的角色AWSLambdaBasicExecutionRole出于某些原因,两者都需要 ):

Lambda_A

var AWS = require('aws-sdk');
AWS.config.region = 'eu-west-1';
var lambda = new AWS.Lambda();

exports.handler = function(event, context) {
  var params = {
    FunctionName: 'Lambda_B', // the lambda function we are going to invoke
    InvocationType: 'RequestResponse',
    LogType: 'Tail',
    Payload: '{ "name" : "Alex" }'
  };

  lambda.invoke(params, function(err, data) {
    if (err) {
      context.fail(err);
    } else {
      context.succeed('Lambda_B said '+ data.Payload);
    }
  })
};

保存完这两个Lambda函数后,请运行以下命令Lambda_A

一旦完成了 基本 的lambdda内调用工作,就可以轻松扩展它以调用更复杂的Lambda函数。

您要 记住 的主要事情是 为所有功能 设置适当ARN Role的功能



 类似资料:
  • 在过去的几个小时里,我一直在调试、配置和命名它,我似乎不明白为什么会发生这种情况。 我正在尝试调用一个 lambda 函数,该函数只是从 ec2 中检索基本信息。当我在aws控制台中测试此lambda函数时,它似乎工作正常。但是,使用以下代码在另一个lambda中调用它; 它只是超时了。没有任何反应…两个Lambda都连接到VPC和所有子网 我认为是我的新VPC导致了这个问题。我的VPC包括: 1

  • 我需要制作两个lambda函数,一个用参数调用另一个,被调用的函数将参数打印出来。我很难让它工作:第一个函数: 请告知我应该在被调用函数中输入什么代码才能接收参数“hello Jenny”?非常感谢。

  • 问题内容: 我有2个Lambda函数-一个产生报价,另一个将报价变成订单。我希望Order lambda函数调用Quote函数来重新生成报价,而不是仅仅从不受信任的客户端接收报价。 我看过我能想到的任何地方-但看不到如何链接或调用函数…肯定存在! 问题答案: 我找到了使用的方法。 您可以在以下位置找到该文档:http : //docs.aws.amazon.com/AWSJavaScriptSDK

  • 问题内容: 我在下有两个文件,另一个在程序包中包含一些功能的文件称为函数。 我的问题是:如何从中调用函数? 文件1:main.go(位于MyProj / main.go中) 文件2:functions.go(位于MyProj / functions / functions.go中) 问题答案: 您可以通过包的导入路径导入包,并通过包名引用其所有导出的符号( 以大写字母 开头的符号),如下所示:

  • 问题内容: 我可以在python3.2的全局范围内调用嵌套在另一个函数内的函数吗? 这是从外部func1()调用func2()的一种方法吗? 问题答案: 否,除非您返回该函数: 甚至

  • 问题内容: 我无法从另一个类Menu.swift调用GameViewController.swift中的函数。我这样调用该函数: 这是我要调用的函数: } 我在菜单类内的GameViewController.showLeaderboard()行中出现编译器错误“调用中的参数#1缺少参数”,但我不理解编译器期望的参数类型,因为我不需要任何声明就声明了该函数参数。 谢谢 问题答案: 在您定义为方法而不