我希望能够像 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 中心设备报告模块孪生的属性。没有设定,没有订阅。
uj5u.com热心网友回复:
您所指的 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
0 评论