Zarządzanie zasobami usługi Service Bus przy użyciu programu PowerShell
Microsoft Azure PowerShell to środowisko skryptowe, za pomocą którego można kontrolować i automatyzować wdrażanie usług platformy Azure i zarządzanie nimi. W tym artykule opisano sposób użycia modułu programu PowerShell usługi Service Bus do aprowizowania jednostek usługi Service Bus (przestrzeni nazw, kolejek, tematów i subskrypcji) przy użyciu lokalnej konsoli lub skryptu programu 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
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. 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 należy spełnić następujące wymagania wstępne:
- Subskrypcja Azure. Aby uzyskać więcej informacji na temat uzyskiwania subskrypcji, zobacz opcje zakupu, oferty członków lub bezpłatne konto.
- Komputer z programem Azure PowerShell. Aby uzyskać instrukcje, zobacz Rozpoczynanie pracy z poleceniami cmdlet programu Azure PowerShell.
- Ogólna wiedza na temat skryptów programu PowerShell, pakietów NuGet i programu .NET Framework.
Rozpocznij
Pierwszym krokiem jest zalogowanie się do konta platformy Azure i subskrypcji platformy Azure przy użyciu programu PowerShell. Postępuj zgodnie z instrukcjami w artykule Rozpoczynanie pracy z poleceniami cmdlet programu Azure PowerShell, aby zalogować się do konta platformy Azure, a następnie pobrać i uzyskać dostęp do zasobów w ramach 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 jest tworzonych kilka zmiennych lokalnych w skrytecie; $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
można $Location
przekazać jako parametry.
Ta część skryptu wykonuje następujące czynności:
Próbuje pobrać przestrzeń nazw usługi Service Bus o określonej nazwie.
Jeśli przestrzeń nazw zostanie znaleziona, zgłasza znalezione elementy.
Jeśli przestrzeń nazw nie zostanie znaleziona, zostanie utworzona 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
Poniższy przykład przedstawia sposób zarządzania regułami autoryzacji przestrzeni nazw przy użyciu poleceń cmdlet New-AzServiceBusAuthorizationRule, Get-AzServiceBusAuthorizationRule, Set-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
}
Utwórz kolejkę
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
Możesz użyć modułu programu PowerShell usługi Service Bus, aby aprowizować inne jednostki, takie jak tematy i subskrypcje. Te polecenia cmdlet są składniowo podobne do poleceń cmdlet tworzenia kolejki przedstawionych w poprzedniej sekcji.
Następne kroki
- Zapoznaj się z pełną dokumentacją modułu programu PowerShell usługi Service Bus w usłudze Service Bus. Ta strona zawiera listę wszystkich dostępnych poleceń cmdlet.
- Aby uzyskać informacje na temat korzystania z szablonów usługi Azure Resource Manager, zobacz artykuł Tworzenie zasobów usługi Service Bus przy użyciu szablonów usługi Azure Resource Manager.
- Informacje o bibliotekach zarządzania .NET usługi Service Bus.
Istnieje kilka alternatywnych sposobów zarządzania jednostkami usługi Service Bus, zgodnie z opisem w następujących wpisach w blogu: