Gestire le risorse del bus di servizio di Azure con PowerShell
Microsoft Azure PowerShell è un ambiente di scripting che può essere usato per controllare e automatizzare la distribuzione e la gestione dei servizi di Azure. L'articolo descrive come usare il modulo PowerShell di Resource Manager del bus di servizio per effettuare il provisioning e gestire le entità del bus di servizio (spazi dei nomi, code, argomenti e sottoscrizioni) tramite una console o uno script locale di Azure PowerShell.
È possibile gestire le risorse del bus di servizio anche usando i modelli di Azure Resource Manager. Per altre informazioni, vedere l'articolo Creare risorse del bus di servizio usando i modelli di Azure Resource Manager.
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Prerequisiti
Prima di iniziare, verificare di disporre dei prerequisiti seguenti:
- Una sottoscrizione di Azure. Per altre informazioni su come ottenere una sottoscrizione, vedere le opzioni di acquisto, le offerte per i membri oppure l'account gratuito.
- Un computer con Azure PowerShell. Per le istruzioni vedere Get started with Azure PowerShell cmdlets (Introduzione ai cmdlet di Azure PowerShell).
- Conoscenza generale degli script di PowerShell, dei pacchetti NuGet e di .NET Framework.
Operazioni preliminari
Il primo passaggio consiste nell'usare PowerShell per accedere all'account Azure e alla sottoscrizione di Azure. Seguire le istruzioni in Get started with Azure PowerShell cmdlets (Introduzione ai cmdlet di Azure PowerShell) per accedere al proprio account Azure e recuperare e accedere alle risorse nella sottoscrizione di Azure.
Provisioning di uno spazio dei nomi del bus di servizio
Quando si usano gli spazi dei nomi bus di servizio, è possibile usare i cmdlet Get-AzServiceBusNamespace, New-AzServiceBusNamespace, Remove-AzServiceBusNamespace e Set-AzServiceBusNamespace.
Questo esempio crea alcune variabili locali nello script: $Namespace
e $Location
.
$Namespace
è il nome dello spazio dei nomi del bus di servizio che si vuole usare.$Location
identifica il data center in cui si eseguirà il provisioning dello spazio dei nomi.$CurrentNamespace
archivia lo spazio dei nomi di riferimento che viene recuperato (o creato).
In uno script effettivo, $Namespace
e $Location
possono essere passati come parametri.
Questa parte dello script esegue le operazioni seguenti:
Tenta di recuperare uno spazio dei nomi del bus di servizio con il nome specificato.
Se lo spazio dei nomi viene trovato, viene segnalato ciò che viene trovato.
Se lo spazio dei nomi non viene trovato, viene creato lo spazio dei nomi e quindi viene recuperato lo spazio dei nomi appena creato.
# 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." }
Crea una regola di autorizzazione dello spazio dei nomi
L'esempio seguente illustra come gestire le regole di autorizzazione dello spazio dei nomi usando i cmdlet 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
}
Crea una coda
Per creare una coda o un argomento, eseguire una verifica dello spazio dei nomi usando lo script indicato nella sezione precedente. Creare quindi la coda:
# 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."
}
Modificare le proprietà della coda
Dopo aver eseguito lo script nella sezione precedente, è possibile usare il cmdlet Set-AzServiceBusQueue per aggiornare le proprietà di una coda, come nell'esempio seguente:
$CurrentQ.DeadLetteringOnMessageExpiration = $True
$CurrentQ.MaxDeliveryCount = 7
$CurrentQ.MaxSizeInMegabytes = 2048
$CurrentQ.EnableExpress = $True
Set-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName -QueueObj $CurrentQ
Provisioning di altre entità del bus di servizio
È possibile usare il modulo PowerShell del bus di servizio per effettuare il provisioning di altre entità, ad esempio argomenti e sottoscrizioni. Questi cmdlet sono sintatticamente simili a quelli per la creazione della coda illustrati nella sezione precedente.
Passaggi successivi
- Vedere la documentazione completa del modulo PowerShell di Resource Manager del bus di servizio qui. Questa pagina elenca tutti i cmdlet disponibili.
- Per informazioni sull'uso dei modelli di Azure Resource Manager, vedere l'articolo Creare risorse del bus di servizio usando i modelli di Azure Resource Manager.
- Informazioni sulle librerie di gestione .NET del bus di servizio.
Esistono alcune soluzioni alternative per la gestione delle entità del bus di servizio, come descritto in questi post di blog: