Partilhar via


Usar o PowerShell para gerenciar recursos do Service Bus

O Microsoft Azure PowerShell é um ambiente de script que você pode usar para controlar e automatizar a implantação e o gerenciamento dos serviços do Azure. Este artigo descreve como usar o módulo PowerShell do Service Bus Resource Manager para provisionar e gerenciar entidades do Service Bus (namespaces, filas, tópicos e assinaturas) usando um console ou script local do Azure PowerShell.

Você também pode gerenciar entidades do Service Bus usando modelos do Azure Resource Manager. Para obter mais informações, consulte o artigo Criar recursos do Service Bus usando modelos do Azure Resource Manager.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. 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, você precisará dos seguintes pré-requisitos:

  • Uma subscrição do Azure. Para obter mais informações sobre como obter uma assinatura, consulte Opções de compra, ofertas para membros ou conta gratuita.
  • Um computador com o Azure PowerShell. Para obter instruções, consulte Introdução aos cmdlets do Azure PowerShell.
  • Uma compreensão geral de scripts do PowerShell, pacotes NuGet e o .NET Framework.

Começar agora

A primeira etapa é usar o PowerShell para fazer logon em sua conta do Azure e na assinatura do Azure. Siga as instruções em Introdução aos cmdlets do Azure PowerShell para iniciar sessão na sua conta do Azure e recuperar e aceder aos recursos na sua subscrição do Azure.

Provisionar um namespace do Service Bus

Ao trabalhar com namespaces do Service Bus, você pode usar 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 namespace do Service Bus com o qual queremos trabalhar.
  • $Location Identifica o data center no qual provisionamos o namespace.
  • $CurrentNamespace Armazena o namespace de referência que recuperamos (ou criamos).

Em um script real, $Namespace e $Location pode ser passado como parâmetros.

Esta parte do script faz o seguinte:

  1. Tenta recuperar um namespace do Service Bus com o nome especificado.

  2. Se o namespace for encontrado, ele relatará o que foi encontrado.

  3. Se o namespace não for encontrado, ele criará o namespace e, em seguida, recuperará o namespace recém-criado.

     # 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 namespace

O exemplo a seguir mostra como gerenciar regras de autorização de namespace usando 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 namespace usando o script na seçã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 propriedades da fila

Depois de executar o script na seção anterior, você pode usar o cmdlet Set-AzServiceBusQueue para atualizar as propriedades de uma fila, como no exemplo a seguir:

$CurrentQ.DeadLetteringOnMessageExpiration = $True
$CurrentQ.MaxDeliveryCount = 7
$CurrentQ.MaxSizeInMegabytes = 2048
$CurrentQ.EnableExpress = $True

Set-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName -QueueObj $CurrentQ

Provisionamento de outras entidades do Service Bus

Você pode usar o módulo PowerShell do Service Bus para provisionar outras entidades, como tópicos e assinaturas. Esses cmdlets são sintaticamente semelhantes aos cmdlets de criação de fila demonstrados na seção anterior.

Próximos passos

Há algumas maneiras alternativas de gerenciar entidades do Service Bus, conforme descrito nestas postagens de blog: