从Azure CLI访问Azure应用服务文件

hfsqlsce  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(138)

我想从脚本移动Azure App Service中的文件。我认为Azure CLI与az webapp命令可以用于此,但无法找到访问文件的方法。
我知道有Kudu REST API用于文件访问,但我想在Azure Devops管道期间运行脚本,因此REST API的身份验证似乎是一个问题-我不想在管道中存储凭据。FTP访问也是如此。但是,有一个Azure CLI任务通过配置的服务连接进行授权,所以我认为这可能是一种方式。
因此,核心问题是-如何从命令行移动Azure App Service中的文件?

gg0vcinb

gg0vcinb1#

因此,事实证明,我可以使用Azure CLI获取特定应用服务(甚至插槽)的发布配置文件,然后使用其中的用户名和密码访问Kudu REST API。
我使用了这个Powershell6脚本

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
fkvaft9z

fkvaft9z2#

您可以通过FTP访问文件。
在发布配置文件中或直接从Azure门户(当前在Deployment->Deplyment Center->FTPS crednetials下)查找凭据

相关问题