Подписка на событие IoT Azure с шаблоном ARM - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь развернуть подписку на событие, подключенное к устройству Azure IoT, в очередь хранения Azure, используя шаблон ARM и PowerShell.Я использовал следующий шаблон для развертывания этого.Кроме того, я прочитал много статей о Microsoft.Но не смог найти никакого решения.Пожалуйста, помогите мне разобраться.

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

Ошибка показывает как enter image description here

Ответы [ 2 ]

1 голос
/ 25 июня 2019
  1. Ошибка, с которой вы столкнулись, связана с указанным вами свойством dependsOn.

    С MS документация

    Ресурсы, которые должны быть развернуты до развертывания этого ресурса. Resource Manager оценивает зависимости между ресурсами и развертывает их в правильном порядке. Когда ресурсы не зависят друг от друга, они развертываются параллельно. Значение может быть разделенным запятыми списком имен ресурсов или уникальных идентификаторов ресурсов. Перечислять только ресурсы, развернутые в этом шаблоне. Ресурсы, которые не определены в этом шаблоне, уже должны существовать. Избегайте добавления ненужных зависимостей, поскольку они могут замедлить развертывание и создать циклические зависимости. Инструкции по настройке зависимостей см. В Определение зависимостей в шаблонах Azure Resource Manager .

    .

    Таким образом, ресурс, который не определен в шаблоне ARM, нельзя использовать в свойстве DependsOn.

  2. Вот документация, связанная с созданием подписки на событие:

    Шаблон шаблона подписок на события Microsoft.EventGrid

    Примеров того, как создать подписку на событие, не так много, но вы можете извлечь некоторую часть шаблона из портала Azure:

    • Нажмите + Event Subscription enter image description here

    • Заполните детали enter image description here

    • Нажмите ссылку Advanced Editor button в правом верхнем углу. enter image description here

    • Он покажет вам некоторые детали, необходимые для создания вашего шаблона ARM enter image description here

Вот как может выглядеть пример шаблона 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"
      }
    }
]
0 голосов
/ 24 июня 2019

Некоторые функции либо не будут работать, либо недоступны в шаблоне.Что вы можете сделать, так это запустить скрипт powershell для запуска после выполнения шаблона.если вы используете AzureDevOps (VSTS), вы можете добавить еще один шаг после выполнения шаблона для запуска ваших сценариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...