El despliegue automatizado de APIs en la nube es una práctica esencial en el desarrollo moderno. Deno, con su seguridad integrada y soporte nativo para TypeScript, es una excelente opción para construir APIs escalables y eficientes. Azure Functions, por otro lado, permite ejecutar código sin preocuparse por la infraestructura subyacente.
En este artículo, aprenderás cómo desplegar automáticamente una API de Deno en Azure Functions usando GitHub Actions.
1. ¿Por qué Usar Deno con Azure Functions? Link to heading
Las ventajas de utilizar Deno con Azure Functions incluyen:
✅ Ejecuta código sin servidores: Solo pagas por las ejecuciones realizadas.
✅ Compatibilidad con TypeScript: No requiere configuración adicional.
✅ Seguridad mejorada: Deno requiere permisos explícitos.
✅ Escalabilidad automática: Azure Functions escala dinámicamente según la carga.
✅ Despliegue automatizado: Se puede integrar con GitHub Actions para CI/CD.
2. Configuración del Proyecto Deno Link to heading
2.1 Instalación de Deno Link to heading
Si no tienes Deno instalado, usa el siguiente comando:
curl -fsSL https://deno.land/x/install/install.sh | sh
deno --version
2.2 Creación de una API en Deno Link to heading
Primero, creamos una API REST básica usando el framework Oak:
mkdir deno-api && cd deno-api
echo "{}" > deps.ts
echo "{}" > server.ts
echo "{}" > routes.ts
echo "{}" > controllers.ts
deps.ts
(Dependencias)
Link to heading
export { Application, Router } from "https://deno.land/x/oak/mod.ts";
server.ts
(Servidor Principal)
Link to heading
import { Application } from "./deps.ts";
import router from "./routes.ts";
const app = new Application();
app.use(router.routes());
app.use(router.allowedMethods());
console.log("API Deno corriendo en http://localhost:8080");
await app.listen({ port: 8080 });
routes.ts
(Definición de Rutas)
Link to heading
import { Router } from "./deps.ts";
import { getHello } from "./controllers.ts";
const router = new Router();
router.get("/hello", getHello);
export default router;
controllers.ts
(Controlador de Rutas)
Link to heading
import { Context } from "https://deno.land/x/oak/mod.ts";
export const getHello = (ctx: Context) => {
ctx.response.body = { message: "Hola desde Deno y Azure!" };
};
3. Configuración de Azure Functions Link to heading
3.1 Crear un Azure Function App Link to heading
- Ingresa a Azure Portal.
- Dirígete a Azure Functions y selecciona Crear Función.
- Configura los siguientes parámetros:
- Nombre de la función:
deno-api-func
- Lenguaje: Custom Handler
- Plan de ejecución: Consumo (Pay-as-you-go)
- Sistema Operativo: Linux
- Región: La más cercana a tu ubicación.
- Nombre de la función:
- Presiona Crear y Desplegar.
3.2 Configurar Variables de Entorno Link to heading
En el portal de Azure, dirígete a Configuración > Variables de Entorno y añade:
DENO_VERSION=1.38.0
PORT=8080
4. Creación de host.json
y function.json
Link to heading
Para que Azure Functions entienda nuestra API, debemos crear archivos de configuración.
host.json
Link to heading
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
function.json
Link to heading
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": ["get"]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
5. Automatización con GitHub Actions Link to heading
Para desplegar automáticamente nuestra API Deno en Azure Functions, usaremos GitHub Actions.
5.1 Crear un archivo de Workflow Link to heading
En el repositorio de GitHub, crea la ruta .github/workflows/deploy.yml
y agrega lo siguiente:
name: Deploy Deno API to Azure Functions
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Deploy to Azure Functions
uses: Azure/functions-action@v1
with:
app-name: "deno-api-func"
package: "."
publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}
5.2 Configurar Secretos en GitHub Link to heading
- Entra a tu repositorio en GitHub.
- Ve a Settings > Secrets and Variables > Actions.
- Agrega un secreto llamado
AZURE_FUNCTIONAPP_PUBLISH_PROFILE
con el contenido del perfil de publicación de Azure.
6. Despliegue y Prueba Link to heading
6.1 Ejecutar el Despliegue Link to heading
Cada vez que hagas git push
a la rama main
, GitHub Actions ejecutará el despliegue automáticamente.
git add .
git commit -m "Deploy API Deno en Azure Functions"
git push origin main
6.2 Probar la API en Azure Link to heading
Cuando el despliegue finalice, podrás acceder a la API con:
curl https://deno-api-func.azurewebsites.net/api/hello
Debería responder:
{ "message": "Hola desde Deno y Azure!" }
7. Conclusión Link to heading
El deploy automatizado de APIs Deno en Azure Functions ofrece una solución escalable y eficiente sin preocuparse por la infraestructura. GitHub Actions facilita la automatización del proceso CI/CD.