2015-11-10 28 views
3

我正在關注亞馬遜網絡服務物聯網開發者指南,但我遇到了一些初學者問題,我不知道如何解決它們。我坐了兩天。這是發生了什麼事(我使用的是Mac):我的配置有什麼問題? AWS - 使用MQTT的物聯網

1問題: 在本指南:http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html 我可以看到,並通過調用編輯我的個人資料在終端「$是配置」。如果我調用「ls〜/ .aws」,我可以看到配置和證書文件夾。但是,如果我打電話:「〜/ .aws /憑證」或「〜/ .aws/config」,我得到以下錯誤:-bash:/Users/christopher/.aws/credentials:權限被拒絕。 如果我在Finder中搜索,沒有找到文件名aws。

第2個問題: 在指南的下一頁,編號爲11.我無法使點變爲綠色,因爲我按下連接時出現錯誤。 MQTT.fx工具說它無法在日誌中找到rootCA.pem文件。就像這樣:

2015-11-10 09:55:48,330 INFO --- ScriptsController    : Clear console. 
2015-11-10 09:55:48,332 INFO --- MqttFX ClientModel    : MqttClient with ID fc47354d17e84b6c8507eb1accb61560 assigned. 
2015-11-10 09:55:48,340 ERROR --- MqttFX ClientModel    : Error when connecting 
java.io.FileNotFoundException: rootCA.pem (No such file or directory) 
    at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_60] 
    at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_60] 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[?:1.8.0_60] 
    at java.io.FileInputStream.<init>(FileInputStream.java:93) ~[?:1.8.0_60] 
    at de.jensd.mqttfx.ssl.SSLFellow.loadX509CertificatePem(SSLFellow.java:173) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.ssl.SSLFellow.createSSLSocketFactory(SSLFellow.java:51) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.model.MqttFXClientModel.getMqttConnectOptions(MqttFXClientModel.java:713) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.model.MqttFXClientModel.connect(MqttFXClientModel.java:420) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.services.BrokerConnectService$1.call(BrokerConnectService.java:68) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.services.BrokerConnectService$1.call(BrokerConnectService.java:65) ~[MQTT.fx-jfx.jar:?] 
    at javafx.concurrent.Task$TaskCallable.call(Task.java:1423) ~[jfxrt.jar:?] 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_60] 
    at javafx.concurrent.Service.lambda$null$493(Service.java:725) ~[jfxrt.jar:?] 
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_60] 
    at javafx.concurrent.Service.lambda$executeTask$494(Service.java:724) ~[jfxrt.jar:?] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60] 
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60] 
2015-11-10 09:55:48,563 INFO --- ScriptsController    : Clear console. 
2015-11-10 09:55:48,563 ERROR --- BrokerConnectService   : FileNotFoundException: rootCA.pem (No such file or directory) 

當我點擊旁邊的證書的「...」按鈕,我注意到兩件事情。 1.這些證書是在我的用戶文件夾中創建的,而不是在aws中創建的?配置文件夾。 2.沒有創建rootCA.pem證書。

我跟着這個教程簽下我自己rootCA.pem證書:http://datacenteroverlords.com/2012/03/01/creating-your-own-ssl-certificate-authority/

然後在MQTT.fx工具,我再次按「...」按鈕旁邊的每個證書手動選擇每個證書。顯示給每個人的路徑,像這樣:/Users/christopher/cert.pem

當我嘗試重新連接我得到的MQTT.fx工具以下錯誤:

2015-11-09 17:00:30,634 INFO --- ScriptsController    : Clear console. 
2015-11-09 17:00:30,635 ERROR --- BrokerConnectService   : NullPointerException: null 
2015-11-09 17:43:17,544 INFO --- BrokerConnectorController  : onConnect 
2015-11-09 17:43:17,592 INFO --- ScriptsController    : Clear console. 
2015-11-09 17:43:17,595 INFO --- MqttFX ClientModel    : MqttClient with ID fc47354d17e84b6c8507eb1accb61560 assigned. 
2015-11-09 17:43:17,661 ERROR --- MqttFX ClientModel    : Error when connecting 
java.lang.NullPointerException 
    at de.jensd.mqttfx.ssl.SSLFellow.loadPem(SSLFellow.java:221) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.ssl.SSLFellow.loadPrivateKeyPem(SSLFellow.java:184) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.ssl.SSLFellow.createSSLSocketFactory(SSLFellow.java:55) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.model.MqttFXClientModel.getMqttConnectOptions(MqttFXClientModel.java:713) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.model.MqttFXClientModel.connect(MqttFXClientModel.java:420) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.services.BrokerConnectService$1.call(BrokerConnectService.java:68) ~[MQTT.fx-jfx.jar:?] 
    at de.jensd.mqttfx.services.BrokerConnectService$1.call(BrokerConnectService.java:65) ~[MQTT.fx-jfx.jar:?] 
    at javafx.concurrent.Task$TaskCallable.call(Task.java:1423) ~[jfxrt.jar:?] 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_60] 
    at javafx.concurrent.Service.lambda$null$493(Service.java:725) ~[jfxrt.jar:?] 
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_60] 
    at javafx.concurrent.Service.lambda$executeTask$494(Service.java:724) ~[jfxrt.jar:?] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60] 
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60] 
2015-11-09 17:43:18,472 INFO --- ScriptsController    : Clear console. 
2015-11-09 17:43:18,473 ERROR --- BrokerConnectService   : NullPointerException: null 

我可以請參閱aws IoT站點(控制檯?),證書,策略和燈泡都像教程中一樣連接。但其餘的是一個謎。 我會很高興得到所有幫助。謝謝!

+0

我不知道你想簽署自己的根CA達到什麼樣的? rootCA.pem文件應該從[here]下載(https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5 。質子交換膜)。 您是否也使用「...」按鈕選擇與根證書相對應的rootCA.pem文件? – kartben

回答

1
  1. 當您使用自己的域名時,您必須簽署自己的CA.原來的根證書的位置可以在http://docs.aws.amazon.com/iot/latest/developerguide/verify-pub-sub.html
+0

謝謝。 我製作了另一份證書的副本,並替換了賽門鐵克鏈接的內容。有效! 現在MQTT.fx設法連接,我可以在工具和終端中發佈和訂閱消息。這一切似乎都奏效,但出於某種原因,該消息不會添加到DynamoDB數據庫中。 在DynamoDB中,我用Hask Key「UserID」和Range Key「SensorTitle」創建了一個表。 在物聯網中,我製作了一個(Dynamo action)規則,該規則連接到Dynamo Db表,並具有$ {topic(2)}的Has Key值和$ {timestamp()}的Range Key值。 消息是{\「topic \」:\「topic,World \」} – ecco