Azure Ошибка Runbook автоматизации при запуске из Webhook - PullRequest
1 голос
/ 28 мая 2020

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
. . .
...