我希望能够像Azure门户一样,通过HTTPS GET请求提取物联网边缘设备的模块双胞胎。在传送门里,我看到这个开火。。。
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获得一些额外凭证或其他东西的步骤?
或者我不能创建一个适用于任何device-id
的SAS?
最后,我只想能够从我的任何IoT Hub设备中GET
模块双胞胎的报告属性。没有设置,就没有订阅。
这里介绍了您所指的API。您正在做正确的事情,但也许您创建共享访问签名的方法不起作用。创建有效SAS令牌的一种简单方法是使用az-cli命令:az iot hub generate-sas-token -n <iot-hub-name>
。默认情况下,它将为iothubowner
策略创建一个令牌,该令牌应允许您访问模块twin。
我使用Postman,使用您提到的授权标头来检查我的设备$edgeHub模块的双胞胎:
https://<my-iot-hub>.azure-devices.net/twins/<device-id>/modules/$edgeHub?api-version=2020-05-31-preview