4

Node.js と aws-iot-device-sdk を使用して、Raspberry Pi で AWS IoT を試していました。正常に接続していますが.subscribe、コールバック関数を呼び出していません。パブリッシュはパブリッシングではありません。正しい方向に私を向けることができればお願いします。topic3からのすべてのデータが に再発行されるAWS IoT のルールも作成しましたtopic2

var awsIot = require('aws-iot-device-sdk');

var device = awsIot.device({
    "host": "A3SXXXXXXXXXXX.iot.us-west-2.amazonaws.com",
    "port": 8883,
    "clientId": "MyClientId",
    "thingName": "MyThingName",
    "caCert": "./certs/root-CA.crt",
    "clientCert": "./certs/certificate.pem.crt",
    "privateKey": "./certs/private.pem.key"
});
device
  .on('connect', function() {
    console.log('connected');
    device.subscribe({'topic3':0}, function(error, result) {
	  console.log(error);
      console.log(result);
    });
    device.publish('topic2', JSON.stringify({ test_data: 2}));
  });

4

2 に答える 2

2

ポリシーで iot:Receive アクションを指定しましたか? http://docs.aws.amazon.com/iot/latest/developerguide/policy-actions.html

iot:Receive AWS IoT からメッセージを受信する権限を表します。iot:Receive アクセス許可は、メッセージがクライアントに配信されるたびにチェックされます。このパーミッションは配信ごとにチェックされるため、現在トピックにサブスクライブしているクライアントへのパーミッションを取り消すために使用できます。

サブスクライブ コールバックが呼び出されなかった場合と同様の問題が発生しました。私の IOT クライアントは、同じトピックを発行および購読していました。パブリッシングは機能しますが、サブスクライブ コールバックは実行されません。iot:Receive アクションを同じトピックに追加した後、サブスクライブ コールバックが期待どおりに機能するようになりました。

于 2017-11-24T01:53:48.717 に答える