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:

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:

  1. Tenta obter um espaço de nomes do Service Bus com o nome especificado.

  2. Se o espaço de nomes for encontrado, comunica o que foi encontrado.

  3. 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

Existem algumas formas alternativas de gerir entidades do Service Bus, conforme descrito nestas mensagens de blogue: