Utilizar o PowerShell para gerir recursos do Service Bus
Microsoft Azure PowerShell é um ambiente de scripting que pode utilizar para controlar e automatizar a implementação e gestão dos serviços do Azure. Este artigo descreve como utilizar o service bus Resource Manager módulo do PowerShell para aprovisionar e gerir entidades do Service Bus (espaços de nomes, filas, tópicos e subscrições) com uma consola ou script de Azure PowerShell local.
Também pode gerir entidades do Service Bus com modelos de Resource Manager do Azure. Para obter mais informações, veja o artigo Criar recursos do Service Bus com modelos do Azure Resource Manager.
Nota
Recomendamos que utilize o módulo Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Pré-requisitos
Antes de começar, precisará dos seguintes pré-requisitos:
- Uma subscrição do Azure. Para obter mais informações sobre como obter uma subscrição, veja opções de compra, ofertas de membros ou conta gratuita.
- Um computador com Azure PowerShell. Para obter instruções, consulte Introdução aos cmdlets Azure PowerShell.
- Uma compreensão geral dos scripts do PowerShell, dos pacotes NuGet e do .NET Framework.
Introdução
O primeiro passo é utilizar o PowerShell para iniciar sessão na sua conta do Azure e na subscrição do Azure. Siga as instruções em Introdução ao Azure PowerShell cmdlets para iniciar sessão na sua conta do Azure e obter e aceder aos recursos na sua subscrição do Azure.
Aprovisionar um espaço de nomes do Service Bus
Ao trabalhar com espaços de nomes do Service Bus, pode utilizar os cmdlets Get-AzServiceBusNamespace, New-AzServiceBusNamespace, Remove-AzServiceBusNamespace e Set-AzServiceBusNamespace .
Este exemplo cria algumas variáveis locais no script; $Namespace
e $Location
.
$Namespace
é o nome do espaço de nomes do Service Bus com o qual queremos trabalhar.$Location
identifica o datacenter no qual aprovisionamos o espaço de nomes.$CurrentNamespace
armazena o espaço de nomes de referência que obtemos (ou criamos).
Num script real, $Namespace
e $Location
pode ser transmitido como parâmetros.
Esta parte do script faz o seguinte:
Tenta obter um espaço de nomes do Service Bus com o nome especificado.
Se o espaço de nomes for encontrado, comunica o que foi encontrado.
Se o espaço de nomes não for encontrado, cria o espaço de nomes e, em seguida, obtém o espaço de nomes criado recentemente.
# 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." }
Criar uma regra de autorização de espaço de nomes
O exemplo seguinte mostra como gerir regras de autorização de espaço de nomes com os cmdlets New-AzServiceBusAuthorizationRule, Get-AzServiceBusAuthorizationRule, Set-AzServiceBusAuthorizationRule e 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
}
Criar uma fila
Para criar uma fila ou tópico, execute uma verificação de espaço de nomes com o script na secção anterior. Em seguida, crie a fila:
# 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."
}
Modificar as propriedades da fila
Depois de executar o script na secção anterior, pode utilizar o cmdlet Set-AzServiceBusQueue para atualizar as propriedades de uma fila, como no exemplo seguinte:
$CurrentQ.DeadLetteringOnMessageExpiration = $True
$CurrentQ.MaxDeliveryCount = 7
$CurrentQ.MaxSizeInMegabytes = 2048
$CurrentQ.EnableExpress = $True
Set-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName -QueueObj $CurrentQ
Aprovisionar outras entidades do Service Bus
Pode utilizar o módulo PowerShell do Service Bus para aprovisionar outras entidades, como tópicos e subscrições. Estes cmdlets são sintaticamente semelhantes aos cmdlets de criação de filas demonstrados na secção anterior.
Passos seguintes
- Veja a documentação completa do módulo do Service Bus Resource Manager PowerShell aqui. Esta página lista todos os cmdlets disponíveis.
- Para obter informações sobre como utilizar modelos do Azure Resource Manager, veja o artigo Criar recursos do Service Bus com modelos do Azure Resource Manager.
- Informações sobre bibliotecas de gestão .NET do Service Bus.
Existem algumas formas alternativas de gerir entidades do Service Bus, conforme descrito nestas mensagens de blogue: