关于node.js:具有JavaScript SDK和Raspberry Pi连接错误的AWS IoT

AWS IoT with the JavaScript SDK and Raspberry Pi connection error

我正在尝试连接到我的"东西",即使用node.js在我的AWS账户中注册的Raspberry Pi。所有凭据文件都存储在正确的路径(certs文件夹)中。用于node.js的aws.iot SDK安装在Raspberry Pi的~/deviceSDK'目录中。这是代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
var awsIot = require('aws-iot-device-sdk');

var device = awsIot.device({
    keyPath: '/home/pi/deviceSDK/certs/private.pem.key',
    certPath: '/home/pi/deviceSDK/certs/certificate.pem.crt',
    caPath: '/home/pi/deviceSDK/certs/caCert.crt',
    clientId: 'Raspberry',
    region: 'us-west-2'
  });

device.on('connect', function() {
           console.log('connected');
});

运行代码时,收到以下错误:

Error: Invalid connect options supplied.

我在这个问题上进行了搜索,发现应该在连接选项下添加主机。因此,代码更新如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var awsIot = require('aws-iot-device-sdk');

    var device = awsIot.device({
        keyPath: '/home/pi/deviceSDK/certs/private.pem.key',
        certPath: '/home/pi/deviceSDK/certs/certificate.pem.crt',
        caPath: '/home/pi/deviceSDK/certs/caCert.crt',
        clientId: 'Raspberry',
        region: 'us-west-2',
        host:   'https://XXXXXXXXXX.iot.us-west-2.amazonaws.com'
    });


    device.on('connect', function() {
           console.log('connected');
    });

AWS显然在其中提供了XXXXXXXXXXX作为Rest API端点,以便与我账户中的"事物"进行交互,如下图所示。

我的设备端点
my

现在我收到此错误:

events.js:183
throw er; // Unhandled 'error' event
^

Error: getaddrinfo ENOTFOUND
https://xxxxxxxxx.iot.us-west-2.amazonaws.com
https://xxxxxxxxxx.iot.us-west-2.amazonaws.com:8883

有什么问题吗?感谢您的帮助。


如果您缺少连接到IoT设备所需的对象的任何键/值对,则AWS通常会引发此错误。因此,如果缺少任何必填字段,则会出现此错误。

1
2
3
4
5
6
7
8
{
  keyPath: '',
  certPath: '',
  caPath: '',
  host: '',
  clientId: '',
  region: '',
}

请确保确认您正确提供了所有参数


此问题已通过从主机中删除https来解决。谢谢。