Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Lambda将mqtt发布到AWS Shadow_Javascript_Amazon Web Services_Aws Lambda_Mqtt_Aws Iot - Fatal编程技术网

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)
      }
 });
})
}
关于这个我有两个问题,

  • 我的密码好像有点错误。你能帮我纠正一下吗

  • 我应该以何种格式给出有效负载。我不太明白缓冲区的类型

  • 不知何故,当我运行代码时,会在执行结果中看到错误……。。(这是从控制台日志中看到的)

    我在节点JS12.x环境中的AWS lambda中运行此代码。我已经给了lambda适当的权限将数据发布到阴影中

    谢谢

    这是错误消息

    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我希望这样