0

私はhttps://github.com/Azure/azure-quickstart-templates/tree/master/101-servicebus-topicの例を見てきました。ここでは、ネストされたリソースループ(https://azure.microsoft.com/en-us/documentation/articles/resource-group-create-multiple/#looping-on-a-nested-resource)を使用してデプロイスクリプトを実行するときに、いくつかのトピックを作成する方法を理解しようとしています。 の値に配列を定義してから手動で行うのではなく、何らかの形でトピックを作成するのがいいでしょう。ARMテンプレートを使用して複数のサービスバストピックを作成する方法は?

展開しようとすると、次のエラーが発生します。

Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The template resource '[parameters('serviceBusTopicName')[copyIndex()]]' at line '72' column '14' is not valid. 
Copying nested resources is not supported. Please see https://aka.ms/arm-copy/#looping-on-a-nested-resource for usage details.'. 

これは私が働くことを試みたtemplate.jsonです。

"parameters": { 
"serviceBusNamespaceName": { 
    "type": "string", 
    "metadata": { 
    "description": "Name of the Service Bus namespace" 
    } 
}, 
"serviceBusTopicName": { 
    "type": "array", 
    "metadata": { 
    "description": "Name of the Topic" 
    } 
}, 
"serviceBusApiVersion": { 
    "type": "string", 
    "defaultValue": "2015-08-01", 
    "metadata": { 
    "description": "Service Bus ApiVersion used by the template" 
    }, 
    "resources": [ 
{ 
    "apiVersion": "[variables('sbVersion')]", 
    "name": "[parameters('serviceBusNamespaceName')]", 
    "type": "Microsoft.ServiceBus/Namespaces", 
    "location": "[variables('location')]", 
    "kind": "Messaging", 
    "sku": { 
    "name": "StandardSku", 
    "tier": "Standard" 
    }, 
    "resources": [ 
    { 
     "apiVersion": "[variables('sbVersion')]", 
     "name": "[parameters('serviceBusTopicName')]", 
     "type": "Topics", 
     "dependsOn": [ 
     "[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]" 
     ], 
     "properties": { 
     "path": "[parameters('serviceBusTopicName')]" 
     }, 
     "copy": { 
     "name": "datasetcopy", 
     "count": "[length(parameters('serviceBusTopicName'))]" 
     } 
    } 
    ] 
}, 

parameters.json

{"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 
"contentVersion": "1.0.0.0", 
"parameters": { 
    "serviceBusNamespaceName": { 
     "value": "ServiceBus" 
    }, 
    "serviceBusTopicName": { 
    "value": [ 
     "Person", 
     "Stadium", 
     "Team" 
    ] 
    }, 
    "serviceBusApiVersion": { 
     "value": "2015-08-01" 
    } 
} 

答えて

0

エラーメッセージ内のリンクはかなりよく、この通過します、しかし、あなたはトップレベルにリソースをプッシュする必要がありますが、ネストされたリソースのループを持つことができません、名前を使用してリソースを結合します。このテンプレートは、あなたがやろうとしているように見える何でしょう:

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    "serviceBusNamespaceName": { 
     "type": "string", 
     "metadata": { 
     "description": "Name of the Service Bus Namespace" 
     } 
    }, 
    "serviceBusTopicNames": { 
     "type": "array", 
     "metadata": { 
     "description": "Name of the Service Bus Topic" 
     } 
    } 
    }, 
    "variables": { 
    "sbVersion": "2015-08-01" 
    }, 
    "resources": [ 
    { 
     "apiVersion": "[variables('sbVersion')]", 
     "name": "[parameters('serviceBusNamespaceName')]", 
     "type": "Microsoft.ServiceBus/namespaces", 
     "location": "[resourceGroup().location]", 
     "properties": { 
     } 
    }, 
    { 
     "apiVersion": "[variables('sbVersion')]", 
     "name": "[concat(parameters('serviceBusNamespaceName'), '/', parameters('serviceBusTopicNames')[copyIndex()])]", 
     "type": "Microsoft.ServiceBus/namespaces/Topics", 
     "dependsOn": [ 
     "[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]" 
     ], 
     "copy": { 
     "name": "datasetcopy", 
     "count": "[length(parameters('serviceBusTopicNames'))]" 
     }, 
     "properties": { 
     "path": "[parameters('serviceBusTopicNames')[copyIndex()]]" 
     }, 
     "resources": [ 
     ] 
    } 
    ] 
} 
0

@Lainは、ネストされたリソースが今Check Hereでサポートされていないコピー、言ったように。複数のリソースを配備するには、そのリソースをrootに移動する必要があります。私はちょうど複数のトピックを展開するための私のPOCを完了した(名前空間が既に存在すると仮定したトピック)ここにコードがあります。トピック名をコンマで区切った文字列として渡します:

{ 
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 
"contentVersion": "1.0.0.0", 
"parameters": { 
    "serviceBusNamespaceName": { 
     "type": "string", 
     "metadata": { 
      "description": "Name of the Service Bus namespace" 
     } 
    }, 
    "serviceBusTopicName": { 
     "type": "string", 
     "metadata": { 
      "description": "Comma seperated Topic Names" 
     } 
    }, 
    "serviceBusApiVersion": { 
     "type": "string", 
     "defaultValue": "2015-08-01", 
     "metadata": { 
      "description": "Service Bus ApiVersion used by the template" 
     } 
    } 
}, 
"variables": { 
    "location": "[resourceGroup().location]", 
    "sbVersion": "[parameters('serviceBusApiVersion')]", 
    "TopicNames": "[split(parameters('serviceBusTopicName'), ',')]" 
}, 
"resources": [{ 
    "apiVersion": "[variables('sbVersion')]", 
    "name": "[concat(parameters('serviceBusNamespaceName'), '/', variables('TopicNames')[copyIndex()])]", 
    "type": "Microsoft.ServiceBus/Namespaces/Topics", 
    "copy": { 
     "name": "TopicNameCopy", 
     "count": "[length(variables('TopicNames'))]" 
    }, 
    "properties": { 
     "path": "[variables('TopicNames')[copyIndex()]]" 
    } 
}] 
} 
関連する問題