Introducción a las versiones de tiempo de ejecución de Azure Functions
Artículo
Actualmente, Azure Functions admite dos versiones del host en tiempo de ejecución. En la tabla siguiente se detallan las versiones del entorno de ejecución admitidas actualmente, su nivel de soporte y cuándo se deben usar:
Solo se admite para aplicaciones de C# que deben usar .NET Framework. Esta versión está en modo de mantenimiento y solo se realizarán mejoras en versiones posteriores. El soporte técnico para la versión 1.x finalizará el 14 de septiembre de 2026. Se recomienda encarecidamente migrar las aplicaciones a la versión 4.x, que admite .NET Framework 4.8, .NET 8 y .NET 9.
Importante
Desde el 13 de diciembre de 2022, las aplicaciones de funciones que se ejecutan en las versiones 2.x y 3.x del entorno de ejecución de Azure Functions han alcanzado el final del soporte extendido. Para más información, vea Versiones retiradas.
En este artículo se detallan algunas de las diferencias entre las versiones admitidas, cómo se puede crear cada versión y cómo cambiar la versión en la que se ejecutan las funciones.
Niveles de soporte
Hay dos niveles de compatibilidad:
Disponibilidad general (GA) : totalmente compatible y aprobado para su uso en producción.
Versión preliminar: todavía no se admite, pero se espera que llegue al estado de disponibilidad general en el futuro.
Lenguajes
Todas las funciones de una aplicación de función deben compartir el mismo lenguaje. Al crear la aplicación de funciones elige el lenguaje de las funciones. El lenguaje de la aplicación de funciones se mantiene en la configuración FUNCTIONS_WORKER_RUNTIME y no se puede cambiar cuando hay funciones existentes.
En la tabla siguiente se muestran las versiones de .NET compatibles con Azure Functions. Seleccione el lenguaje de desarrollo que prefiera en la parte superior de este artículo.
La versión admitida de .NET depende de la versión en tiempo de ejecución de Functions y del modelo de ejecución elegido:
La ejecución de funciones de C# en un proceso de trabajo aislado no es compatible con la versión 1.x del entorno de ejecución de Functions. En su lugar, elija la pestaña En proceso, o bien v4.x.
En la tabla siguiente se muestran las versiones del lenguaje compatibles con las funciones de Java. Seleccione el lenguaje de desarrollo que prefiera en la parte superior de este artículo.
En la tabla siguiente se muestran las versiones del lenguaje compatibles con las funciones de Node.js. Seleccione el lenguaje de desarrollo que prefiera en la parte superior de este artículo.
En la tabla siguiente se muestran las versiones del lenguaje compatibles con las funciones de PowerShell. Seleccione el lenguaje de desarrollo que prefiera en la parte superior de este artículo.
En la tabla siguiente se muestran las versiones del lenguaje compatibles con las funciones de Python. Seleccione el lenguaje de desarrollo que prefiera en la parte superior de este artículo.
Para información sobre los cambios planeados en la compatibilidad de lenguaje, consulte Azure roadmap.
Para obtener información sobre las versiones de lenguaje de las versiones admitidas anteriormente del entorno de ejecución de Functions, vea Versiones del entorno de ejecución retiradas.
Ejecución en una versión específica
La versión del sistema en ejecución de Functions que usan las aplicaciones publicadas en Azure viene determinada por la configuración de la aplicación FUNCTIONS_EXTENSION_VERSION. En algunos casos y para determinados idiomas, se puede aplicar otra configuración.
De forma predeterminada, las aplicaciones de funciones que se crean en Azure Portal, con la CLI de Azure o desde las herramientas de Visual Studio se establecen en la versión 4.x. Puede modificar esta versión en caso necesario. Solo puede degradar la versión del entorno en tiempo de ejecución a 1.x después de crear la aplicación de funciones, pero antes de agregar ninguna función. La actualización a una versión principal posterior se permite incluso con las aplicaciones que tienen funciones existentes.
Migración de las aplicaciones de funciones existentes
Cuando la aplicación tenga funciones existentes, deberá tomar precauciones antes de pasar a una versión posterior del runtime principal. En los artículos siguientes se detallan los cambios importantes entre las versiones principales, incluidos los cambios importantes específicos del lenguaje. También se proporcionan instrucciones paso a paso para una migración correcta de la aplicación de funciones existente.
Se usan los siguientes valores principales de la versión del runtime:
Value
Destino del entorno en tiempo de ejecución
~4
4.x
~1
1.x
Importante
No cambie este valor de la aplicación sin motivo, ya que se podrían necesitar otros cambios de valor de aplicación y cambios en el código de función. Para las aplicaciones de funciones existentes, siga las instrucciones de migración.
Anclaje a una versión secundaria específica
Para resolver problemas que pueda tener la aplicación de funciones al ejecutarse en la versión principal más reciente, tiene que anclar temporalmente la aplicación a una versión secundaria determinada. El anclaje le proporciona tiempo para que la aplicación se ejecute correctamente en la versión principal más reciente. La forma de anclar a una versión secundaria difiere entre Windows y Linux. Para más información, consulte Cómo seleccionar un destino para versiones en tiempo de ejecución de Azure Functions.
Las versiones secundarias anteriores se quitan periódicamente de Functions. Para obtener las últimas noticias sobre las versiones de Azure Functions, incluida la eliminación de versiones secundarias específicas anteriores, revise los anuncios de Azure App Service.
Versiones de extensión mínimas
Técnicamente no hay correlación entre las versiones de extensión de enlace y la versión del entorno de ejecución de Functions. Pero a partir de la versión 4.x, el entorno de ejecución de Functions aplica una versión mínima para todas las extensiones de desencadenador y enlace.
Si recibe una advertencia sobre un paquete que no cumple una versión mínima necesaria, debe actualizar ese paquete NuGet a la versión mínima como lo haría normalmente. Los requisitos mínimos de versión de las extensiones usadas en Functions v4.x se pueden encontrar en el archivo de configuración vinculado.
En el caso del script de C#, actualice la referencia del conjunto de extensiones en host.json de la siguiente manera:
Técnicamente no hay correlación entre las versiones del conjunto de extensiones y la versión del entorno de ejecución de Functions. Pero a partir de la versión 4.x, el entorno de ejecución de Functions aplica una versión mínima para los conjuntos de extensiones.
Si recibe una advertencia sobre una versión del conjunto de extensiones que no cumple una versión mínima necesaria, actualice la referencia del conjunto de extensiones existente en host.json de la siguiente manera:
Estas versiones del entorno de ejecución de Functions llegaron al final del soporte extendido el 13 de diciembre de 2022.
Versión
Nivel de soporte técnico actual
Nivel de soporte técnico anterior
3.x
Sin soporte técnico
GA
2.x
Sin soporte técnico
GA
Tan pronto como sea posible, debe migrar las aplicaciones a la versión 4.x para obtener soporte técnico completo. Para obtener un conjunto completo de instrucciones de migración específicas del lenguaje,vea Migración de aplicaciones a Azure Functions versión 4.x.
Las aplicaciones que utilizan las versiones 2.x y 3.x pueden seguir creándose y desplegándose desde su canal CI/CD DevOps, y todas las aplicaciones existentes siguen ejecutándose sin cambios de última hora. Pero las aplicaciones no son aptas para recibir nuevas características, revisiones de seguridad ni optimizaciones del rendimiento. Solo puede obtener soporte técnico del servicio relacionado después de actualizar las aplicaciones a la versión 4.x.
El fin del soporte técnico para las versiones 2.x y 3.x se debe al fin del soporte técnico con .NET Core 3.1, que tenían como dependencia principal. Este requisito afecta a todos los lenguajes admitidos por Azure Functions.
Versiones de aplicaciones desarrolladas de forma local
Puede hacer que las siguientes actualizaciones de las aplicaciones de funciones cambien localmente las versiones de destino.
Versiones de Runtime en Visual Studio
En Visual Studio se selecciona la versión del entorno de ejecución al crear un proyecto. Las herramientas de Azure Functions para Visual Studio son compatibles con las dos versiones principales del entorno de ejecución. Se usa la versión correcta al depurar y publicar en función de configuración del proyecto. La configuración de la versión se define en el archivo .csproj en las siguientes propiedades:
Para el desarrollo en Visual Studio Code, es posible que también tenga que actualizar la configuración de usuario en azureFunctions.projectRuntime para que coincida con la versión de las herramientas instaladas. Esta configuración también actualiza las plantillas y los lenguajes utilizados durante la creación de la aplicación de función.
Compatibilidad con extensiones de enlace de terceros.
Desacoplamiento de tiempo de ejecución y enlaces. Este cambio permite el control de versiones y la publicación de las extensiones de enlace de forma independiente. Por ejemplo, puede elegir actualizar a una versión de una extensión que se basa en una versión más reciente de un SDK subyacente.
Un entorno de ejecución más ligero, donde solo se conocen y se cargan en tiempo de ejecución los enlaces que están en uso.
A excepción de los desencadenadores HTTP y de temporizador, todos los enlaces deben agregarse explícitamente al proyecto de aplicación de funciones o registrarse en el portal. Para más información, consulte Registro de extensiones de enlace.
En la siguiente tabla se indica qué enlaces se admiten en cada versión del entorno de ejecución.
En esta tabla se muestran los enlaces que son compatibles con las versiones principales del entorno en tiempo de ejecución de Azure Functions:
A partir del entorno de ejecución de la versión 2.x, se deben registrar todos los enlaces excepto HTTP y Timer. Consulte Registro de extensiones de enlace.
Solo se admite en Kubernetes, IoT Edge y otros modos autohospedados.
Duración del tiempo de espera de una aplicación de función
La duración del tiempo de espera de las funciones en una aplicación de funciones se define mediante la propiedad functionTimeout en el archivo de proyecto host.json. Esta propiedad se aplica específicamente a las ejecuciones de funciones. Una vez que el desencadenador inicia la ejecución de la función, la función debe devolver o responder dentro de la duración del tiempo de espera. Para evitar tiempos de espera, es importante escribir funciones sólidas. Para más información, consulte Mejorar el rendimiento y la confiabilidad de Azure Functions.
En la tabla siguiente se muestran los valores predeterminados y máximos (en minutos) para planes específicos:
No se impone una duración máxima del tiempo de espera de ejecución. Sin embargo, el período de gracia proporcionado a una ejecución de una función es de 60 minutos durante la reducción horizontal para los planes Flex Consumption y Premium, y se da un período de gracia de 10 minutos durante las actualizaciones de la plataforma.
Requiere que el plan de App Service se establezca en Always On. Se da un período de gracia de 10 minutos durante las actualizaciones de la plataforma.
El tiempo de espera predeterminado para la versión 1.x del entorno de ejecución del host de Functions es ilimitado.
Cuando el número mínimo de réplicas se establece en cero, el tiempo de espera predeterminado depende de los desencadenadores específicos usados en la aplicación.
Pasos siguientes
Para obtener más información, consulte los siguientes recursos:
Empiece aquí y descubra cómo puede supervisar, automatizar, ajustar, escalar automáticamente, proteger e implementar aplicaciones de Java en Azure. Como siempre, use sus herramientas y marcos favoritos: Spring, Tomcat, WildFly, JBoss, WebLogic, WebSphere, Maven, Gradle, IntelliJ, Eclipse, Jenkins, Terraform y otros.
Cree soluciones de un extremo a otro en Microsoft Azure para crear Azure Functions, implementar y administrar aplicaciones web, desarrollar soluciones que usen Azure Storage, etc.