簡體   English   中英

通過HTTP POST到AWS IoT

[英]HTTP POST to AWS IoT

我想將HTTP設備連接到IoT核心。

我已經用curl命令嘗試了一切 ,一切順利。

現在,我想嘗試在Signatyure版本4中使用POST

我正在使用postmand發送POST請求,但是得到了以下輸出:

"message": "The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.",

在授權字段中,我選擇了“ AWS簽名”,並完成了所有這些操作:訪問和密鑰,aws區域和服務名稱= iotdata

我想獲得與使用curl命令時相同的結果:

curl --tlsv1.2 --cacert YY.pem --cert XX.pem.crt --key ZZ.pem.key -X POST -d "{ \"Trama\": \"message\"}" "https://PPPPPP.iot.eu-west-1.amazonaws.com:8443/topics/topicname?qos=1"

這里的問題是,由於您可以將數據發送到AWS IoT的方式多種多樣,因此您的兩個命令都有些不同。

curl命令中,您實際上是在使用x.509證書方法(您可以在此處查看更多信息: https : //docs.aws.amazon.com/iot/latest/developerguide/managing-device-certs.html )不需要對有效負載進行簽名,因為證書是受信任的,因此它已經受到信任。

該方法大多數是AWS IoT所獨有的,因為其目的是數據來自許多設備,並且您不希望為他們提供全部IAM角色。 實際上,證書是從設備發送數據的推薦方法。

如果需要, 可以將這些證書與Postman一起使用,方法是將它們添加到“證書”選項卡下的請求中(只需要.crt.key文件)。 有關更多詳細說明,請參見https://www.getpostman.com/docs/v6/postman/sending_api_requests/certificates

您仍然可以使用AWS v4簽名( https://docs.aws.amazon.com/iot/latest/developerguide/iam-users-groups-roles.html ),因此建議您使用的格式不正確。

查看本文檔( https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html ),您應該使用:

方法POST

Uri<AWS IoT Endpoint>/<url_encoded_topic_name>?qos=1 (例如https://a1pn10j0v8htvw.iot.us-east-1.amazonaws.com:8443/topics/iotbutton/virtualButton?qos=1

授權類型 :AWS簽名

AccessKey / SecretKey :根據您的憑據

AWS區域 :您的AWS IoT實例所在的區域

服務名稱iotdata

會話令牌 :留空

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM