Zarządzanie zasobami usługi Service Bus przy użyciu programu PowerShell

Microsoft Azure PowerShell to środowisko skryptowe, którego można użyć do kontrolowania i automatyzowania wdrażania i zarządzania usługami platformy Azure. W tym artykule opisano, jak za pomocą modułu Service Bus Resource Manager PowerShell aprowizować jednostki usługi Service Bus (przestrzenie nazw, kolejki, tematy i subskrypcje) przy użyciu lokalnej konsoli lub skryptu Azure PowerShell.

Jednostki usługi Service Bus można również zarządzać przy użyciu szablonów usługi Azure Resource Manager. Aby uzyskać więcej informacji, zobacz artykuł Tworzenie zasobów usługi Service Bus przy użyciu szablonów usługi Azure Resource Manager.

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wymagania wstępne

Przed rozpoczęciem będziesz potrzebować następujących wymagań wstępnych:

Rozpoczęcie pracy

Pierwszym krokiem jest zalogowanie się do konta platformy Azure i subskrypcji platformy Azure przy użyciu programu PowerShell. Postępuj zgodnie z instrukcjami w temacie Wprowadzenie do poleceń cmdlet Azure PowerShell, aby zalogować się do konta platformy Azure, a następnie pobrać i uzyskać dostęp do zasobów w subskrypcji platformy Azure.

Aprowizuj przestrzeń nazw usługi Service Bus

Podczas pracy z przestrzeniami nazw usługi Service Bus można użyć poleceń cmdlet Get-AzServiceBusNamespace, New-AzServiceBusNamespace, Remove-AzServiceBusNamespace i Set-AzServiceBusNamespace.

W tym przykładzie w skrycie jest tworzonych kilka zmiennych lokalnych; $Namespace i $Location.

  • $Namespace to nazwa przestrzeni nazw usługi Service Bus, z którą chcemy pracować.
  • $Location identyfikuje centrum danych, w którym aprowizujemy przestrzeń nazw.
  • $CurrentNamespace przechowuje przestrzeń nazw odwołania, którą pobieramy (lub tworzymy).

W rzeczywistym skryscie $Namespace$Location można przekazać jako parametry.

Ta część skryptu wykonuje następujące czynności:

  1. Próbuje pobrać przestrzeń nazw usługi Service Bus o określonej nazwie.

  2. Jeśli przestrzeń nazw zostanie znaleziona, zgłasza znalezione elementy.

  3. Jeśli przestrzeń nazw nie zostanie znaleziona, utworzy przestrzeń nazw, a następnie pobierze nowo utworzoną przestrzeń nazw.

     # 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."
    
    }
    

Tworzenie reguły autoryzacji przestrzeni nazw

W poniższym przykładzie pokazano, jak zarządzać regułami autoryzacji przestrzeni nazw przy użyciu poleceń cmdlet New-AzServiceBusAuthorizationRule, Get-AzServiceBusAuthorizationRule i 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
}

Tworzenie kolejki

Aby utworzyć kolejkę lub temat, wykonaj sprawdzanie przestrzeni nazw przy użyciu skryptu w poprzedniej sekcji. Następnie utwórz kolejkę:

# 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."
}

Modyfikowanie właściwości kolejki

Po wykonaniu skryptu w poprzedniej sekcji możesz użyć polecenia cmdlet Set-AzServiceBusQueue , aby zaktualizować właściwości kolejki, jak w poniższym przykładzie:

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

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

Aprowizowanie innych jednostek usługi Service Bus

Za pomocą modułu Programu PowerShell usługi Service Bus można aprowizować inne jednostki, takie jak tematy i subskrypcje. Te polecenia cmdlet są składniowo podobne do poleceń cmdlet tworzenia kolejek przedstawionych w poprzedniej sekcji.

Następne kroki

Istnieje kilka alternatywnych sposobów zarządzania jednostkami usługi Service Bus, zgodnie z opisem w następujących wpisach w blogu: