从node.js函数传递值到调用的lambda函数

6

我已经成功地在我的Node文件中调用了一个Lambda函数。它返回200和成功,但我需要向我正在调用的函数传递一个值,但我不确定该如何实现。我正在开始学习Lambda,并且相信我并没有正确理解一些操作方式。我试图向Lambda函数传递一个电子邮件地址。

function callLambda(){
var AWS = require('aws-sdk');
AWS.config.region = 'us-west-2'

var lambda = new AWS.Lambda();
var params = {
  FunctionName: 'UploadDailyRecords', 
  Payload: '{"client_id" : "email@email.com"}'
};
lambda.invoke(params, function(err, data) {
  if (err) console.log(err, err.stack);
  else     console.log(data);         
});
}
callLambda();

此外,我不确定如何以正确的格式从其他函数中调用它,以接受来自此调用的变量。这是在AWS上设置调用的lambda的方式。

exports.handler = function(event, context, callback) {
  get_clients_email();
  callback(null, "completed");
}
感谢任何帮助。

最终的解决方案是什么样子?如果我需要在Payload对象中传递两个属性,它会如何工作? - lopezdp
1个回答

8
一切看起来都很好,现在你只需要通过 event.client_id 在Lambda函数中访问有效载荷参数即可。

你能详细说明一下吗?当我运行这个程序并调用“get_clients_email();”时,它可以工作,但是没有任何东西被传递进去。我需要将负载中的内容传递给 Lambda。我想你是在说“get_clients_email()”中,我应该将其改为“get_clients_email(event.client_id)”? - Mike
您目前正在传递一个JSON字符串作为有效载荷。您不能直接传递变量/对象/哈希等,必须将其转换为整个有效载荷参数是有效的JSON字符串。 - Mark B
1
是的,我正在尝试构建有效的JSON字符串,但我发现这非常困难。无论我如何尝试构建它,它都不符合可接受的格式。非常令人沮丧。无论如何,感谢您的帮助。 - Mike
你尝试过在内存中构建一个对象,然后使用 JSON.stringify() 将其转换为字符串值吗? - Mark B
我最终确实是构建了一个字符串,然后将该字符串传递到有效载荷中。 - Mike
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,