HTTP - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

HTTP

客户端可使用 HTTP 1.0 或 1.1 协议向 REST API 发出请求来发布消息。有关 HTTP 请求使用的身份验证和端口映射,请参阅协议、端口映射和身份验证

注意

与 MQTT 不同,HTTPS 不支持 clientId 值。因此,虽然在使用 MQTT 时 clientId 可用,但在使用 HTTPS 时不可用。

HTTP URL

发布客户端会向特定于客户端的终端节点和特定于主题的 URL 发出 POST 请求:https://AWS IoT endpoint/topics/url_encoded_topic_name?qos=1"

  • AWS IoT endpoint 是 REST API 终端节点。您可以在 AWS IoT 控制台中的事物详细信息页面上或使用 AWS IoT CLI 命令在客户端上查找终端节点:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    终端节点看起来应如下所示:a3qj468xinsffp-ats.iot.us-west-2.amazonaws.com

  • url_encoded_topic_name 是正在发送的消息的完整主题名称

Curl 示例

您可以使用 curl 模拟向 AWS IoT Core 发送消息的客户端。

使用 curl 从 AWS IoT Core 客户端设备发送消息

  1. 查看 curl 版本。

    1. 在客户端上,在命令提示符下运行此命令。

      curl --help

      在帮助文本中,查找 TLS 选项。您应看到 --tlsv1.2 选项。

    2. 如果您看到 --tlsv1.2 选项,请继续操作。

    3. 如果您没有看到 --tlsv1.2 选项或收到 command not found 错误,请先在客户端上更新或安装 curl,然后再继续。

  2. 在客户端上安装证书。

    复制您在 AWS IoT 控制台中注册客户端(事物)时创建的证书文件。请先确保客户端上有这三个证书文件,然后再继续。

    • 客户端的私有密钥文件(此示例中为 private.key)。

    • 客户端的证书文件(此示例中为 certificate.pem.crt)。

    • CA 证书文件(此示例中为 AmazonRootCA1.pem)。

  3. 创建 curl 命令行。

    curl --tlsv1.2 --cacert AmazonRootCA1.pem --cert certificate.pem.crt --key private.key -X POST -d "{ \"message\": \"Hello, world\" }" "https://AWS IoT Endpoint:8443/topics/topic?qos=1"

    --tlsv1.2

    使用 TLS 1.2 (SSL)。

    --cacert <filename>

    用于验证对等方的 CA 证书的文件名和路径(如有必要)。

    --cert <filename>

    客户端的证书文件名和路径(如有必要)。

    --key <filename>

    客户端的私有密钥文件名和路径(如有必要)。

    -X POST

    HTTP 请求的类型(此示例中为 POST)。

    -d <data>

    要发布的 HTTP POST 数据。在此示例中,它是一个 JSON 字符串,其内部引号通过反斜杠字符 (\) 进行转义。

    "https://AWS IoT endpoint:8443/topics/topic?qos=1"

    客户端的 REST API 终端节点的 URL,后跟 HTTPS 端口 :8443,它后跟关键字 /topics/ 和主题名称 topic(在此示例中)。指定服务质量作为查询参数 ?qos=1

  4. 在控制台中打开 MQTT 测试客户端。

    按照使用 AWS IoT MQTT 客户端查看 MQTT 消息中的说明执行操作,将控制台配置为订阅主题名称为 topic 的消息或使用通配符主题筛选条件 #

  5. 测试命令。

    在 AWS IoT 控制台的测试客户端中监控主题时,请转到客户端并发出您在步骤 3 中创建的 curl 命令行。控制台中应显示客户端的消息。