AWS IoT with the JavaScript SDK and Raspberry Pi connection error
我正在尝试连接到我的"东西",即使用node.js在我的AWS账户中注册的Raspberry Pi。所有凭据文件都存储在正确的路径(certs文件夹)中。用于node.js的aws.iot SDK安装在Raspberry Pi的
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端点,以便与我账户中的"事物"进行交互,如下图所示。
我的设备端点
现在我收到此错误:
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来解决。谢谢。