Пространство имен ресурса развертывания шаблона ARM не найдено - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть пользовательский шаблон ARM, который развертывает пространство имен EventHub с дочерним EventHub, который в свою очередь имеет два AuthorizationRules и одну ConsumerGroup в качестве дочерних. Проверка прошла успешно, но я получил ошибку развертывания. Похоже, что Azure Resource Manager начинает с попытки развертывания Правил авторизации еще до того, как пространство имен даже существует, хотя я добавил требуемые свойства "зависящие от", но затем развертывание продолжается от начала до конца sh и успешно развертывает каждый ресурс. Это может быть допустимо, если я разверну его только с портала, но при развертывании этого шаблона программным путем я получаю сообщение об ошибке, даже если развертывание прошло «успешно» и мой механизм отката срабатывает.

Вот ссылки на ошибки, выданные порталом:

Шаги развертывания

Сообщения об ошибках

Вот мой шаблон ARM (комментарии есть только чтобы помочь вам найти ресурсы):

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "namespaceName": {
      "type": "string"
    },
    "eventHubName": {
      "type": "string"
    }
  },

  "variables": {
    "SharedAccessKeyName": "Event-Dispatcher-Send-Access-Key",
    "ReadOnlySharedAccessKeyName": "Plugin-Listen-Access-Key",
    "ConsumerGroup": "plugin"
  },

  "resources": [
    {
      // Event Hub Namespace
      "type": "Microsoft.EventHub/namespaces",
      "apiVersion": "2018-01-01-preview",
      "name": "[parameters('namespaceName')]",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard",
        "tier": "Standard",
        "capacity": 1
      },
      "properties": {
        "zoneRedundant": false,
        "isAutoInflateEnabled": false,
        "maximumThroughputUnits": 0,
        "kafkaEnabled": true
      },
      "resources": [
        {
          // Event Hub
          "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'))]",
          "type": "Microsoft.EventHub/namespaces/eventhubs",
          "apiVersion": "2017-04-01",
          "location": "[resourceGroup().location]",
          "properties": {
            "messageRetention": 1
          },
          "dependsOn": [
            "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]"
          ],
          "resources": [
            {
              // Shared Access Key
              "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'), '/', variables('SharedAccessKeyName'))]",
              "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
              "apiVersion": "2017-04-01",
              "dependsOn": [
                "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]",
                "[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('namespaceName'), parameters('eventHubName'))]"
              ],
              "properties": {
                "rights": [
                  "Send",
                  "Listen"
                ]
              }
            },
            {
              // Read-only Shared Access Key
              "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'), '/', variables('ReadOnlySharedAccessKeyName'))]",
              "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
              "apiVersion": "2017-04-01",
              "dependsOn": [
                "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]",
                "[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('namespaceName'), parameters('eventHubName'))]"
              ],
              "properties": {
                "rights": [
                  "Listen"
                ]
              }
            },
            {
              // Consumer Groups
              "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'), '/', variables('ConsumerGroup'))]",
              "type": "Microsoft.EventHub/namespaces/eventhubs/consumergroups",
              "apiVersion": "2017-04-01",
              "dependsOn": [
                "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]",
                "[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('namespaceName'), parameters('eventHubName'))]"
              ],
              "properties": {}
            }
          ]
        }
      ]
    }
  ],

  "outputs": {
    "SharedAccessKey": {
      "type": "string",
      "value": "[listKeys(concat(parameters('namespaceName'), '/', parameters('eventHubName'), '/', variables('SharedAccessKeyName')), '2017-04-01').primaryKey.value]"
    },
    "SharedAccessKeyName": {
      "type": "string",
      "value": "[variables('SharedAccessKeyName')]"
    },
    "ReadOnlySharedAccessKey": {
      "type": "string",
      "value": "[listKeys(concat(parameters('namespaceName'), '/', parameters('eventHubName'), '/', variables('ReadOnlySharedAccessKeyName')), '2017-04-01').primaryKey.value]"
    },
    "ReadOnlySharedAccessKeyName": {
      "type": "string",
      "value": "[variables('ReadOnlySharedAccessKeyName')]"
    },
    "ConsumerGroup": {
      "type": "string",
      "value": "[variables('ConsumerGroup')]"
    }
  }
}

Спасибо.

1 Ответ

0 голосов
/ 19 февраля 2020

