通过 Azure IoT 中心的 API 访问读取模块孪生数据?

Access to read module twin data via Azure IoT Hub's APIs?

我希望能够像 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 或其他软件中)。

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

我试过创建共享访问签名并将其用作 header,就像这样...

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

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

我错过了什么吗?也许是我使用该 SAS 获取一些额外凭证之类的步骤?

或者我可能无法创建适用于任何 device-id 的 SAS?

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

您所指的 API 已记录在案 here. You're doing the right thing, but perhaps your method of creating a Shared Access Signature isn't working. One easy way to create a valid SAS token is by using the az cli commandaz iot hub generate-sas-token -n <iot-hub-name>。默认情况下,它将为 iothubowner 策略创建一个令牌,这应该允许您访问模块孪生。

我使用 Postman,如您提到的授权 header 检查我的设备 $edgeHub 模块的双胞胎:

https://<my-iot-hub>.azure-devices.net/twins/<device-id>/modules/$edgeHub?api-version=2020-05-31-preview