Use PowerShell para administrar recursos de Service Bus
Microsoft Azure PowerShell es un entorno de scripting que puede usar para controlar y automatizar la implementación y la administración de sus servicios de Azure. En este artículo se describe cómo utilizar el módulo de PowerShell de Resource Manager de Service Bus para aprovisionar y administrar entidades de Service Bus (espacios de nombres, colas, temas y suscripciones) mediante una consola o un script de Azure PowerShell.
Las entidades de Service Bus también se pueden administrar mediante plantillas de Azure Resource Manager. Para más información, consulte el artículo Cómo crear recursos de Service Bus mediante plantillas de Azure Resource Manager.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para empezar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Prerrequisitos
Antes de empezar, tendrá que cumplir los siguientes requisitos previos:
- Suscripción a Azure. Para obtener más información sobre cómo obtener una suscripción, consulte Opciones de compra, ofertas para miembros o cuenta gratuita.
- Un equipo con Azure PowerShell. Para obtener instrucciones, consulte Introducción a los cmdlets de Azure PowerShell.
- Conocimientos generales sobre los scripts de PowerShell, paquetes de NuGet y .NET Framework.
Introducción
El primer paso es usar PowerShell para iniciar sesión en su cuenta de Azure y su suscripción de Azure. Siga las instrucciones descritas en Introducción a los cmdlets de Azure PowerShell para iniciar sesión en su cuenta de Azure y recuperar y tener acceso a los recursos de la suscripción.
Aprovisionar un espacio de nombres de Service Bus
Al trabajar con espacios de nombres de Service Bus, puede usar los cmdlets Get-AzServiceBusNamespace, New-AzServiceBusNamespace, Remove-AzServiceBusNamespace y Set-AzServiceBusNamespace.
En este ejemplo se crean algunas variables locales en el script: $Namespace
y $Location
.
$Namespace
es el nombre del espacio de nombres de Service Bus con el que queremos trabajar.$Location
identifica el centro de datos en el que aprovisionamos el espacio de nombres.$CurrentNamespace
almacena el espacio de nombres de referencia que vamos a recuperar (o crear).
En un script real, $Namespace
y $Location
se pueden pasar como parámetros.
Esta parte del script hace lo siguiente:
Intenta recuperar un espacio de nombres de Service Bus con el nombre especificado.
Si se encuentra el espacio de nombres, informa de lo que ha encontrado.
Si no se encuentra el espacio de nombres, lo crea y luego recupera el espacio de nombres recién creado.
# 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." }
Creación de una regla de autorización de espacios de nombres
En el ejemplo siguiente se muestra cómo administrar las reglas de autorización de espacios de nombres mediante los cmdlets New-AzServiceBusAuthorizationRule, Get-AzServiceBusAuthorizationRule, Set-AzServiceBusAuthorizationRule y 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
}
Creación de una cola
Para crear una cola o un tema, realice una comprobación de espacio de nombres mediante el script de la sección anterior. Después, cree la cola:
# 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."
}
Modificación de las propiedades de una cola
Después de ejecutar el script de la sección anterior, puede usar el cmdlet Set-AzServiceBusQueue para actualizar las propiedades de una cola, como en el ejemplo siguiente:
$CurrentQ.DeadLetteringOnMessageExpiration = $True
$CurrentQ.MaxDeliveryCount = 7
$CurrentQ.MaxSizeInMegabytes = 2048
$CurrentQ.EnableExpress = $True
Set-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName -QueueObj $CurrentQ
Aprovisionamiento de otras entidades de Service Bus
Puede usar el módulo de PowerShell de Service Bus para aprovisionar otras entidades, como temas y suscripciones. Estos cmdlets son sintácticamente similares a los de creación de colas que se han mostrado en la sección anterior.
Pasos siguientes
- Consulte la documentación completa del módulo de PowerShell de Resource Manager de Service Bus aquí. Esta página enumera todos los cmdlets disponibles.
- Para obtener información acerca del uso de las plantillas de Azure Resource Manager, consulte el artículo Cómo crear recursos de Service Bus mediante plantillas de Azure Resource Manager.
- Información sobre las bibliotecas de administración de .NET de Service Bus.
Hay varias formas alternativas de administrar entidades de Service Bus, tal como se describe en estas entradas de blog: