子 EventHub を持つ EventHub 名前空間をデプロイするカスタム ARM テンプレートがあります。これには、2 つの AuthorizationRules と 1 つの ConsumerGroup が子として含まれます。検証はパスしますが、デプロイ エラーが発生します。必要な "dependsOn" プロパティを追加したにもかかわらず、Azure Resource Manager は、名前空間が存在する前に承認規則を展開しようとすることから始めているようですが、展開は最初から最後まで続き、すべてのリソースが正常に展開されます。ポータルからデプロイするだけなら許容できるかもしれませんが、このテンプレートをプログラムでデプロイすると、デプロイが「成功」し、ロールバック メカニズムがトリガーされてもエラーが発生します。
ポータルから提供されたエラーへのリンクは次のとおりです。
これが私の 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')]"
}
}
}
ありがとうございました。