使用 Azure Resource Manager 模板为命名空间和队列创建服务总线授权规则

本文介绍如何使用为服务总线命名空间和队列创建授权规则的 Azure Resource Manager 模板。 本文介绍如何指定要部署的资源以及如何定义执行部署时指定的参数。 可将此模板用于自己的部署,或自定义此模板以满足要求。

有关创建模板的详细信息,请参阅 创作 Azure Resource Manager 模板

有关完整的模板,请参阅 GitHub 上的服务总线授权规则模板

将部署什么内容?

利用此模板,将为命名空间和消息传送实体(在此示例中为队列)部署服务总线授权规则。

此模板使用共享访问签名 (SAS) 进行身份验证。SAS 使应用程序能够使用在命名空间或在关联了特定权限的消息传送实体(队列或主题)上配置的访问密钥向服务总线进行身份验证。然后可以使用此密钥生成 SAS 令牌,客户端反过来可用它向服务总线进行身份验证。

若要自动运行部署,请单击以下按钮:

部署到 Azure

Parameters

使用 Azure 资源管理器,可以定义在部署模板时想要指定的值的参数。 该模板具有一个名为 Parameters 的部分,其中包含所有参数值。 应该为随着要部署的项目或要部署到的环境而变化的值定义参数。 不要为永远保持不变的值定义参数。 每个参数值可在模板中用来定义所部署的资源。

模板定义以下参数。

serviceBusNamespaceName

要创建的服务总线命名空间的名称。

    "serviceBusNamespaceName": {
    "type": "string"
    }

namespaceAuthorizationRuleName

命名空间的授权规则的名称。

    "namespaceAuthorizationRuleName ": {
    "type": "string"
    }

serviceBusQueueName

服务总线命名空间中的队列的名称。

    "serviceBusQueueName": {
    "type": "string"
    }

serviceBusApiVersion

模板的服务总线 API 版本。

"serviceBusApiVersion": { 
       "type": "string", 
       "defaultValue": "2017-04-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": "Standard",
                },
                "resources": [
                    {
                        "apiVersion": "[variables('sbVersion')]",
                        "name": "[parameters('serviceBusQueueName')]",
                        "type": "Queues",
                        "dependsOn": [
                            "[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"
                        ],
                        "properties": {
                            "path": "[parameters('serviceBusQueueName')]"
                        },
                        "resources": [
                            {
                                "apiVersion": "[variables('sbVersion')]",
                                "name": "[parameters('queueAuthorizationRuleName')]",
                                "type": "authorizationRules",
                                "dependsOn": [
                                    "[parameters('serviceBusQueueName')]"
                                ],
                                "properties": {
                                    "Rights": ["Listen"]
                                }
                            }
                        ]
                    }
                ]
            }, {
                "apiVersion": "[variables('sbVersion')]",
                "name": "[variables('namespaceAuthRuleName')]",
                "type": "Microsoft.ServiceBus/namespaces/authorizationRules",
                "dependsOn": ["[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"],
                "location": "[resourceGroup().location]",
                "properties": {
                    "Rights": ["Send"]
                }
            }
        ]

运行部署的命令

要将资源部署到 Azure,必须登录到 Azure 帐户,并且必须使用 Azure Resource Manager 模块。 若要了解配合使用 Azure Resource Manager 和 Azure PowerShell 或 Azure CLI 的相关信息,请参阅:

以下示例假定帐户中已具有一个指定名称的资源组。

PowerShell

New-AzureRmResourceGroupDeployment -ResourceGroupName \<resource-group-name\> -TemplateFile <https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/301-servicebus-create-authrule-namespace-and-queue/azuredeploy.json>

Azure CLI

azure config mode arm

azure group deployment create \<my-resource-group\> \<my-deployment-name\> --template-uri <https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/301-servicebus-create-authrule-namespace-and-queue/azuredeploy.json>

后续步骤

现在,已使用 Azure 资源管理器创建并部署了资源,请通过查看以下文章了解如何管理这些资源: