Можно ли обновить URL-адрес при тестировании доступности в приложении с помощью powershell по расписанию задачи / частоты - PullRequest
0 голосов
/ 18 октября 2019

У меня есть несколько сред в Azure, которые используют локальные услуги Restful для одного из наших клиентов. В настоящее время у нас настроены аналитические сведения о приложении в группе ресурсов, а тест доступности настроен для проверки связи с URL-адресом с заданной частотой, настроенный с помощью оповещения аналитики (электронная почта при сбое)

Маркер доступа встроен в URL-адрес. который должен часто обновляться. Можно ли обновить подсвеченный URL-адрес программно, чтобы заменить токен (по расписанию / автоматически)

enter image description here

Просто интересно, какие технологии можно использовать для обновленияURL доступности по расписанию (каждые две недели)

Функции Azure? Какой-то сценарий PowerShell в качестве запланированной задачи? Шаблоны ARM на примере здесь https://docs.microsoft.com/en-us/azure/azure-monitor/app/powershell#add-an-availability-test

Буду признателен за любые советы о том, как эффективно выполнить эту задачу и использовать наиболее подходящие технологии.

1 Ответ

0 голосов
/ 21 октября 2019

Я должен сказать, что, кажется, нет модуля PowerShell для изменения URL веб-теста App Insight, но мы можем сделать это через REST API. Попробуйте PowerShell ниже:

$clientId = "<your Azure AD application ID>"
$clientSec="<your Azure AD application secret>"

$appInsightName ="<your app insight name>"
$webtestName="<your webtest name>"
$subscriptionId = "<your subscription ID>"
$resourceGroupName = "<your resource group name that your app insight in>"
$tenant = "<your tenant name/ID>"

$newUrl = "<the new URL>"

#get access token to fetch details of webtest
$body=@{
    "grant_type"="client_credentials";
    "resource"="https://management.azure.com/";
    "client_id"= $clientId;
    "client_secret" = $clientSec
}

$accessToken=(Invoke-RestMethod -Uri "https://login.windows.net/$tenant/oauth2/token" -Method POST -Body $body ).access_token
$uri = "https://management.azure.com/subscriptions/{0}/resourcegroups/{1}/providers/microsoft.insights/webtests/{2}-{3}?api-version=2015-05-01"
$uri = $uri.Replace("{0}",$subscriptionId).Replace("{1}",$resourceGroupName).Replace("{2}",$webtestName).Replace("{3}",$appInsightName)
$webtestResult = Invoke-RestMethod -Uri $uri -Method GET -Headers @{"Authorization"="Bearer $accessToken"}

#modify the url of webtest
$webTestConf = [xml]@($webtestResult.properties.Configuration.WebTest)
$webTestConf.WebTest.Items.Request.Url = $newUrl

#structure request json to update webtest
$locations = $webtestResult.properties.Locations | ConvertTo-Json

$Configuration = $webTestConf.WebTest.OuterXml | ConvertTo-Json 
$Configuration = $Configuration.Replace("\u003c","<").replace("\u003e",">")


$location = $webtestResult.location
$tags = $webtestResult.tags| ConvertTo-Json
$name = $webtestResult.properties.Name
$kind = $webtestResult.properties.Kind


$json = @"
{
"location":"$location",
"tags":$tags,
"properties":{
    "Name":"$name",
    "Enabled": true,
    "Frequency": 300,
    "Timeout": 120,
    "Locations":$locations,
    "Configuration":{"webtest":$Configuration},
    "Kind":"$kind"
    }
}
"@


Invoke-RestMethod -Uri $uri -Method PUT -Body $json -Headers @{"Authorization"="Bearer $accessToken";"Content-Type"="application/json"}  

За исключением функции Azure, вы можете использовать Runbook PowerShell для автоматизации Azure с запланированной задачей для удовлетворения ваших требований.

Кстати, эта демонстрационная версия PowerShell использует принцип обслуживания для подключения к подписке Azure. Убедитесь, что у вашего рекламного приложения Azure есть разрешение на изменение информации о приложении. Если у вас есть что-то неясное, пожалуйста, дайте мне знать. Этот вопрос не должен пройти!

...