===== Step-by-step checklist: Azure Functions en PowerShell 7 / uso general ===== ==== 1. Instalación de herramientas ==== * Instalar y verificar Azure CLI en PowerShell 7. * Instalar ''Azure Functions Core Tools v4'': - Opción MSI (Windows): [[https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=windows%2Cisolated-process%2Cnode-v4%2Cpython-v2%2Chttp-trigger%2Ccontainer-apps&pivots=programming-language-csharp|descargar desde la documentación oficial de Microsoft.]] * Verificar instalación: ''func --version'' ==== 2. Verificación del App Service Plan ==== * Listar apps en un resource group: ''az webapp list --resource-group ""'' * Si al crear una Function App aparece un error de compatibilidad de runtime con Windows, suele indicar que el App Service Plan está configurado como Windows. Para runtimes como Python, se requiere **Linux**. ==== 3. Creación de Function App (Linux) ==== * Crear Function App con plan de consumo, runtime Python 3.11: az functionapp create ` --resource-group ` --consumption-plan-location ` --runtime python ` --runtime-version 3.11 ` --functions-version 4 ` --name ` --storage-account ` --os-type Linux * Resultado esperado: Function App creada y vacía, lista para desplegar. ==== 4. Inicialización del proyecto local ==== * Crear e ir a la carpeta de trabajo (mkdir, cd) y ejecutar: ''func init . --python'' * Crear función HTTP trigger. Para etapa de desarrollo puede usarse con acceso anónimo: ''func new --name ItWorksFunc --template "HTTP trigger" --authlevel anonymous'' * En Functions v4 para Python se genera ''function_app.py'' con decorators. ==== 5. Publicación y pruebas ==== * Publicar el proyecto en la Function App: func azure functionapp publish * Probar endpoint en navegador o curl: https://.azurewebsites.net/api/ItWorksFunc * Ajustar ''authLevel'' a ''anonymous'' para evitar respuestas 401. * Respuesta típica de prueba: "it works! running at Azure Functions" ==== 6. Extensión a múltiples endpoints ==== * Definir endpoints adicionales en ''function_app.py'': - Ejemplo: ''/backups'', ''/updates'', ''/inventory'', ''/status'' * Cada endpoint puede recibir JSON vía POST, validar datos y guardar en Storage/SQL/Logs. * Prueba con curl: curl -X POST https://.azurewebsites.net/api/backups \ -H "Content-Type: application/json" \ -d '{"server":"srv01","status":"ok"}'