我有一个现有的服务总线,其中一个队列和事件中心使用 Azure 资源管理器部署。
现在我有兴趣在不使用 ServiceBus.dll 的情况下使用 Azure PowerShell 检索主键和连接字符串。可能吗??
作为一种解决方法,我创建了一个 ARM 模板,它不部署任何东西,只是查询现有资源并检索我需要的信息。以下模板检索特定服务总线命名空间的事件中心/队列的连接字符串和主键
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"serviceBusNamespace": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "The name of the service bus namespace to create."
}
},
"resourceName": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "The name of the resource to be retreived."
}
},
"resourceType": {
"type": "string",
"minLength": 1,
"allowedValues": [
"queues",
"eventhubs"
],
"metadata": {
"description": "The type of the resource"
}
},
"policy": {
"type": "string",
"minLength": 1,
"defaultValue": "ManagePolicy",
"allowedValues": [
"ManagePolicy",
"SendPolicy",
"ListenPolicy"
],
"metadata": {
"description": "The type of the resource"
}
}
},
"variables": {
},
"resources": [ ],
"outputs": {
"connectionString": {
"type": "string",
"value": "[listKeys(resourceId(concat('Microsoft.ServiceBus/namespaces/',parameters('resourceType'),'/authorizationRules'),parameters('serviceBusNamespace'),parameters('resourceName'),parameters('policy')),'2015-08-01').primaryConnectionString]"
},
"primaryKey": {
"type": "string",
"value": "[listKeys(resourceId(concat('Microsoft.ServiceBus/namespaces/',parameters('resourceType'),'/authorizationRules'),parameters('serviceBusNamespace'),parameters('resourceName'),parameters('policy')),'2015-08-01').primaryKey]"
}
}
}
使用 ARM 模板查询资源而不实际部署任何东西是否滥用?
编辑 要在 PowerShell 中捕获 ARM 模板的输出,请使用以下代码
$ep = New-AzureRmResourceGroupDeployment -Name "getEventHub" -ResourceGroupName myResourceGroup -Mode Incremental -TemplateFile getEventHub.json -TemplateParameterFile getEventHub.param.json
$RuleConnString = $ep.Outputs.connectionString.value
$RulePrimaryKey = $ep.Outputs.primaryKey.value
请注意,属性名称connectionString和primaryKey与我的模板文件中定义的相同
编辑 2 如果我再次运行 ARM 模板以第二次部署事件中心,则会收到以下错误。
除了使用 ARM 模板查询详细信息外,我找不到任何选项。