gpt4 book ai didi

azure - 使用 Azure 资源管理器模板输出 IotHub 端点

转载 作者:行者123 更新时间:2023-12-04 19:40:54 24 4
gpt4 key购买 nike

我即将编写 Azure 解决方案的部署脚本。因此,我使用资源管理器模板创建了 Azure IoTHub。这非常有效。但问题是,我需要用于进一步部署的事件中心兼容端点字符串。

参见:https://picload.org/image/rrdopcia/untitled.png

我认为,解决方案是在模板中输出它,但我无法让它工作。

我的template.json的输出部分实际上看起来像这样:

    "outputs": {
"clusterProperties": {
"value": "[reference(parameters('clusterName'))]",
"type": "object"
},
"iotHubHostName": {
"type": "string",
"value": "[reference(variables('iotHubResourceId')).hostName]"
},
"iotHubConnectionString": {
"type": "string",
"value": "[concat('HostName=', reference(variables('iotHubResourceId')).hostName, ';SharedAccessKeyName=', variables('iotHubKeyName'), ';SharedAccessKey=', listkeys(variables('iotHubKeyResource'), variables('iotHubVersion')).primaryKey)]"
}
}

这是我使用的变量:

    "variables": {
"iotHubVersion": "2016-02-03",
"iotHubResourceId": "[resourceId('Microsoft.Devices/Iothubs', parameters('iothubname'))]",
"iotHubKeyName": "iothubowner",
"iotHubKeyResource": "[resourceId('Microsoft.Devices/Iothubs/Iothubkeys', parameters('iothubname'), variables('iotHubKeyName'))]",
},

最佳答案

您可以从 ARM 模板内配置的 IoT 中心读取端点并构建如下连接字符串:

"EventHubConnectionString": "[concat('Endpoint=',reference(resourceId('Microsoft.Devices/IoTHubs',parameters('iothub_name'))).eventHubEndpoints.events.endpoint,';SharedAccessKeyName=iothubowner;SharedAccessKey=',listKeys(resourceId('Microsoft.Devices/IotHubs',parameters('iothub_name')),variables('devices_provider_apiversion')).value[0].primaryKey)]"

获取与EventHub兼容的端点的重要一点是:resourceId('Microsoft.Devices/IoTHubs',parameters('iothub_name'))).eventHubEndpoints.events.endpoint

这是从我的工作 ARM 模板中删除的。为了清楚起见,以下是有关上面变量/参数的一些详细信息:

  1. variables('devices_provider_apiversion') 为“2016-02-03”
  2. parameters('iothub_name') 是同一 ARM 模板在模板中其他位置配置的 IoT 中心的名称
  3. “listKeys”的输出返回一个关键对象数组,在我的例子中,第一项是“iothubowner”。 (...我喜欢在问题中更好地描述这一点的方法。:)

一个有用的技巧可以帮助我了解在执行 ARM 模板期间可以从资源中读取哪些内容,那就是输出整个资源,然后找到我感兴趣的属性。以下是我输出的所有详细信息的方法IoT 中心运行 ARM 模板:

"outputs": {
"iotHub": {
"value": "[reference(resourceId('Microsoft.Devices/IoTHubs',parameters('iothub_name')))]",
"type": "object"
}
}

您还可以使用此方法输出端点(除其他外)以用作其他模板的输入。

关于azure - 使用 Azure 资源管理器模板输出 IotHub 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com