Azure Сбой модуля Runbook автоматизации при запуске из веб-перехватчика. У нас есть модуль Runbook, который отлично работает при запуске с помощью кнопки «Пуск» на портале Azure.
Тот же модуль Runbook не работает при запуске из веб-перехватчика с использованием тех же параметров.
Проблема в том, что после того, как код в модуле Runbook открывает действительное соединение с Azure, он пытается получить одну из баз данных, с которой мы собираемся работать, и завершается ошибкой, за исключением сообщения «Группа ресурсов« '' 'не может быть найдена ».
Тот же самый точный код и параметры работают без каких-либо проблем при запуске вне Webhook.
Мы добавили код для получения контекста после того, как код выполняет вход в систему, и мы проверили, что имя контекста, идентификатор подписки и идентификатор клиента действительны, и мы даже передаем контекст вызову Get-AzSqlDatabase, и все же он не работает при запуске через веб-перехватчик. Мы не уверены, что еще мы можем попытаться диагностировать и исправить проблему.
Вот пример кода, который мы запускаем и где он не работает ...
. . .
Function Login {
Disable-AzContextAutosave -Scope Process
Write-Output "Logging in to Azure..."
$connectionName = "GoodTestingConnection"
try{
Connect-AzAccount -ServicePrincipal -Tenant $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
Write-Output "Error loging in to Azure: $_"
throw "Error loging in to Azure: $_"
}
}
$ErrorActionPreference = "Stop"
if ($WebHookData) {
Write-Output "Running runbook from web hook request"
$wbRunParams = (ConvertFrom-Json -InputObject $WebHookData.RequestBody)
Write-Output "Webhook parameters $wbRunParams"
$client = $wbRunParams.client
Write-Output "Running process for client $client"
}
Login
$ctx = Get-AzContext
Write-Output "Context nanme: $($ctx.Name)"
Write-Output "Environment name: $($ctx.Environment.Name)"
Write-Output "Subscription ID: $($ctx.Subscription.Id)"
Write-Output "Tenant ID: $($ctx.Tenant.Id)"
Write-Output "Getting the 'from' Db..."
$fromDb = Get-AzSqlDatabase `
-DatabaseName $copyFromDbName `
-ServerName $copyFromServer `
-ResourceGroupName $copyFromRG `
-DefaultProfile $ctx
$fromDb
#The code never reaches this point as it fails on the previous call
. . .