Доступ к Azure файлам службы приложений из Azure CLI - PullRequest
0 голосов
/ 23 января 2020

Я бы хотел переместить файл из службы приложений Azure из сценария. Я думал, что для этого можно использовать Azure CLI с командой az webapp, но не смог найти способ доступа к файлам.

Я знаю, что существует REST API Kudu для доступа к файлам, но я хочу запустить сценарий во время Azure конвейера Devops, поэтому аутентификация для REST API кажется проблемой - я не хочу хранить учетные данные в конвейере. То же самое относится и к FTP-доступу. Тем не менее, существует задача Azure CLI с авторизацией через настроенные сервисные соединения, поэтому я подумал, что это может быть путь.

Итак, основной вопрос - как переместить файл в Azure App Service из командной строки?

1 Ответ

0 голосов
/ 24 января 2020

Итак, оказалось, что я могу использовать Azure CLI, чтобы получить профиль публикации для определенной службы приложения (или даже слота), а затем использовать имя пользователя и пароль для доступа к Kudu REST API.

Я использовал этот скрипт Powershell 6

function Get-PublishingProfile($resourceGroupName, $webAppName, $slotName) {
  if ([string]::IsNullOrWhiteSpace($slotName)) {
    $xml = Get-AzWebAppPublishingProfile -ResourceGroupName $resourceGroupName -Name $webAppName
  }
  else {
    $xml = Get-AzWebAppSlotPublishingProfile -ResourceGroupName $resourceGroupName -Name $webAppName -Slot $slotName
  }

  return $xml |
  Select-Xml -XPath "publishData/publishProfile[1]" |
  Select-Object -ExpandProperty Node |
  Select-Object -Property publishUrl, msdeploySite, userName, userPWD, destinationAppUrl
}

$profile = Get-PublishingProfile $resourceGroupName $webAppName $slotName
$securePassword = ConvertTo-SecureString -String $profile.userPWD -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential($profile.userName, $securePassword)

$fileUri = "https://$($profile.publishUrl)/api/vfs/site/wwwroot/some_file.txt"
$headers = @{
  "If-Match" = "*"
}

Invoke-RestMethod -Uri $fileUri -Method Get -Credential $credentials -Authentication Basic -Headers $headers
...