Azure PowerShell – Cómo obtener todas las Azure Functions instaladas dentro de una Azure Function App
Desde el punto de vista de mantenimiento, es posible que tengamos la necesidad de conocer rápidamente las Azure Functions instaladas dentro de una Azure Function App, e incluso el estado en el que se encuentra cada una de ellas.
Si bien podemos saber con relativo detalle el estado de salud de nuestras Azure Functions, sí es verdad que Microsoft (y es mi personal opinión) debe aún cubrir determinados aspectos que permita, sobre todo a la gente de operaciones, saber cómo se encuentran nuestras Azure Functions, cuantas hay, etc.
Lo que voy a mostrarte en esta entrada es cómo obtener detalle e información de nuestras Azure Functions gracias a PowerShell y Postman.
Las acciones a realizar son:
- Conectarnos con Azure.
- Recuperar el Access token que nos permitirá conectarnos con el endpoint de Azure.
- Ejecutar con Postman el endpoint de Azure que nos permitirá obtener los datos de las Azure Functions instaladas en una Azure Function App.
Conectarnos a Azure
Lo primero que tendremos que hacer es iniciar PowerShell con privilegios de administrador y conectarnos a Azure.
Aunque ya he comentado como hacerlo en alguna entrada de mi blog, voy con un recordatorio rápido de varios comandos:
El comando que nos pedirá el usuario y contraseña de nuestra subscripción Azure:
Connect-AzureRmAccount
Y como extras, la posibilidad de obtener el listado de subscripciones Azure que tenemos con esa cuenta:
Get-AzureRmSubscription
Y la selección de una subscripción concreta, si es necesario.
Modificando para ello el valor de {id} con el que corresponda:
Select-AzureRmSubscription -Subscription ‘{id}’
Recuperación del Access token
Una vez que estamos trabajando sobre nuestra subscripción, deberemos ejecutar un conjunto de instrucciones de PowerShell que nos permita recuperar un access token que utilizaremos posteriormente con Postman.
Obtendremos el contexto de Azure ejecutando el siguiente comando:
$currentAzureRmContext = Get-AzureRmContext
Obtendremos el perfil de Azure que estamos utilizado ejecutando el siguiente comando:
$currentAzureRmProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
Prepararemos el cliente con la información anterior:
$currentProfileClient = New-Object Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient($currentAzureRmProfile)
A través del cliente y el contexto, obtendremos la información del token que Azure nos dará y que tendrá una caducidad concreta:
$token = $currentProfileClient.AcquireAccessToken($currentAzureRmContext.Subscription.TenantId)
Prepararemos el Bearer token que utilizaremos en nuestro cliente Postman:
$bearerToken = (‘Bearer {0}’ -f ($token.AccessToken))
Y finalmente y como extra, copiaremos el Bearer token en el portapapeles para llevárnoslo cómodamente a Postman:
$bearerToken | Set-Clipboard
Ejecutar Postman para recuperar la información de las Azure Functions
Ahora que ya tenemos todo preparado, vamos a abrir Postman teniendo en cuenta las siguientes premisas:
- Realizaremos una llamada GET.
- Apuntaremos a la url: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{azureFunctionApp}/functions?api-version=2015-08-01
Sustituiremos {subscriptionId} con el id de nuestra subscripción, {resourceGroup} con el nombre del resource group en el que se encuentran nuestras Azure Functions, y {azureFunctionApp} por el nombre de nuestra Azure Function App. - Añadiremos un header a la llamada de key (clave) Authorization y value (valor) lo que tenemos en el portapapeles y que coincide con el Bearer token.
Si ejecutamos el botón Send de Postman, deberíamos obtener un Status 200 OK y la información de salida que corresponde con todos los datos que Azure nos devuelve de las Azure Functions instaladas en nuestra Azure Funtion App.
A partir de aquí, podemos extraer esta información y analizarla, etc.
Happy Coding!