1

我希望能够像 Azure 门户一样通过 HTTPS GET 请求拉取 IoT Edge 设备的模块孪生。在传送门中,我看到了这个射击……

https://my-hub.azure-devices.net/twins/my-device/modules/my-module?api-version=2020-09-30&_=164130947416

...并返回 JSON。我想在门户之外做同样的事情(比如在 Postman 或其他东西中)。

显然,通过登录到门户,我拥有允许这样做的凭据。

我试过创建一个共享访问签名并将其用作像这样的标题......

"Authorization": "SharedAccessSignature sr=my-hub.azure-devices.net&sig=...

...但我回来了ErrorCode:IotHubUnauthorizedAccess;Unauthorized

我错过了什么吗?也许是我使用该 SAS 获得一些额外的凭证或其他什么的步骤?

或者也许我无法创建一个适用于任何 SAS 的 SAS device-id

最后,我希望能够GET从我的任何 IoT 中心设备报告模块孪生的属性。没有设置,没有订阅。

4

1 回答 1

0

您所指的 API 记录在此处。您正在做正确的事情,但您创建共享访问签名的方法可能不起作用。创建有效 SAS 令牌的一种简单方法是使用az cli 命令az iot hub generate-sas-token -n <iot-hub-name>. 默认情况下,它将为iothubowner策略创建一个令牌,这应该使您可以访问模块孪生。

我使用 Postman 和您提到的 Authorization 标头来检查我的设备 $edgeHub 模块的双胞胎:

https://<my-iot-hub>.azure-devices.net/twins/<device-id>/modules/$edgeHub?api-version=2020-05-31-preview
于 2022-01-04T17:27:20.490 回答