我有以下函数,用于从我的代码中调用 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;
原文由 hyprstack 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
aws-sdk
从另一个 Lambda 函数中调用 Lambda 函数非常简单,它在每个 Lambda 中都可用。Lambda_A
调用Lambda_B
Payload
包含单个参数name:'Alex'
Lambda_B
以有效负载响应:"Hello Alex"
。首先在
event
参数上创建Lambda_B
期望name
属性并使用
"Hello "+event.name
响应请求:Lambda_B
确保您赋予
Lambda_B
和Lambda_A
相同的角色。Eg: create a role called
lambdaexecute
which hasAWSLambdaRole
,AWSLambdaExecute
andAWSLambdaBasicExecutionRole
( All are required ):Lambda_A
保存这两个 Lambda 函数后,测试运行
Lambda_A
:一旦你有 基本 的内部 lambda 调用工作,你可以轻松地扩展它来调用更复杂的 Lambda 函数。