Javascript 如何从Lambda将mqtt发布到AWS Shadow
这是我目前正在使用的代码Javascript 如何从Lambda将mqtt发布到AWS Shadow,javascript,amazon-web-services,aws-lambda,mqtt,aws-iot,Javascript,Amazon Web Services,Aws Lambda,Mqtt,Aws Iot,这是我目前正在使用的代码 var AWS = require('aws-sdk'); var iotdata = new AWS.IotData({ endpoint: '######.iot.ap-south-1.amazonaws.com' }); exports.handler = async (event) => { await new Promise((resolve, reject) => { var params = { payload: Buff
var AWS = require('aws-sdk');
var iotdata = new AWS.IotData({
endpoint: '######.iot.ap-south-1.amazonaws.com'
});
exports.handler = async (event) => {
await new Promise((resolve, reject) => {
var params = {
payload: Buffer.from('...') || 'STRING_VALUE' ,
thingName: 'ESP32', /* required */
//shadowName: 'STRING_VALUE'
};
iotdata.updateThingShadow(params, function(err, data) {
if (err) {
console.log(err, err.stack);
console.log("error................")// an error occurred
reject(err);
} else {
console.log(data); // successful response
resolve(data)
}
});
})
}
关于这个我有两个问题,
Response:
{
"errorType": "InvalidRequestException",
"errorMessage": "Payload contains invalid json",
"trace": [
"InvalidRequestException: Payload contains invalid json",
" at Object.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:51:27)",
" at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/rest_json.js:55:8)",
" at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)",
" at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)",
" at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:688:14)",
" at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",
" at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",
" at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",
" at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",
" at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:690:12)"
]
}
Request ID:
"2574b62-4b-41e7-a725-644e8d78"
Function logs:
START RequestId: 24574b62-4be3-41e7-a725-694a444e8d78 Version: $LATEST
2020-11-14T04:39:40.303Z 24574b62-4be3-41e7-a725-694a444e8d78 INFO InvalidRequestException: Payload contains invalid json
at Object.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:51:27)
at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/rest_json.js:55:8)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:690:12) {
code: 'InvalidRequestException',
time: 2020-11-14T04:39:40.243Z,
requestId: '219f8c5f-2bf1-9ad0-ff5d-589940833983',
statusCode: 400,
retryable: false,
retryDelay: 68.01088760246567
} InvalidRequestException: Payload contains invalid json
at Object.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:51:27)
at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/rest_json.js:55:8)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:690:12)
2020-11-14T04:39:40.340Z 24574b62-4be3-41e7-a725-694a444e8d78 INFO error................
2020-11-14T04:39:40.342Z 24574b62-4be3-41e7-a725-694a444e8d78 ERROR Invoke Error {"errorType":"InvalidRequestException","errorMessage":"Payload contains invalid json","code":"InvalidRequestException","message":"Payload contains invalid json","time":"2020-11-14T04:39:40.243Z","requestId":"219f8c5f-2bf1-9ad0-ff5d-589940833983","statusCode":400,"retryable":false,"retryDelay":68.01088760246567,"stack":["InvalidRequestException: Payload contains invalid json"," at Object.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:51:27)"," at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/rest_json.js:55:8)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:688:14)"," at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)"," at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)"," at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:690:12)"]}
END RequestId: 24574b62-4be3-41e7-a725-694a444e8d78
REPORT RequestId: 24574b62-4be3-41e7-a725-694a444e8d78 Duration: 736.20 ms Billed Duration: 800 ms Memory Size: 128 MB Max Memory Used: 85 MB Init Duration: 392.36 ms
响应:
{
“errorType”:“InvalidRequestException”,
“errorMessage”:“负载包含无效的json”,
“跟踪”:[
“InvalidRequestException:有效负载包含无效的json”,
“at Object.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/json.js:51:27)”,
“at Request.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/rest_json.js:55:8)”,
“at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:106:20)”,
“at Request.emit(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:78:10)”,
“at Request.emit(/var/runtime/node_modules/aws sdk/lib/Request.js:688:14)”,
“at Request.transition(/var/runtime/node_modules/aws sdk/lib/Request.js:22:10)”,
“在AcceptorStateMachine.runTo(/var/runtime/node_modules/aws sdk/lib/state_machine.js:14:12)”中,
“at/var/runtime/node_modules/aws sdk/lib/state_machine.js:26:10”,
“应请求。(/var/runtime/node_modules/aws sdk/lib/Request.js:38:9)”,
“应请求。(/var/runtime/node_modules/aws sdk/lib/Request.js:690:12)”
]
}
请求ID:
“2574b62-4b-41e7-a725-644e8d78”
功能日志:
启动请求ID:24574b62-4be3-41e7-a725-694a444e8d78版本:$LATEST
2020-11-14T04:39:40.303Z 24574b62-4be3-41e7-a725-694a444e8d78信息无效请求异常:有效负载包含无效json
在Object.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/json.js:51:27)
at Request.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/rest_json.js:55:8)
at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:106:20)
at Request.emit(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:78:10)
at Request.emit(/var/runtime/node_modules/aws sdk/lib/Request.js:688:14)
at Request.transition(/var/runtime/node_modules/aws sdk/lib/Request.js:22:10)
在AcceptorStateMachine.runTo(/var/runtime/node_modules/aws sdk/lib/state_machine.js:14:12)
at/var/runtime/node_modules/aws sdk/lib/state_machine.js:26:10
应要求。(/var/runtime/node_modules/aws sdk/lib/request.js:38:9)
应要求。(/var/runtime/node_modules/aws sdk/lib/request.js:690:12){
代码:“InvalidRequestException”,
时间:2020-11-14T04:39:40.243Z,
请求ID:'219f8c5f-2bf1-9ad0-ff5d-589940833983',
状态代码:400,
可检索:错误,
retryDelay:68.01088760246567
}InvalidRequestException:负载包含无效的json
在Object.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/json.js:51:27)
at Request.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/rest_json.js:55:8)
at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:106:20)
at Request.emit(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:78:10)
at Request.emit(/var/runtime/node_modules/aws sdk/lib/Request.js:688:14)
at Request.transition(/var/runtime/node_modules/aws sdk/lib/Request.js:22:10)
在AcceptorStateMachine.runTo(/var/runtime/node_modules/aws sdk/lib/state_machine.js:14:12)
at/var/runtime/node_modules/aws sdk/lib/state_machine.js:26:10
应要求。(/var/runtime/node_modules/aws sdk/lib/request.js:38:9)
应要求。(/var/runtime/node_modules/aws sdk/lib/request.js:690:12)
2020-11-14T04:39:40.340Z 24574b62-4be3-41e7-a725-694a444e8d78信息错误。。。。。。。。。。。。。。。。
2020-11-14T04:39:40.342Z 24574b62-4be3-41e7-a725-694a444e8d78错误调用错误{“errorType”:“InvalidRequestException”,“errorMessage”:“有效负载包含无效json”,“代码”:“InvalidRequestException”,“message”:“有效负载包含无效json”,“时间”:“2020-11-14T04:39:40.243Z”,“requestId”:“219f8c5f-2bf1-9ad0-ff5d-58994083983”,“状态代码”:400,“retryable”:false,“retryDelay”:68.01088760246567,“堆栈”:[“InvalidRequestException:有效负载包含无效json”,“at Object.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/json.js:51:27)”,“at Request.extractError(/var/runtime/node_modules/aws sdk/lib/protocol/rest_json.js:55:8)”,“at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:106:20)”,“at Request.emit(/var/runtime/node_modules/aws sdk/lib/node_executor.js:78:10)”,“at Request.transition(/var/runtime/node_modules/aws sdk/lib/Request.js:22:10)”,“at Request,“at-AcceptorStateMachine.runTo(/var/runtime/node_modules/aws sdk/lib/state_machine.js:14:12)”,“at/var/runtime/node_modules/aws sdk/lib/Request.js:38:9)”,“at-Request(/var/runtime/node_modules/aws sdk/lib/Request.js:690:12)”]
结束请求ID:24574b62-4be3-41e7-a725-694a444e8d78
报告请求ID:24574b62-4be3-41e7-a725-694a444e8d78持续时间:736.20毫秒计费持续时间:800毫秒内存大小:128 MB最大使用内存:85 MB初始持续时间:392.36毫秒
我找到了这个问题的答案
问题出在有效载荷上。
这将是正确的代码
var AWS = require('aws-sdk');
var iotdata = new AWS.IotData({
endpoint: '#######.iot.ap-south-1.amazonaws.com'
});
exports.handler = async (event) => {
var POST_DATA = JSON.stringify({"state":{"desired":{"state":10}}});
await new Promise((resolve, reject) => {
var params = {
payload:POST_DATA ,
thingName: 'ESP32', /* required */
//shadowName: 'STRING_VALUE'
};
iotdata.updateThingShadow(params, function(err, data) {
if (err) {
console.log(err, err.stack);
console.log("error................")// an error occurred
reject(err);
} else {
console.log(data); // successful response
resolve(data)
}
});
})
}
错误消息到底是什么?@Marcin我已经编辑了我的问题。很抱歉。我认为错误消息很清楚:“负载包含无效的json”。您的负载的形式是什么?@Marcin我希望这样