Ниже приведен пример, аналогичный вашим требованиям, и я протестировал этот шаблон, и он работает нормально. Таким образом, вы можете изменить свой шаблон в соответствии с этим примером и заставить его работать.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "namespaceName": {
            "type": "String",
            "metadata": {
                "description": "Name of EventHub namespace"
            }
        },
        "namespaceAuthorizationRuleName": {
            "type": "String",
            "metadata": {
                "description": "Name of Namespace Authorization Rule"
            }
        },
        "isAutoInflateEnabled": {
            "defaultValue": "True",
            "allowedValues": [
                "True",
                "False"
            ],
            "type": "String",
            "metadata": {
                "description": "Enable or disable AutoInflate"
            }
        },
        "maximumThroughputUnits": {
            "defaultValue": 0,
            "minValue": 0,
            "maxValue": 20,
            "type": "Int",
            "metadata": {
                "description": "Enable or disable AutoInflate"
            }
        },
        "eventHubName": {
            "type": "String",
            "metadata": {
                "description": "Name of Event Hub"
            }
        },
        "eventhubAuthorizationRuleName": {
            "type": "String",
            "metadata": {
                "description": "Name of Eventhub Authorization Rule"
            }
        },
        "eventhubAuthorizationRuleName1": {
            "type": "String",
            "metadata": {
                "description": "Name of Eventhub Authorization Rule"
            }
        },
        "consumerGroupName": {
            "type": "String",
            "metadata": {
                "description": "Name of Consumer Group"
            }
        },
        "messageRetentionInDays": {
            "defaultValue": 1,
            "minValue": 1,
            "maxValue": 7,
            "type": "Int",
            "metadata": {
                "description": "How long to retain the data in Event Hub"
            }
        },
        "partitionCount": {
            "defaultValue": 4,
            "minValue": 2,
            "maxValue": 32,
            "type": "Int",
            "metadata": {
                "description": "Number of partitions chosen"
            }
        },
        "location": {
            "defaultValue": "[resourceGroup().location]",
            "type": "String",
            "metadata": {
                "description": "Location for all resources."
            }
        }
    },
    "variables": {
        "defaultSASKeyName": "RootManageSharedAccessKey",
        "authRuleResourceId": "[resourceId('Microsoft.EventHub/namespaces/authorizationRules', parameters('namespaceName'), variables('defaultSASKeyName'))]",
        "nsAuthorizationRuleId": "[resourceId('Microsoft.EventHub/namespaces/authorizationRules', parameters('namespaceName'), parameters('namespaceAuthorizationRuleName'))]",
        "ehAuthorizationRuleId1": "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', parameters('namespaceName'),parameters('eventHubName'), parameters('eventhubAuthorizationRuleName'))]",
        "ehAuthorizationRuleId2": "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', parameters('namespaceName'),parameters('eventHubName'), parameters('eventhubAuthorizationRuleName1'))]"
    },
    "resources": [
        {
            "type": "Microsoft.EventHub/namespaces",
            "apiVersion": "2017-04-01",
            "name": "[parameters('namespaceName')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "Standard"
            },
            "properties": {
                "isAutoInflateEnabled": true,
                "maximumThroughputUnits": 7
            },
            "resources": [
                {
                    "type": "eventhubs",
                    "apiVersion": "2017-04-01",
                    "name": "[parameters('eventHubName')]",
                    "dependsOn": [
                        "[concat('Microsoft.EventHub/namespaces/', parameters('namespaceName'))]"
                    ],
                    "properties": {
                        "messageRetentionInDays": 4,
                        "partitionCount": 4
                    },
                    "resources": [
                        {
                            "type": "consumergroups",
                            "apiVersion": "2017-04-01",
                            "name": "[parameters('consumerGroupName')]",
                            "dependsOn": [
                                "[concat('Microsoft.EventHub/namespaces/', parameters('namespaceName'),'/eventhubs/',parameters('eventHubName'))]"
                            ],
                            "properties": {
                                "userMetadata": "User Metadata"
                            }
                        },
                        {
                            "type": "authorizationRules",
                            "apiVersion": "2017-04-01",
                            "name": "[parameters('eventhubAuthorizationRuleName')]",
                            "dependsOn": [
                                "[concat('Microsoft.EventHub/namespaces/', parameters('namespaceName'),'/eventhubs/',parameters('eventHubName'))]"
                            ],
                            "properties": {
                                "rights": [
                                    "Send",
                                    "Listen",
                                    "Manage"
                                ]
                            }
                        },
                        {
                            "type": "authorizationRules",
                            "apiVersion": "2017-04-01",
                            "name": "[parameters('eventhubAuthorizationRuleName1')]",
                            "dependsOn": [
                                "[concat('Microsoft.EventHub/namespaces/', parameters('namespaceName'),'/eventhubs/',parameters('eventHubName'))]"
                            ],
                            "properties": {
                                "rights": [
                                    "Send"
                                ]
                            }
                        }
                    ]
                }
            ]
        },
        {
            "type": "Microsoft.EventHub/namespaces/AuthorizationRules",
            "apiVersion": "2017-04-01",
            "name": "[concat(parameters('namespaceName'), '/', parameters('namespaceAuthorizationRuleName'))]",
            "dependsOn": [
                "[concat('Microsoft.EventHub/namespaces/', parameters('namespaceName'))]"
            ],
            "properties": {
                "rights": [
                    "Send",
                    "Listen",
                    "Manage"
                ]
            }
        }
    ],
    "outputs": {
        "defaultNamespaceConnectionString": {
            "type": "String",
            "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]"
        },
        "defaultSharedAccessPolicyPrimaryKey": {
            "type": "String",
            "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryKey]"
        },
        "NamespaceConnectionString": {
            "type": "String",
            "value": "[listkeys(variables('nsAuthorizationRuleId'), '2017-04-01').primaryConnectionString]"
        },
        "SharedAccessPolicyPrimaryKey": {
            "type": "String",
            "value": "[listkeys(variables('nsAuthorizationRuleId'), '2017-04-01').primaryKey]"
        },
        "EventHubConnectionString": {
            "type": "String",
            "value": "[listkeys(variables('ehAuthorizationRuleId1'), '2017-04-01').primaryConnectionString]"
        },
        "EventHubSharedAccessPolicyPrimaryKey": {
            "type": "String",
            "value": "[listkeys(variables('ehAuthorizationRuleId1'), '2017-04-01').primaryKey]"
        },
        "EventHub1ConnectionString": {
            "type": "String",
            "value": "[listkeys(variables('ehAuthorizationRuleId2'), '2017-04-01').primaryConnectionString]"
        },
        "EventHub1SharedAccessPolicyPrimaryKey": {
            "type": "String",
            "value": "[listkeys(variables('ehAuthorizationRuleId2'), '2017-04-01').primaryKey]"
        }
    }
}
...