从AWS lambda向IOT设备发送请求并等待响应

时间:2019-02-22 22:18:18

标签: amazon-web-services raspberry-pi aws-lambda aws-iot

我创建了alexa智能家居技能。我目前正在从AWS lambda向我的树莓派发送请求,以获取使用MQTT的技能。然后,无论pi上运行的任何逻辑是什么,甚至根本没有运行,lambda都会生成响应。我想发送一个响应,以使lambda函数从pi返回。

我可以使用MQTT或API网关调用lambda函数,但这没有用,因为它需要能够访问由Alexa调用的函数的实例才能返回响应。

我可以使用HTTP来执行此操作,但必须将端口公开给pi。我对安全问题没有足够的知识,无法轻松地做到这一点。

是否可以通过MQTT,Web套接字或任何其他安全方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

因此您可以使用AWS Lambda函数中的mqtt向IoT设备发送请求。是的,可以通过创建将在主题上发布并且物联网设备将收到该请求的lambda函数

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

exports.handler = (event, context, callback) => {

 var iotdata = new AWS.IotData({
 endpoint: 'akugdx70brb.iot.us-west-2.amazonaws.com:8883',
 apiVersion: '2015-05-28'
});

     var params = {
  topic: 'terminal2/test/',
  payload: new Buffer('...') || 'STRING_VALUE',
  qos:1
};
iotdata.publish(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

};`

pls让我知道您必须采用这种方式。如果没有,我会为您提供另一种方式