簡體   English   中英

使用 ARM 模板的 Azure IoT 事件訂閱

[英]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"
            ]
          }
        }
      }
],

錯誤顯示如下在此處輸入圖片說明

  1. 您看到的錯誤與您指定的dependsOn屬性有關。

    MS文檔

    部署此資源之前必須先部署的資源。 資源管理器評估資源之間的依賴關系,並以正確的順序部署它們。 當資源彼此不依賴時,它們將並行部署。 該值可以是資源名稱或資源唯一標識符的逗號分隔列表。 僅列出此模板中部署的資源。 該模板中未定義的資源必須已經存在。 避免添加不必要的依賴項,因為它們會減慢部署速度並創建循環依賴項。 有關設置依賴關系的指導,請參閱在Azure Resource Manager模板中定義依賴關系

    因此,ARM模板中未定義的資源無法在DependsOn屬性中使用。

  2. 以下是與事件訂閱創建相關的文檔:

    Microsoft.EventGrid eventSubscriptions模板參考

    關於如何創建事件訂閱的示例並不多,但是您可以從Azure門戶中提取模板的某些部分:

    • 點擊+ Event Subscription 在此處輸入圖片說明

    • 填寫詳細信息 在此處輸入圖片說明

    • 點擊右上角的Advanced Editor button鏈接 在此處輸入圖片說明

    • 它將向您顯示創建ARM模板所需的一些詳細信息 在此處輸入圖片說明

這是一個示例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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM