Compartir a través de


Desarrollo de aplicaciones de Node.js sin servidor con Azure Functions

Azure Functions proporciona una infraestructura eficaz sin servidor, lo que le permite desarrollar puntos de conexión HTTP escalables y a petición con facilidad. Con JavaScript o TypeScript, puede crear aplicaciones sin servidor que respondan a varios eventos, lo que le permite centrarse en escribir código sin preocuparse por administrar servidores. Esta guía le ayuda a empezar a desarrollar aplicaciones Node.js sin servidor mediante Azure Functions, integrando sin problemas con otros servicios de Azure.

¿Qué es un recurso de función?

Un recurso de Azure Functions es una unidad lógica para todas las funciones relacionadas en una única ubicación geográfica de Azure. El recurso puede contener una sola función o muchas funciones, que pueden ser independientes entre sí o relacionadas con enlaces de entrada o salida. Puede seleccionar entre muchas funciones comunes o crear las suyas propias.

La configuración de recursos de función incluye configuraciones típicas sin servidor, como variables de entorno, autenticación, registro y CORS.

Funciones duraderas y con estado

Las funciones de Durable Functions conservan el estado o administran funciones de ejecución prolongada en Azure. Creación de su primera función durable en JavaScript.

Las aplicaciones web estáticas incluyen funciones

Al desarrollar una aplicación cliente front-end estática (como Angular, React o Vue), que también necesita API sin servidor, use Static Web Apps con funciones para agrupar ambas.

Proxy de la aplicación cliente a la API

Si piensa implementar la API con la aplicación web estática, no es necesario proxy de las llamadas API de la aplicación cliente. El proxy se establece para usted al implementar la aplicación de Azure Functions como una aplicación administrada.

Al desarrollar localmente con una aplicación web estática y Azure Functions, la CLI de Azure Static Web Apps proporciona el proxy local.

Opciones de seguridad comunes que debe configurar para Azure Functions

Se deben configurar las siguientes opciones comunes para proteger la instancia de Azure Functions:

  • Autenticación y autorización:
    • Use microsoft Entra ID (anteriormente Azure Active Directory) para una autenticación sólida. Configure la aplicación de funciones para requerir tokens de OAuth2 para cargas de trabajo de producción.
    • Evite el uso de claves de función para aplicaciones confidenciales. En su lugar, integre con la ID de Microsoft Entra o valide los tokens JWT en su código de función.
    • Use identidades administradas para autenticar la aplicación de funciones con otros recursos de Azure, lo que garantiza que cada función obtenga solo el acceso que necesita.
  • Opciones de configuración:
  • Seguridad de red:
    • CORS: configure los dominios de cliente. No use *, lo que indica todos los dominios.
    • Integración de red virtual: use puntos de conexión privados o integración de red virtual para limitar la exposición de red y restringir el tráfico entrante de orígenes de confianza.
  • HTTPS y cifrado:
    • Configuración de TLS/SSL para HTTPS: de forma predeterminada, la API acepta solicitudes HTTP y HTTPS. Habilite Solo HTTPS en la configuración de TLS/SSL. Dado que la aplicación de funciones se hospeda en un subdominio seguro, puede usarlo inmediatamente (con https) y retrasar la compra de un nombre de dominio y usar un certificado para el dominio hasta que esté listo.
  • Implementación y supervisión:
    • Ranuras de implementación: cree una ranura de implementación, como stage o preflight e insértela en esa ranura. Cambie esta ranura de fase a producción cuando esté listo. No tengas el hábito de insertar manualmente en producción. El código base debe ser capaz de indicar la versión o confirmación que se encuentra en una ranura.
    • Habilite Application Insights para la telemetría, las alertas y la detección de anomalías en tiempo real para supervisar las funciones y los registros de auditoría para detectar actividades sospechosas.

Para obtener instrucciones de seguridad completas, consulte Protección de Azure Functions.

Opciones de hospedaje para Azure Functions

Puede hospedar Azure Functions de diferentes maneras en función de sus requisitos:

Planes de hospedaje de recursos de Azure Functions

Al crear un recurso de Azure Functions, puede elegir entre estos planes de hospedaje:

  • Plan de consumo: paga solo por el tiempo que se ejecutan las funciones con escalado automático.
  • Plan de consumo flexible: proporciona un control mejorado con instancias listas para siempre para reducir los arranques en frío, la integración de red virtual y los tamaños de instancia configurables (de 512 MB a 4 GB). Este plan se recomienda para las nuevas cargas de trabajo basadas en Linux que requieren características de seguridad y rendimiento empresariales. Tenga en cuenta que este plan usa una facturación basada en la ejecución, similar al plan de Consumo, pero con costos adicionales para características como instancias siempre listas.
  • Plan Premium: proporciona un rendimiento mejorado con instancias previamente activadas, conectividad de red virtual y duraciones de ejecución más largas.
  • Plan dedicado (App Service): ejecute funciones en máquinas virtuales dedicadas para costos predecibles y control total sobre el entorno de tiempo de ejecución.

Para más información sobre cómo elegir el plan de hospedaje adecuado, consulte Opciones de hospedaje de Azure Functions.

Recurso de Aplicaciones de Contenedores de Azure

Como alternativa, puede implementar Azure Functions en un recurso de Azure Container Apps como cargas de trabajo en contenedor. Esta opción proporciona control total sobre el entorno de contenedor y es ideal cuando necesita dependencias personalizadas, procesos de larga duración o desea combinar funciones con otros microservicios en contenedores. Consulte Hospedaje de Azure Functions en Azure Container Apps para más información.

Requisitos previos para desarrollar Azure Functions

  • Node.js LTS : use la versión más reciente de soporte técnico a largo plazo (LTS) para obtener las mejores actualizaciones de compatibilidad y seguridad con Azure Functions.
  • Azure Functions Core Tools : use la versión principal actual para el desarrollo y la depuración locales.

Función de JavaScript simple para solicitudes HTTP

Una función es una función asincrónica exportada con información de la solicitud y el contexto. La siguiente captura de pantalla parcial de Azure Portal muestra el código de la función.

import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";

export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log(`Http function processed request for url "${request.url}"`);

    return {
        status: 200,
        jsonBody: {
            env: process.env
        }
    };
};

app.http('status', {
    route: "status",
    methods: ['GET'],
    authLevel: 'anonymous',
    handler: status
});

Desarrollo local de funciones con Visual Studio Code y extensiones

Cree su primera función mediante Visual Studio Code. Visual Studio Code simplifica muchos de los detalles con la extensión de Azure Functions.

Esta extensión le ayuda a crear funciones de JavaScript y TypeScript con plantillas comunes.

Integración con otros servicios de Azure

Las funciones sin servidor eliminan gran parte de la configuración y administración del servidor, para que pueda centrarse solo en el código que necesita.

  • Funciones de poco código: con Azure Functions, se crean funciones desencadenadas por otros servicios de Azure o que se generan en otros servicios de Azure mediante enlaces de desencadenadores. El modelo de programación v4 registra todos los desencadenadores y enlaces directamente en el código, lo que hace que la configuración sea segura e intuitiva.
  • Funciones de código alto: para obtener más control, use los SDK de Azure para coordinar y controlar otros servicios de Azure. Use identidades administradas para autenticar de forma segura las funciones con otros recursos de Azure sin administrar credenciales.