Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En los planes de hospedaje que admiten ranuras de implementación, la aplicación de funciones puede ejecutarse en instancias independientes denominadas ranuras. Cada slot es un entorno independiente con su propio nombre de host. El acceso al endpoint de una ranura depende de las restricciones de red y acceso que configures para esa ranura. Una ranura siempre es la de producción y puede intercambiar una ranura de ensayo disponible por la de producción bajo demanda.
El número de ranuras disponibles depende de su opción de alojamiento específica:
| Opción de hospedaje | Ranuras (incluida la producción) |
|---|---|
| Plan de consumo | 2 (un espacio de producción y un espacio de preparación) |
| Plan de Consumo flexible | Actualmente no se admite. Para las implementaciones sin tiempo de inactividad, consulte Estrategias de actualización del sitio en Flex Consumption. |
| Plan Premium | 3 |
| Plan Dedicado (App Service) | 1-20 |
| Azure Container Apps | Las ranuras de implementación no se aplican. Usa revisiones. |
Selecciona tu plan de alojamiento en la parte superior de este artículo para ver las instrucciones correspondientes a tu aplicación de funciones.
Implementar sin ranuras en Consumo flexible
El plan Flex Consumption no admite slots de implementación. Para lanzamientos controlados y despliegues sin tiempo de inactividad, utiliza actualizaciones continuas como estrategia de actualización del sitio.
Desplegar con revisiones en Azure Container Apps
Azure Functions en Azure Container Apps no utiliza espacios de despliegue. Utiliza revisiones para gestionar y dirigir el tráfico entre versiones de tu app de funciones.
En los planes Consumo, Premium y Dedicado, las ranuras de implementación se comportan de la siguiente manera:
- Durante el cambio de enrutamiento, las nuevas invocaciones de desencadenadores de funciones se dirigen a la ranura intercambiada sin necesidad de reiniciar explícitamente la aplicación.
- Los intercambios de ranuras no garantizan ningún tiempo de inactividad. Las funciones que se estén ejecutando pueden interrumpirse y puede producirse una degradación de la disponibilidad en aplicaciones escaladas durante las operaciones de intercambio de ranuras. Para obtener información sobre cómo escribir funciones defensivas y sin estado, vea Mejorar el rendimiento y la confiabilidad de Azure Functions. Si las implementaciones de tiempo de inactividad cero son un requisito, considere el plan de consumo flexible con actualizaciones graduales como estrategia de actualización del sitio.
¿Por qué usar ranuras?
Hay muchas ventajas para usar ranuras de implementación, entre las que se incluyen:
- Entornos diferentes para diferentes propósitos: Usando diferentes ranuras, puedes diferenciar instancias de la app antes de cambiar a producción o a una ranura de staging.
- Precalentamiento: Despliega en una ranura en lugar de directamente en producción para calentar la app antes de que esté disponible. Además, usar ranuras reduce la latencia para cargas de trabajo activadas por HTTP. Las instancias se preparan antes de la implementación, lo que reduce el arranque en frío de las funciones recién implementadas.
- Reservas sencillas: después del intercambio con producción, la ranura con la aplicación de ensayo anterior ocupa ahora la aplicación de producción anterior. Si las modificaciones que ha intercambiado en el espacio de producción no son las previstas, puede revertir el intercambio inmediatamente para volver a tener la "última instancia que sabe que funciona correctamente".
- Minimizar los reinicios: el cambio de la configuración de la aplicación en una ranura de producción requiere un reinicio de la aplicación en ejecución. En su lugar, puede cambiar la configuración en una ranura de ensayo y cambiar la configuración por uno de producción con una instancia prewarmed. Las ranuras son la manera recomendada de migrar entre las versiones en tiempo de ejecución de Functions, a la vez que se mantiene la mayor disponibilidad. Para más información, consulte Actualización mínima del tiempo de inactividad.
Operaciones de intercambio
Durante un intercambio, una ranura es la fuente y la otra es el objetivo. La ranura de origen contiene la instancia de la aplicación que se aplica a la ranura de destino. Los pasos siguientes ayudan a reducir el tiempo de inactividad en la ranura de destino durante un intercambio:
Aplicar ajustes: Aplicar ajustes desde la ranura de destino a todas las instancias de la ranura de origen. Por ejemplo, aplica la configuración de producción a la instancia de preproducción. La configuración aplicada incluye las siguientes categorías:
- Opciones de configuración de aplicación y cadenas de conexión específicas de la ranura (si procede)
- Configuración de implementación continua (si está habilitada)
- Configuración de autenticación de App Service configuración (si está habilitada)
Esperar reinicios y disponibilidad: el intercambio espera a que todas las instancias de la ranura de origen terminen de reiniciarse y estén disponibles para las solicitudes. Si el reinicio no se puede realizar en alguna instancia, el intercambio revierte todos los cambios en la ranura de origen y detiene la operación.
Actualización del enrutamiento: Si todas las instancias de la ranura de origen se inicializan correctamente, las dos ranuras completan la operación de intercambio al cambiar las reglas de enrutamiento. Después de este paso, la ranura de destino (por ejemplo, la ranura de producción) tiene la aplicación que se ha calentado anteriormente en la ranura de origen.
Operación de repetición: Ahora que la ranura de origen tiene la aplicación de preswap anteriormente en la ranura de destino, complete la misma operación aplicando toda la configuración y reiniciando las instancias para la ranura de origen.
Tenga en cuenta los siguientes puntos:
Durante intercambio, la inicialización de las aplicaciones intercambiadas tiene lugar en la ranura de origen. La ranura de destino permanece en línea mientras la de origen se prepara, independientemente de si el intercambio se realiza o no correctamente.
Para intercambiar un slot de ensayo con el de producción, asegúrate de que el slot de producción sea siempre el slot de destino. De este modo, el intercambio no afecta a la aplicación de producción.
Configure los ajustes relacionados con los enlaces y orígenes de eventos como ajustes de la ranura de implementación antes de iniciar el intercambio. Al marcarlos como "permanentes", se garantiza que los eventos y las salidas se dirigen a la instancia adecuada.
Cuando creas un nuevo slot de ensayo, el portal crea en el nuevo slot todas las configuraciones existentes del slot de producción, independientemente de si la configuración es persistente o no.
Administración de la configuración
Algunos ajustes de configuración son específicos de una ranura. Las siguientes listas detallan qué ajustes cambian al cambiar de ranura y cuáles permanecen iguales.
Configuración específica de ranuras:
- Extremos de publicación
- Nombres de dominio personalizados
- Certificados no públicos y configuración de TLS/SSL
- Configuración de escala
- Restricciones de IP
- Siempre Encendido
- Configuración de diagnóstico
- Uso compartido de recursos entre orígenes (CORS)
- Puntos de conexión privados
Configuración no específica de ranuras:
- Configuraciones generales, como la versión del framework, 32/64 bits y sockets web
- Configuración de la aplicación (puede configurarse para ajustarse a un espacio)
- Cadenas de conexión (puede configurarse para ajustarse a un espacio)
- Asignaciones de controlador
- Certificados públicos
- Conexiones híbridas *
- Integración de la red virtual *
- Puntos de conexión de servicio *
- Azure Content Delivery Network *
Las características marcadas con un asterisco (*) no se intercambian, por diseño.
Nota:
Determinados ajustes de la aplicación que se aplican a ajustes no intercambiados no se intercambian. Por ejemplo, como los valores de diagnóstico no se intercambian, los valores de aplicaciones relacionados como WEBSITE_HTTPLOGGING_RETENTION_DAYS y DIAGNOSTICS_AZUREBLOBRETENTIONDAYS tampoco lo hacen, aunque no se muestren como valores de ranura.
Creación de una configuración de implementación
Puede marcar una configuración como configuración de la implementación, lo que la convierte en permanente. Una configuración permanente no se intercambia con la instancia de la aplicación.
Si creas una configuración de despliegue en una ranura, asegúrate de crear la misma configuración con un valor único en cualquier otra ranura que esté involucrada en un intercambio. De este modo, mientras el valor de una configuración no cambie, los nombres de las configuraciones seguirán siendo los mismos en todas las ranuras. Esta coherencia de nombre evita que el código intente tener acceso a una configuración que está definida en una ranura, pero no en otra.
Use los siguientes pasos para crear una configuración de implementación:
Ve a Espacios de despliegue en la app de funciones y luego selecciona el nombre de la ranura.
Seleccione Configuración y luego seleccione el nombre de la configuración que quiera hacer permanente en la ranura actual.
Seleccione Configuración de ranura de implementación y luego seleccione Aceptar.
Cuando cierre la sección de ajustes, selecciona Guardar para conservar los cambios.
Desplega una app en una ranura
Cuando se crean ranuras, estas están vacías. Puede utilizar cualquiera de las tecnologías de implementación admitidas para implementar la aplicación en una ranura.
Cómo escalan las ranuras de implementación
Todas las ranuras escalan al mismo número de trabajos que la ranura de producción.
- En el caso de los planes de consumo, la ranura escala a medida que lo hace la aplicación de funciones.
- En el caso de los planes de App Service, la aplicación escala a un número fijo de trabajos. Las ranuras se ejecutan en el mismo número de trabajos que el plan de la aplicación.
Ver ranuras
Puedes consultar información sobre las ranuras existentes utilizando tanto la CLI de Azure como el portal de Azure.
Utiliza estos pasos para ver las ranuras existentes en el portal:
Ve a tu aplicación de función.
Selecciona ranuras de despliegue y mira las ranuras existentes.
Incorporación de una ranura
Puedes añadir una ranura usando tanto la CLI de Azure como el portal de Azure.
Siga estos pasos para crear una ranura en el portal:
Ve a tu aplicación de función.
Seleccione Ranuras de implementacióny, luego, seleccione + Agregar ranura.
Escriba el nombre de la ranura y seleccione Agregar.
También puedes crear una ranura mediante plantillas de Azure Resource Manager (ARM) o archivos Bicep. Para obtener un ejemplo de cómo crear una aplicación de funciones en un plan de consumo con una ranura de implementación, consulte este Inicio rápido de Azure Resource Manager.
Acceso a los recursos de ranura
Puede acceder a los recursos (desencadenadores HTTP y puntos de conexión de administrador) en una ranura de ensayo de la misma manera que la ranura de producción. Sin embargo, en lugar del nombre de host de la aplicación de funciones, use el nombre de host específico de la ranura en la dirección URL de solicitud, junto con las claves específicas de ranura. Dado que las ranuras de ensayo son aplicaciones activas, debe proteger las funciones en un espacio de ensayo como lo haría en la ranura de producción.
Intercambio de ranuras
Puedes intercambiar espacios dentro y fuera de producción usando tanto la CLI de Azure como el portal de Azure.
Siga estos pasos para intercambiar un espacio de ensayo en producción:
Vaya a la aplicación de función.
Seleccione Ranuras de implementacióny, luego, seleccione Intercambiar.
Compruebe los valores de configuración del intercambio y seleccione Intercambiar.
La operación de intercambio puede tardar unos segundos.
Reversión de intercambios
Si un swap da lugar a un error o quieres deshacer un swap, puedes revertir al estado inicial. Para volver al estado de intercambio previo, realice otro intercambio para invertir el intercambio.
Eliminación de una ranura
Puedes eliminar una ranura usando tanto la CLI de Azure como el portal de Azure.
Siga estos pasos para quitar una ranura de la aplicación en el portal:
Ve a Espacios de despliegue en la app de funciones y luego selecciona el nombre de la ranura.
Seleccione Eliminar.
Escriba el nombre de la ranura de implementación que desea eliminar y, luego, seleccione Eliminar.
Cierre el panel de confirmación.
Cambio del plan de App Service
En una aplicación de funciones que se ejecuta en un plan de App Service, puede cambiar el plan de App Service subyacente de una ranura.
Haga lo siguiente para cambiar el plan de App Service de una ranura:
Ve a Espacios de despliegue en la app de funciones y luego selecciona el nombre de la ranura.
En Plan de App Service, seleccione Cambiar el plan de App Service.
Seleccione el plan al que desea cambiarse o cree un nuevo plan.
Seleccione Aceptar.
Consideraciones
Las ranuras de implementación de Azure Functions presentan las siguientes consideraciones:
- El número de ranuras disponibles para una aplicación depende del plan. El plan de consumo admite un total de dos slots: el slot de producción y un slot de ensayo. Hay más ranuras disponibles para las aplicaciones que se ejecutan en otros planes. Consulte Límites de servicio para obtener más información.
- Al intercambiar una ranura, se restablecen las claves de las aplicaciones que tienen una configuración de aplicación
AzureWebJobsSecretStorageTypeigual afiles. - Cuando activa las ranuras, el portal pone su aplicación de funciones en modo solo lectura.
- Los intercambios de ranura pueden producir errores cuando la aplicación de funciones usa una cuenta de almacenamiento protegida como cuenta de almacenamiento predeterminada (configurada en
AzureWebJobsStorage). Para más información, consulte la referencia deWEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS. - Use nombres de aplicación de funciones inferiores a 32 caracteres. Los nombres de más de 32 caracteres pueden causar colisiones de ID de host.