使用 Azure Resource Manager 模板创建服务总线资源

本文介绍如何使用 Azure Resource Manager 模板、PowerShell 和服务总线资源提供程序创建和部署服务总线资源。

Azure Resource Manager 模板可帮助你定义要为解决方案部署的资源,以及指定可用于为不同环境输入值的参数和变量。 此模板以 JSON 编写并包含可用于为部署构造值的表达式。 有关编写 Azure Resource Manager 模板的详细信息以及关于模板格式的讨论,请参阅 Azure Resource Manager 模板的结构和语法

Note

本文中的示例演示如何使用 Azure Resource Manager 来创建服务总线命名空间和消息实体(队列)。 有关其他模板示例,请访问 Azure 快速入门模板库并搜索“服务总线”。

服务总线 Resource Manager 模板

这些服务总线 Azure Resource Manager 模板可供下载和部署。 单击以下链接可获得有关每个链接的详细信息,其中包含指向 GitHub 上的模板的链接:

使用 PowerShell 进行部署

以下过程描述如何使用 PowerShell 部署 Azure 资源管理器模板以创建“标准”层服务总线命名空间和该命名空间中的一个队列。 本示例基于 创建包含队列的服务总线命名空间 模板。 大概的工作流如下所示:

  1. 安装 PowerShell。
  2. 创建模板和(可选)参数文件。
  3. 在 PowerShell 中,登录到 Azure 帐户。
  4. 创建新资源组(如果不存在)。
  5. 测试部署。
  6. 如果需要,设置部署模式。
  7. 部署模板。

有关部署 Azure Resource Manager 模板的完整信息,请参阅 使用 Azure Resource Manager 模板部署资源

安装 PowerShell

按照 Azure PowerShell 入门中的说明安装 Azure PowerShell。

创建模板

从 GitHub 克隆存储库或复制 201-servicebus-create-queue 模板:

{
  "$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"
      }
    },
    "serviceBusQueueName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Queue"
      }
    }
  },
  "variables": {
    "defaultSASKeyName": "RootManageSharedAccessKey",
    "authRuleResourceId": "[resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', parameters('serviceBusNamespaceName'), variables('defaultSASKeyName'))]",
    "sbVersion": "2017-04-01"
  },
  "resources": [
    {
      "apiVersion": "2017-04-01",
      "name": "[parameters('serviceBusNamespaceName')]",
      "type": "Microsoft.ServiceBus/Namespaces",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard"
      },
      "properties": {},
      "resources": [
        {
          "apiVersion": "2017-04-01",
          "name": "[parameters('serviceBusQueueName')]",
          "type": "Queues",
          "dependsOn": [
            "[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"
          ],
          "properties": {
            "lockDuration": "PT5M",
            "maxSizeInMegabytes": "1024",
            "requiresDuplicateDetection": "false",
            "requiresSession": "false",
            "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S",
            "deadLetteringOnMessageExpiration": "false",
            "duplicateDetectionHistoryTimeWindow": "PT10M",
            "maxDeliveryCount": "10",
            "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S",
            "enablePartitioning": "false",
            "enableExpress": "false"
          }
        }
      ]
    }
  ],
  "outputs": {
    "NamespaceConnectionString": {
      "type": "string",
      "value": "[listkeys(variables('authRuleResourceId'), variables('sbVersion')).primaryConnectionString]"
    },
    "SharedAccessPolicyPrimaryKey": {
      "type": "string",
      "value": "[listkeys(variables('authRuleResourceId'), variables('sbVersion')).primaryKey]"
    }
  }
}

创建参数文件(可选)

若要使用可选参数文件,请复制 201-servicebus-create-queue 文件。将 serviceBusNamespaceName 的值替换为要在此部署中创建的服务总线命名空间的名称,并将 serviceBusQueueName 的值替换为要创建的队列的名称。

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "serviceBusNamespaceName": {
            "value": "<myNamespaceName>"
        },
        "serviceBusQueueName": {
            "value": "<myQueueName>"
        },
        "serviceBusApiVersion": {
            "value": "2017-04-01"
        }
    }
}

有关详细信息,请参阅参数一文。

登录到 Azure 并设置 Azure 订阅

在 PowerShell 提示符下,运行以下命令:

    Login-AzureRmAccount -Environment $(Get-AzureRmEnvironment -Name AzureChinaCloud)

系统会提示你登录到 Azure 帐户。 登录后,运行以下命令以查看可用订阅:

    Get-AzureRMSubscription

此命令返回可用 Azure 订阅的列表。 通过运行以下命令为当前会话选择订阅。 将 <YourSubscriptionId> 替换为要使用的 Azure 订阅的 GUID:

    Set-AzureRmContext -SubscriptionID <YourSubscriptionId>

设置资源组

如果没有现有的资源组,请使用 New-AzureRmResourceGroup 命令创建新的资源组。 提供资源组的名称,以及要使用的位置。 例如:

New-AzureRmResourceGroup -Name MyDemoRG -Location "China East"

如果成功,则会显示新的资源组的摘要。

    ResourceGroupName : MyDemoRG
    Location          : chinaeast
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/<GUID>/resourceGroups/MyDemoRG

测试部署

通过运行 Test-AzureRmResourceGroupDeployment cmdlet 验证部署。 测试部署时,请提供与执行部署时所提供的完全相同的参数。

    Test-AzureRmResourceGroupDeployment -ResourceGroupName MyDemoRG -TemplateFile <path to template file>\azuredeploy.json

创建部署

若要创建新部署,请运行 New-AzureRmResourceGroupDeployment cmdlet,并在出现提示时提供必需的参数。 参数包括部署的名称、资源组的名称,以及模板文件的路径或 URL。 如果未指定 Mode 参数,则将使用默认值 Incremental。

以下命令会提示在 PowerShell 窗口中输入三个参数:

    New-AzureRmResourceGroupDeployment -Name MyDemoDeployment -ResourceGroupName MyDemoRG -TemplateFile <path to template file>\azuredeploy.json

若要改为指定参数文件,请使用以下命令:

    New-AzureRmResourceGroupDeployment -Name MyDemoDeployment -ResourceGroupName MyDemoRG -TemplateFile <path to template file>\azuredeploy.json -TemplateParameterFile <path to parameters file>\azuredeploy.parameters.json

运行部署 cmdlet 时,还可以使用内联参数。该命令如下所示:

    New-AzureRmResourceGroupDeployment -Name MyDemoDeployment -ResourceGroupName MyDemoRG -TemplateFile <path to template file>\azuredeploy.json -parameterName "parameterValue"

若要运行完整部署,请将 Mode 参数设置为 Complete:

    New-AzureRmResourceGroupDeployment -Name MyDemoDeployment -Mode Complete -ResourceGroupName MyDemoRG -TemplateFile <path to template file>\azuredeploy.json 

验证部署

如果资源已成功部署,会在 PowerShell 窗口中显示部署的摘要:

DeploymentName    : MyDemoDeployment
ResourceGroupName : MyDemoRG
ProvisioningState : Succeeded
Timestamp         : 4/19/2017 10:38:30 PM
Mode              : Incremental
TemplateLink      :
Parameters        :
                    Name             Type                       Value
                    ===============  =========================  ==========
                    serviceBusNamespaceName  String             <namespaceName>
                    serviceBusQueueName  String                 <queueName>
                    serviceBusApiVersion  String                2017-04-01

后续步骤

现在已了解用于部署 Azure Resource Manager 模板的基本工作流和命令。 有关更多详细信息,请访问以下链接: