API REST de Kudu de sitios web de Azure: autenticación
powershell azure-web-sites (2)
Estoy tratando de usar PowerShell para poner un archivo de contenido actualizado en un sitio web de Azure a través de la API REST.
Sin embargo, al proporcionar mis credenciales en
Invoke-RestMethod -Credentials
, me devuelve el HTML de la página de inicio de sesión estándar de Azure.
¿Cómo puedo autenticarme con Kudu desde PowerShell? Gracias.
En el nuevo mundo ARM y con el último PowerShell, deberá hacer algunos ajustes a la respuesta de @ Seth.
Específicamente, la forma de obtener los créditos de publicación es diferente, que son las primeras 3 líneas. El resto lo copié descaradamente de @Seth para completar el fragmento.
Asegúrese de reemplazar YourResourceGroup / YourWebApp según corresponda:
$creds = Invoke-AzureRmResourceAction -ResourceGroupName YourResourceGroup -ResourceType Microsoft.Web/sites/config -ResourceName YourWebApp/publishingcredentials -Action list -ApiVersion 2015-08-01 -Force
$username = $creds.Properties.PublishingUserName
$password = $creds.Properties.PublishingPassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$apiBaseUrl = "https://$($website.Name).scm.azurewebsites.net/api"
$kuduVersion = Invoke-RestMethod -Uri "$apiBaseUrl/environment" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET
Primero puede obtener el sitio web a través de Powershell y luego usar las credenciales de publicación del sitio web para llamar a la API REST de Kudu. El siguiente ejemplo obtendrá la versión Kudu.
$website = Get-AzureWebsite -Name "WebsiteName"
$username = $website.PublishingUsername
$password = $website.PublishingPassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$apiBaseUrl = "https://$($website.Name).scm.azurewebsites.net/api"
$kuduVersion = Invoke-RestMethod -Uri "$apiBaseUrl/environment" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET