[英]Azure IoT event subscription with ARM template
我正在嘗試使用 ARM 模板和 PowerShell 將 Azure IoT 設備連接事件訂閱部署到 Azure 存儲隊列。 我使用以下模板來部署它。 另外,我已經閱讀了很多關於微軟的文章。 但找不到任何解決方案。 請幫我弄清楚。
"resources": [
{
"type": "Microsoft.EventGrid/eventSubscriptions",
"name": "DeviceConnected",
"location": "[resourceGroup().location]",
"apiVersion": "2018-01-01",
"dependsOn": [
"[resourceId('Microsoft.Devices/IotHubs', variables('iotHubName'))]"
],
"properties": {
"destination": {
"endpointType": "storagequeue",
"properties": {
"queueName":"device-connnection-state-queue",
"resourceId": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Devices.DeviceConnected"
]
}
}
}
],
您看到的錯誤與您指定的dependsOn
屬性有關。
從MS文檔
部署此資源之前必須先部署的資源。 資源管理器評估資源之間的依賴關系,並以正確的順序部署它們。 當資源彼此不依賴時,它們將並行部署。 該值可以是資源名稱或資源唯一標識符的逗號分隔列表。 僅列出此模板中部署的資源。 該模板中未定義的資源必須已經存在。 避免添加不必要的依賴項,因為它們會減慢部署速度並創建循環依賴項。 有關設置依賴關系的指導,請參閱在Azure Resource Manager模板中定義依賴關系 。
因此,ARM模板中未定義的資源無法在DependsOn
屬性中使用。
以下是與事件訂閱創建相關的文檔:
Microsoft.EventGrid eventSubscriptions模板參考
關於如何創建事件訂閱的示例並不多,但是您可以從Azure門戶中提取模板的某些部分:
這是一個示例ARM模板的外觀:
"resources": [
{
"type": "Microsoft.Devices/IotHubs/providers/eventSubscriptions",
"apiVersion": "2019-01-01",
"name": "[concat(parameters('iotHubName'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
"location": "[resourceGroup().location]",
"properties": {
"topic": "[resourceId('Microsoft.Devices/IotHubs', parameters('iotHubName'))]",
"destination": {
"endpointType": "StorageQueue",
"properties": {
"resourceId": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
"queueName": "[parameters('queueName')]"
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Devices.DeviceConnected"
],
"advancedFilters": []
},
"labels": [],
"eventDeliverySchema": "EventGridSchema"
}
}
]
某些功能將無法使用或無法在模板中使用。 您可以做的是,在執行模板后運行Powershell腳本。 如果使用的是AzureDevOps(VSTS),則可以在模板執行后添加另一步驟來運行腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.