使用 node.js 在 aws lambda 中检索函数参数值
Retrieving Function parameters values in aws lambda using node.js
我有 2 个 aws lambda 函数,即 "LambdaChain1" 和 "LambdaChain2"
我正在从 aws lambda 函数 "LambdaChain1" 调用 aws lambda 函数 "LambdaChain2",如下所示:
enter code here
var start=new Date();
enter code here
console.log('Loading function');
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
event.Records.forEach(function(record) {
// Kinesis data is base64 encoded so decode here
var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');
console.log('Decoded payload:', payload);
});
context.succeed("Successfully processed " + event.Records.length + " records.");
var params = {
FunctionName: 'LambdaChain2', /* required */
InvokeArgs: start.getTime() /* required */
};
lambda.invokeAsync(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
};
现在我们可以从代码中看到我已经将 "start.getTime()" 作为参数传递给 aws lambda 函数 "LambdaChain2"...
我想知道在 aws lambda 函数 LambdaChain2 中,我如何检索或使用我从 lambda 函数 "LambdaChain1" 传递给函数 "LambdaChain2" 的参数......你能请举个例子
看起来 invokeAsync
已被弃用,因此我在此示例中使用了 invoke
,但它非常相似。
invoke
参数中的Payload
参数成为ChainFunc2中的event
参数。
ChainFunc1
var AWS = require("aws-sdk");
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
var params = {
FunctionName: "ChainFunc2",
InvocationType: "RequestResponse",
Payload: JSON.stringify({"greeting": "Hello, Lambda"})
};
var lambdaClient = new AWS.Lambda();
lambdaClient.invoke(params, function(err, data) {
if (err) {
console.log("invoke failed:" + err, err.stack);
context.fail(err);
} else {
console.log("invoke succeeded", data);
context.succeed(data);
}
});
};
ChainFunc2
exports.handler = function(event, context) {
console.log("Received event:", JSON.stringify(event, null, 2));
console.log("Greeting:", event.greeting);
context.succeed({"message": "ChainFunc2 processed this", "payload": event});
};
我有 2 个 aws lambda 函数,即 "LambdaChain1" 和 "LambdaChain2" 我正在从 aws lambda 函数 "LambdaChain1" 调用 aws lambda 函数 "LambdaChain2",如下所示:
enter code here
var start=new Date();
enter code here
console.log('Loading function');
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
event.Records.forEach(function(record) {
// Kinesis data is base64 encoded so decode here
var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');
console.log('Decoded payload:', payload);
});
context.succeed("Successfully processed " + event.Records.length + " records.");
var params = {
FunctionName: 'LambdaChain2', /* required */
InvokeArgs: start.getTime() /* required */
};
lambda.invokeAsync(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
};
现在我们可以从代码中看到我已经将 "start.getTime()" 作为参数传递给 aws lambda 函数 "LambdaChain2"...
我想知道在 aws lambda 函数 LambdaChain2 中,我如何检索或使用我从 lambda 函数 "LambdaChain1" 传递给函数 "LambdaChain2" 的参数......你能请举个例子
看起来 invokeAsync
已被弃用,因此我在此示例中使用了 invoke
,但它非常相似。
invoke
参数中的Payload
参数成为ChainFunc2中的event
参数。
ChainFunc1
var AWS = require("aws-sdk");
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
var params = {
FunctionName: "ChainFunc2",
InvocationType: "RequestResponse",
Payload: JSON.stringify({"greeting": "Hello, Lambda"})
};
var lambdaClient = new AWS.Lambda();
lambdaClient.invoke(params, function(err, data) {
if (err) {
console.log("invoke failed:" + err, err.stack);
context.fail(err);
} else {
console.log("invoke succeeded", data);
context.succeed(data);
}
});
};
ChainFunc2
exports.handler = function(event, context) {
console.log("Received event:", JSON.stringify(event, null, 2));
console.log("Greeting:", event.greeting);
context.succeed({"message": "ChainFunc2 processed this", "payload": event});
};