我有一个节点应用程序,正在使用aws-iot-sdk建立与IOT核心的连接。我正在制作一个动态主题,并且有一个相同的规则将消息传输到lambda,而lambda进行一些后端处理。我现在正在尝试通过规则引擎操作重新发布的节点应用程序中的主题。 我是AWS IOT SDK的新手,由于遇到“空”而被卡住,请指导我。
我试图访问aws-iot-sdk的文档,按照他们编写的步骤进行操作,但我无法完成同样的操作。 如果我只是发布而不订阅节点应用程序,那么我将通过SNS收到响应,但无法返回到该应用程序。
我的节点代码:
ar awsIot = require('aws-iot-device-sdk');
var name = 'My Thing name';
const TAG = '[' + name + '] >>>>>>>>> ';
const INIT_DELAY = 15;
var app = awsIot.device({
keyPath: 'My private key',
certPath: 'My Cert path',
caPath: 'My Root cert Path',
clientId: name,
region: 'the region',
host: "<host addr>",
});
app.on('connect', () => {
try{
app.subscribe('/postacttest/response', (event) => {
console.log(event);
});
} catch(err) {
console.log(err);
}
app.publish('/getacttest/client1', JSON.stringify(
{
state: {
desired: {
message: "GET_TEST_RESULT",
clientId: "AWSNODECLIENT"
}
}
}
));
})
以下是我得到的答复:
空
以下是我在AWS上编写的规则:
SELECT state.desired.clientId AS clientId
FROM "/getacttest/#"
WHERE state.desired.message="GET_TEST_RESULT"
请指导我如何订阅该主题,并像使用WebSocket一样使用mqtt.js来显示结果。
如果按以下方式配置我的连接对象,则会出现错误,如下面相同的pic'c终端区域所示:
我已经为ACT服务编写了所有允许和操作政策。
答案 0 :(得分:0)
我将设备配置对象更改为具有有效的区域值。一切正常。