【问题标题】:HTTP POST to AWS IoTHTTP POST 到 AWS IoT
【发布时间】:2018-10-16 15:59:10
【问题描述】:

我想将 HTTP 设备连接到 IoT 核心。

我已经用 curl 命令尝试了this 一切顺利。

现在我想尝试将 POST 与 signatyure version 4 一起使用

我正在使用 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"

【问题讨论】:

    标签: amazon-web-services post postman aws-iot


    【解决方案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

    会话令牌:留空

    【讨论】:

    • 感谢您的回复,最后我得到了尝试各种 Uri 和主机组合的解决方案。 Uri 就像你说的那样,主机只是 。现在的问题是,使用 GET 可以做到这一点吗?我可以使用 POST 参数中的 GET 向 IoT 设备发送消息吗?
    • 您必须POST 来更新设备(GET 会是一个奇怪的动词来进行更改),但是您可以获得任何发布到阴影使用:https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_GetThingShadow.html。注意你不能 GET 任何主题的消息,因为这不是代理的工作方式——你必须在 websocket 上监听。
    猜你喜欢
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2019-09-03
    • 2018-09-26
    • 1970-01-01
    • 2022-06-12
    • 2018-05-04
    相关资源
    最近更新 更多