Управление ресурсами служебной шины с помощью модуля PowerShell
Microsoft Azure PowerShell — это среда сценариев, которую можно использовать для контроля и автоматизации развертывания служб Azure, а также для управления ими. В этой статье описывается использование модуля PowerShell для диспетчера ресурсов Resource Manager служебной шины для подготовки и управления сущностями служебной шины (пространством имен, очередями, разделами и подписками) с помощью локальной консоли или сценария Azure PowerShell.
Сущностями служебной шины можно также управлять с помощью шаблонов Azure Resource Manager. Дополнительные сведения см. в статье Создание ресурсов служебной шины с использованием шаблонов Azure Resource Manager.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Необходимые компоненты
Перед началом работы проверьте следующие необходимые компоненты:
- Подписка Azure. Дополнительные сведения о получении подписки см. на страницах Как приобрести Azure, Предложения для участников или Создайте бесплатную учетную запись Azure уже сегодня.
- Компьютер с Azure PowerShell. Инструкции см. в статье Приступая к работе с командлетами Azure PowerShell.
- Общее представление о сценариях PowerShell, пакетах NuGet и платформе .NET Framework.
Начать
Сначала мы используем PowerShell для входа в учетную запись Azure и подписку Azure. Выполните инструкции, приведенные в статье Приступая к работе с командлетами Azure PowerShell, чтобы войти в учетную запись Azure, а также получить и просмотреть ресурсы в подписке Azure.
Подготовка пространства имен Service Bus
При работе с пространствами имен служебной шины можно использовать командлеты Get-AzServiceBusNamespace, New-AzServiceBusNamespace, Remove-AzServiceBusNamespace и Set-AzServiceBusNamespace.
В этом примере мы создадим несколько локальных переменных в сценарии, в частности $Namespace
и $Location
.
$Namespace
— имя пространства имен служебной шины, которое мы будем использовать.$Location
— центр обработки данных, в котором мы подготовим пространство имен к работе.$CurrentNamespace
— место хранения полученного (или созданного) исходного пространства имен.
В фактическом сценарии переменные $Namespace
и $Location
могут передаваться как параметры.
Эта часть сценария выполняет следующее:
Пытается получить пространство имен служебной шины с заданным именем.
Если пространство имен найдено, появляется сообщение о том, что именно нашел сценарий.
Если пространство имен не найдено, сценарий создает его и возвращает созданное пространство.
# Query to see if the namespace currently exists $CurrentNamespace = Get-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace # Check if the namespace already exists or needs to be created if ($CurrentNamespace) { Write-Host "The namespace $Namespace already exists in the $Location region:" # Report what was found Get-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace } else { Write-Host "The $Namespace namespace does not exist." Write-Host "Creating the $Namespace namespace in the $Location region..." New-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace -Location $Location $CurrentNamespace = Get-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace Write-Host "The $Namespace namespace in Resource Group $ResGrpName in the $Location region has been successfully created." }
Создание правила авторизации для пространства имен
В следующем примере демонстрируется, как управлять правилами авторизации пространства имен с помощью командлетов New-AzServiceBusAuthorizationRule, Get-AzServiceBusAuthorizationRule, Set-AzServiceBusAuthorizationRule и Remove-AzServiceBusAuthorizationRule.
# Query to see if rule exists
$CurrentRule = Get-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule
# Check if the rule already exists or needs to be created
if ($CurrentRule)
{
Write-Host "The $AuthRule rule already exists for the namespace $Namespace."
}
else
{
Write-Host "The $AuthRule rule does not exist."
Write-Host "Creating the $AuthRule rule for the $Namespace namespace..."
New-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule -Rights @("Listen","Send")
$CurrentRule = Get-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule
Write-Host "The $AuthRule rule for the $Namespace namespace has been successfully created."
Write-Host "Setting rights on the namespace"
$authRuleObj = Get-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule
Write-Host "Remove Send rights"
$authRuleObj.Rights.Remove("Send")
Set-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthRuleObj $authRuleObj
Write-Host "Add Send and Manage rights to the namespace"
$authRuleObj.Rights.Add("Send")
Set-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthRuleObj $authRuleObj
$authRuleObj.Rights.Add("Manage")
Set-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthRuleObj $authRuleObj
Write-Host "Show value of primary key"
$CurrentKey = Get-AzServiceBusKey -ResourceGroup $ResGrpName -NamespaceName $Namespace -Name $AuthRule
Write-Host "Remove this authorization rule"
Remove-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -Name $AuthRule
}
Создать очередь
Чтобы создать очередь или раздел, с помощью сценария проверьте пространство имен, как описано в предыдущем разделе. Затем создайте очередь.
# Check if queue already exists
$CurrentQ = Get-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName
if($CurrentQ)
{
Write-Host "The queue $QueueName already exists in the $Location region:"
}
else
{
Write-Host "The $QueueName queue does not exist."
Write-Host "Creating the $QueueName queue in the $Location region..."
New-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName
$CurrentQ = Get-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName
Write-Host "The $QueueName queue in Resource Group $ResGrpName in the $Location region has been successfully created."
}
Изменение свойств очереди
После выполнения скрипта из предыдущего раздела можно использовать командлет Set-AzServiceBusQueue для обновления свойств очереди, как показано в следующем примере:
$CurrentQ.DeadLetteringOnMessageExpiration = $True
$CurrentQ.MaxDeliveryCount = 7
$CurrentQ.MaxSizeInMegabytes = 2048
$CurrentQ.EnableExpress = $True
Set-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName -QueueObj $CurrentQ
Подготовка других сущностей Service Bus
Можно использовать модуль PowerShell для служебной шины для подготовки других сущностей, таких как разделы и подписки. Эти командлеты синтаксически аналогичны командлетам создания очередей, показанным в предыдущем разделе.
Следующие шаги
- С полной документацией по модулю Resource Manager PowerShell для служебной шины можно ознакомиться здесь. На этой странице перечислены все доступные командлеты.
- Дополнительные сведения об использовании шаблонов Azure Resource Manager см. в статье Создание ресурсов служебной шины с использованием шаблонов Azure Resource Manager.
- Сведения о библиотеках управления служебной шины .NET.
Существуют альтернативные способы управления сущностями служебной шины, как описано в следующих блогах.