2017-01-17 37 views
1

我有一个在amazon aws云上运行的lambda函数。现在我想创建一个node.js脚本将数据从本地系统发送到aws lambda并使用回调函数打印从我的node.js代码发送的相同值。使用node.js脚本调用并发送数据到aws-lambda函数

现在,从我的Node.js代码触发我的lambda表达式,我用下面的代码:

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

// you shouldn't hardcode your keys in production! See http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html 

AWS.config.update({accessKeyId: 'myaccessKeyId', secretAccessKey: 'mysecretAccessKey',region:'region',correctClockSkew: true}); 

var lambda = new AWS.Lambda({apiVersion: '2015-03-31'}); 
var params = { 
    FunctionName: 'myLambdaFunction', /* required */ 
    Payload: 'true', 
}; 
lambda.invoke(params, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

我是新来这个lambda函数的概念,所以任何人都可以帮我告诉如何从上述代码发送数据到所需的lambda函数?使用上面的代码,我可以触发我的lambda函数,并且我正在获取我的节点应用程序,无论我打印的是有效载荷。

当我在有效载荷中使用自定义字符串值(除'true','false'或'null')以及我正在使用的api版本为apiVersion:'2015时,出现以下错误-03-31',并且最近安装了aws-sdk节点模块,所以我想它是最新的。 错误消息:

{InvalidRequestContentException:无法解析请求体为JSON:无法识别的令牌 'custom_data':期待( '真', '假' 或 '空') 在[来源:[B @ 7d2214ec; 1 /列:23] at Object.extractError(/usr/lib/node_modules/aws-sdk/lib/protocol/json.js:43:27) at Request.extractError(/ usr/lib/node_modules/aws-sdk/lib/protocol/rest_json.js:37:8) at Request.callListeners(/usr/lib/node_modules/aws-sdk/lib/sequential_executor.js:105:20) at Request.emit(/ usr/lib/node_modules/aws-sdk/lib/sequential_executor.js:77:10) at Request.emit(/usr/lib/node_modules/aws-sdk/lib/request.js:668:14) at Request ./transition(/usr/lib/node_modules/aws-sdk/lib/request.js:22:10) at AcceptorStateMachine.runTo(/usr/lib/node_modules/aws-sdk/lib/state_machine.js:14:12 ) at Request /usr/lib/node_modules/aws-sdk/lib/state_machine.js:26:10 。 (/usr/lib/node_modules/aws-sdk/lib/request.js:38:9) 。 (/usr/lib/node_modules/aws-sdk/lib/request.js:670:12) message:'无法将请求正文解析为json:无法识别的令牌\'custom_data \':期待(\'true \' ,'false'或'null')\ n在[Source:[B @ 7d2214ec;行:1,柱:23]”, 代码: 'InvalidRequestContentException', 时间:2017-01-16T16:48:38.514Z, 的requestId: '3bee0e2c-dd39-11e6-9df3-5f7a24f73b9d', 的StatusCode:400 , retryable:false, retryDelay:26.112914258191733}'InvalidRequestContentException:无法将请求正文解析为json:无法识别的标记\'custom_data \':期待(\'true \',\'false \'或\'null \ )\ n在[来源:[B @ 7d2214ec; 1:列:23] \ n在Object.extractError(/usr/lib/node_modules/aws-sdk/lib/protocol/json.js:43:27)\n在Request.extractError(/ usr/lib/node_modules/aws-sdk/lib/protocol/rest_json.js:37:8)\ n在Request.callListeners(/usr/lib/node_modules/aws-sdk/lib/sequential_executor.js:105:20)\n请求.emit(/usr/lib/node_modules/aws-sdk/lib/sequential_executor.js:77:10)\n在Request.emit(/usr/lib/node_modules/aws-sdk/lib/request.js:668: 14)\ n在Request.transition(/usr/lib/node_modules/aws-sdk/lib/request.js:22:10)\n在AcceptorStateMachine.runTo(/ usr/lib/node_modules/aws-sdk/lib/state_machine.js:14:12)\ n在/usr/lib/node_modules/aws-sdk/lib/state_machine.js:26:10\n请求。 (/usr/lib/node_modules/aws-sdk/lib/request.js:38:9)\n请求。 (/usr/lib/node_modules/aws-sdk/lib/request.js:670:12)'

请帮忙。

回答

0

您当前正在将数据发送到Lambda函数。您要发送的数据是字符串'true'。您通过Payload属性发送数据。从the documentation

有效载荷 - (缓冲区,类型数组,BLOB,字符串)要提供给您的lambda表达式作为输入

JSON。

+0

我试着发送其他字符串值,但它会抛出一个错误,说有效载荷值应该是'true'或'false'或'null'。你可以尝试与其他字符串值相同的东西,并让我知道你是否面临同样的问题。否则还有其他问题,我错过了。 –

+0

还有一件事,为了接收我从node.js应用程序发送的数据并将其显示在我的lambda函数中,我应该添加任何代码行吗?请帮助。 –

+0

当您尝试传递另一个字符串时,是否可以编辑您的问题以显示代码和实际错误消息? –