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 este artículo se muestra cómo migrar las aplicaciones de funciones existentes del plan de consumo al plan de consumo flexible. Para la mayoría de las apps, esta migración es sencilla. Las aplicaciones que migran desde Windows también deben ser compatibles con Linux y pueden requerir cambios de código.
Importante
La compatibilidad con el hospedaje de aplicaciones de funciones en Linux en un plan de consumo se retira el 30 de septiembre de 2028. A partir de hoy, no se están realizando mejoras de características ni de lenguaje en el plan de Consumo para Linux. Siga este artículo para migrar las aplicaciones del plan de consumo para que se ejecuten en su lugar en el plan de consumo flexible. Para obtener más información sobre las fechas de finalización del soporte técnico del plan de Consumo para Linux, consulte Hosting del plan de Consumo de Azure Functions (heredado).
Métodos de migración
En este artículo se admite la migración a una aplicación de funciones de Linux en un plan de consumo flexible para aplicaciones linux y Windows. Functions proporciona varias maneras de simplificar la mayoría de los pasos de migración, especialmente para aplicaciones Linux.
En la tabla siguiente se muestran los métodos de migración disponibles para cada sistema operativo y se tratan en este artículo.
| Método de migración | Descripción | Linux | Windows |
|---|---|---|---|
| Azure Skills en GitHub Copilot | Deja que Copilot guíe y automatize tu migración de forma interactiva. | ✅ | ✅ |
| Comando de migración de la CLI | Use az functionapp flex-migration para automatizar la migración. |
✅ | ❌ |
| Comandos de la CLI estándar | Migración paso a paso mediante comandos CLI de Azure. | ➖ | ✅ |
| Azure Portal | Migración paso a paso en el portal de Azure. | ✅ | ✅ |
| Infraestructura como código | Cree código de migración repetible mediante plantillas de ARM, archivos Bicep o Terraform. | ➖ | ➖ |
✅ Admitido y destacado | ➖ Admitido, no destacado | ❌ No admitido
Para ver las instrucciones adecuadas para la aplicación, seleccione el sistema operativo en la parte superior del artículo.
Puedes revisar el flujo de trabajo de migración de Linux Consumption y el flujo de trabajo de migración de Windows Consumption en el repositorio de habilidades de Azure.
Qué cabe esperar
Los pasos específicos necesarios para migrar la aplicación plan de consumo dependen del sistema operativo y del método de migración específico:
La funcionalidad de Azure automatiza la mayor parte de la migración. Tus pasos a alto nivel son:
Sugerencia
Para iniciar la migración basada en GitHub Copilot, consulte Quickstart: Migración de aplicaciones de consumo de Linux a Flex Consumption mediante GitHub Copilot.
Configura GitHub Copilot usando los requisitos previos y luego usa las indicaciones en Iniciar la migración. Copilot te guía en la evaluación, preparación del código de Windows a Linux, creación y configuración del entorno de destino, despliegue, validación y transición a producción. Te pide tu opinión o aprobación cuando lo necesita.
Las siguientes secciones explican las tareas de comprobación y migración para referencia. No necesitas realizar los pasos manuales de CLI o portal cuando sigues el flujo de trabajo de Copilot.
Copilot mantiene la aplicación de origen en modo solo lectura durante la evaluación y la replicación. Los cambios en los disparadores de origen, configuración, estado de la app o recursos requieren aprobación explícita para la acción específica.
Independientemente del método de migración, estos son los principios generales de la migración:
- Comprueba la compatibilidad del código. Las aplicaciones de Linux en una versión de lenguaje compatible no suelen necesitar cambios en el código. Las aplicaciones de Windows también deben eliminar dependencias específicas de Windows antes de ejecutarse en Linux. Esta guía le ayuda a comprobar.
- Debe crear una nueva aplicación. El proceso de migración crea una nueva aplicación Flex Consumption junto con la existente, por lo que puede probar antes de cambiar.
- Use el mismo grupo de recursos. La nueva aplicación se ejecuta en el mismo grupo de recursos con acceso a las mismas dependencias.
- Controla el tiempo. Pruebe la nueva aplicación exhaustivamente antes de redirigir el tráfico y retirar el antiguo.
Nota:
Si usa Azure Government, Flex Consumption aún no está disponible allí. Revise esta guía ahora para que esté listo cuando esté disponible.
Ventajas de migrar al consumo flexible
Cuando migras una aplicación compatible, tus funciones obtienen estos beneficios:
- Arranques en frío más rápidos: las instancias siempre listas significan que las funciones responden con mayor rapidez.
- Mejor escalado: los controles de escalado por función y simultaneidad te ofrecen más control.
- Compatibilidad con redes virtuales: conecte las funciones a redes privadas y use puntos de conexión privados.
- Inversión activa: Flex Consumption es donde primero llegan nuevas características y mejoras.
Para obtener más información, consulte Flex Consumption plan benefits and hosting plan comparison( Ventajas del plan de consumo flexible y comparación de planes de hospedaje).
Implementaciones basadas en recursos
En este artículo no se muestra explícitamente cómo usar la infraestructura como código (IaC) para la migración. Sin embargo, puede seguir los mismos pasos de migración para convertir las plantillas de ARM, los archivos Bicep y las configuraciones de Terraform.
El plan de consumo flexible presenta una nueva sección functionAppConfig de la definición de recursos Microsoft.Web/sites, que reemplaza varias configuraciones de aplicación heredadas. Para obtener más información sobre estos cambios, consulte Desusos del plan de Consumo flexible.
Estos recursos pueden ayudarle a empezar a trabajar con implementaciones de recursos de Flex Consumption:
- Automatización de la implementación de recursos cubre los detalles completos de configuración de recursos.
- Los ejemplos listos para usar están disponibles para plantillas ARM, Bicep y Terraform.
Después de una migración correcta, actualice los archivos de implementación de recursos para que coincidan con la nueva configuración de Flex Consumption.
Prerrequisitos
Acceso a la suscripción de Azure que contiene una o varias aplicaciones de funciones que se van a migrar. La cuenta usada para realizar las tareas de migración debe tener los permisos siguientes:
- Cree y administre aplicaciones de funciones y planes de hospedaje de App Service.
- Asignar roles a identidades administradas.
- Cree y administre cuentas de almacenamiento.
- Cree y administre recursos de Application Insights.
- Acceda a todos los recursos dependientes de la aplicación, como Azure Key Vault, Azure Service Bus o Azure Event Hubs.
La asignación de los roles Propietario o Colaborador en el grupo de recursos suele proporcionar permisos suficientes.
Para migrar mediante el CLI de Azure o la GitHub Copilot:
- CLI de Azure, versión 2.77.0 o posterior. Obligatorio al usar comandos de CLI de Azure. Los scripts se prueban mediante CLI de Azure en Azure Cloud Shell.
- Inicie sesión en CLI de Azure ejecutando
az login. Asegúrese de que ha iniciado sesión en la suscripción que contiene las aplicaciones de funciones que desea migrar.
- La extensión resource-graph , que puede instalar mediante el
az extension addcomando :
az extension add --name resource-graph- La herramienta
jq, que se usa para trabajar con la salida JSON.
Para migrar mediante GitHub Copilot, configure GitHub Copilot en el modo deseado:
Inicie sesión en CLI de Azure si aún no lo ha hecho:
az loginAsegúrese de que ha iniciado sesión en la suscripción que contiene las aplicaciones de funciones que desea migrar.
Inicie la CLI de Copilot:
copilotAgregue la fuente del marketplace (solo la primera vez):
/plugin marketplace add microsoft/azure-skillsInstale el complemento:
/plugin install azure@azure-skillsDespués de la instalación, vuelva a cargar los servidores del Protocolo de contexto de modelo (MCP):
/mcp reloadCompruebe la instalación:
/mcp showDebería ver que el complemento de Azure aparece con una marca de verificación. La
functionappherramienta forma parte de este complemento.
Sugerencia
Si Copilot tiene como destino la suscripción incorrecta, pídale que use un identificador de suscripción específico. Para encontrar el identificador de suscripción, ejecute
az account show --query id -o tsv. Si Copilot se conecta al inquilino de Azure incorrecto, pida a Copilot que use su identificador de inquilino específico al realizar llamadas Azure. Para encontrar el identificador de inquilino, ejecuteaz account show --query tenantId -o tsv.
Identificación de las aplicaciones potenciales que se van a migrar
Sugerencia
¿Ya sabe qué aplicación se va a migrar? Puede omitir esta sección y ir directamente a Evaluar la aplicación existente.
Si tiene varias aplicaciones de función y no está seguro de cuáles deben migrarse, esta sección le ayuda a encontrarlos. Obtendrá una lista de nombres de aplicación, grupos de recursos, ubicaciones y pilas en tiempo de ejecución.
Para iniciar una migración interactiva que examine la suscripción y le pida que elija qué aplicaciones migrar, use este mensaje:
migrate my linux function apps in azure from consumption to flex consumption
Copilot identifica las aplicaciones de consumo de Linux aptas, le permite elegir cuáles se van a migrar y, a continuación, le guía por la evaluación, la creación de aplicaciones, la configuración y la implementación de cada aplicación. Continúe con los pasos de migración.
Si solo desea ver qué aplicaciones son compatibles sin iniciar la migración, use este comando en su lugar:
list my linux consumption apps eligible for flex consumption migration
Copilot devuelve una lista de aplicaciones aptas e inelegibles, junto con las razones de cualquier incompatibilidad. Después, puede migrar una aplicación específica utilizando el aviso en Iniciar la migración para Linux.
Para identificar las aplicaciones de Windows Consumption en tu suscripción sin iniciar una migración, utiliza este prompt:
What Windows Consumption Function Apps can I upgrade to Flex Consumption?
Copilot detecta aplicaciones candidatas y comprueba su región, tiempo de ejecución, configuración de despliegue y otros requisitos de compatibilidad. El descubrimiento identifica candidatos, no garantiza que cada aplicación esté lista para migrar. Revisa la evaluación antes de continuar.
Para migrar una aplicación específica, utilice la indicación de Iniciar la migración.
Evaluación de la aplicación existente
La habilidad de Azure realiza estas tareas automáticamente. Al usar la aptitud Azure, vaya directamente a Iniciar la migración.
Antes de migrar, ejecute esta lista de comprobación rápida para asegurarse de que la aplicación está lista. La mayoría de las aplicaciones pasan estas comprobaciones sin problemas:
Al usar Copilot, solicita una evaluación sin crear una aplicación objetivo:
Assess whether my Windows Consumption Function App <APP_NAME> is ready to migrate to Flex Consumption.
Sustituye <APP_NAME> por el nombre de tu app de origen. Copilot genera una evaluación de compatibilidad y registra los bloqueadores y la preparación necesaria. Para aplicaciones de Windows, también comprueba las dependencias de código específicas de Windows.
Confirmación de la compatibilidad de regiones
Confirme que el plan de Flex Consumption actualmente está soportado en la misma región que la aplicación del plan de consumo que quiere migrar.
Confirmado: Cuando la salida del comando
az functionapp flex-migration listo la evaluación de Copilot incluye su aplicación en la listaeligible_apps, el plan de Flex Consumption es compatible en la misma región utilizada por su aplicación actual de Linux Consumption. En este caso, puede continuar para Comprobar la compatibilidad de la pila de idiomas.
Acción necesaria: Cuando la salida incluye la aplicación en la
ineligible_appslista, verá un mensaje de error que indicaThe site '<name>' is not in a region supported in Flex Consumption. Please see the list of regions supported in Flex Consumption by running az functionapp list-flexconsumption-locations. En este caso, el plan Flex Consumption no se admite en la región que usa la aplicación Linux Consumption actual.
Copilot comprueba si Flex Consumption está disponible en la región de la app de origen y registra el resultado en la evaluación. Si la región no está soportada, resuelve la elección de ubicación antes de crear la aplicación objetivo.
Si su región no está actualmente admitida y aún así decide migrar su aplicación de función, la aplicación debe ejecutarse en otra región donde se admita el Flex Consumption plan. Sin embargo, ejecutar la aplicación en una región diferente de otros servicios conectados puede introducir una latencia adicional. Asegúrese de que la nueva región puede cumplir los requisitos de rendimiento de la aplicación antes de completar la migración.
Comprobación de la compatibilidad de la pila de idiomas
Los planes de Consumo flexible no son compatibles con todas las pilas de lenguajes de funciones. Esta tabla indica qué stacks de idiomas se admiten actualmente.
| Configuración de pila | Nombre de pila | Compatible |
|---|---|---|
dotnet-isolated |
.NET (modelo de trabajo aislado) | ✅ Sí |
node |
JavaScript/TypeScript | ✅ Sí |
java |
Java | ✅ Sí |
python |
Python | ✅ Sí |
powershell |
PowerShell | ✅ Sí |
go |
Go | ✅ Sí |
dotnet |
.NET (modelo en proceso) | ❌ No |
custom |
Controladores personalizados | ✅ Sí |
Confirmado: Si el comando
az functionapp flex-migration listo la evaluación de Copilot incluyeron su aplicación en la lista deeligible_apps, la aplicación de consumo de Linux ya utiliza un stack de lenguajes admitido por Flex Consumption y puede proceder a Verificar la compatibilidad de la versión del stack.
Acción necesaria: Si la salida incluyó tu aplicación de Consumo de Linux en la
ineligible_appslista con un mensaje de error que indicaRuntime '<name>' not supported for function apps on the Flex Consumption plan., tu aplicación de Consumo de Linux no está ejecutando un runtime compatible con Flex Consumption.
Si la aplicación de funciones utiliza un entorno de ejecución no compatible:
- En el caso de las aplicaciones de C# que se ejecutan en proceso con el entorno de ejecución (
dotnet), primero debe migrar la aplicación a .NET aislado. Para obtener más información, consulte Migración de aplicaciones de C# desde el modelo en proceso al modelo de trabajo aislado.
Copilot lee el entorno de ejecución de origen y la versión del host de Functions durante la evaluación. Un runtime del trabajador no compatible o una versión del host de Functions distinta de la versión 4 requiere preparación antes de la migración.
Comprobación de la compatibilidad de la versión de la pila
Antes de migrar, asegúrese de que se admite la versión de la pila de ejecución de la aplicación cuando se ejecuta en un plan de Consumo flexible en la región actual.
Confirmado: Si el comando
az functionapp flex-migration listo la evaluación de Copilot incluye su aplicación en la listaeligible_apps, su aplicación de Consumo para Linux ya usa una versión del conjunto de lenguajes compatible con Consumo flexible y puede seguir a Verificar el uso de los espacios de implementación.
Acción necesaria: Si la salida incluye tu aplicación en la
ineligible_appslista con un mensaje de error que indicaInvalid version {0} for runtime {1} for function apps on the Flex Consumption plan. Supported versions for runtime {1} are {2}., tu aplicación de Consumo de Linux no ejecuta un runtime compatible con Flex Consumption.
Copilot compara la versión en el idioma original con las versiones soportadas por Flex Consumption en la región objetivo. Utiliza metadatos del proyecto o del paquete de despliegue cuando falta o es ambigua la configuración de Azure, y te pide que selecciones una versión objetivo cuando la evidencia no identifica una única versión compatible.
Si su aplicación de funciones utiliza una versión de stack de lenguaje no compatible, primero actualice su código de aplicación a una versión compatible antes de migrar al plan de consumo flexible.
Verificar el uso de espacios de implementación
Las aplicaciones del plan de consumo pueden tener un slot de implementación definido. Para obtener más información, consulte Ranuras de implementación de Azure Functions. Sin embargo, el plan de consumo flexible no admite actualmente ranuras de implementación. Antes de migrar, determine si la aplicación tiene una ranura de implementación. Si es así, defina una estrategia para administrar su aplicación sin espacios de implementación al ejecutarse en un plan de Consumo flexible.
Confirmado: Cuando la aplicación actual tiene ranuras de implementación habilitadas, el comando
az functionapp flex-migration listo la evaluación de Copilot muestra la función de aplicación en la listaeligible_appssin mostrar advertencias. Continúe con Comprobar el uso de certificados.
Acción requerida: Tu aplicación actual tiene slots de implementación habilitados, y la salida muestra tu aplicación de funciones en la
eligible_appslista pero agrega una advertencia que indica:The site '<name>' has slots configured. This condition doesn't block migration, but please note that slots aren't supported in Flex Consumption.
Copilot detecta las ranuras de despliegue de origen y las registra en la evaluación. Dado que Consumo flexible no admite ranuras, elige cómo consolidar su funcionalidad o utiliza aplicaciones independientes antes de continuar.
Si la aplicación de funciones usa actualmente ranuras de implementación, actualmente no puede reproducir esta funcionalidad en el plan de consumo flexible. Antes de migrar, tenga en cuenta las siguientes opciones:
- Rediseñe la aplicación para usar aplicaciones de funciones independientes. De este modo, puede desarrollar, probar e implementar el código de función en una segunda aplicación que no sea de producción en lugar de usar ranuras.
- Migre cualquier código o función nueva desde el slot de implementación al slot principal (producción).
Comprobación del uso de certificados
El plan Flex Consumption soporta certificados TLS/SSL mediante un modelo de certificado con alcance de sitio. A diferencia de otros planes de hospedaje en los que los certificados se comparten entre aplicaciones de la misma región y grupo de recursos, los certificados de consumo flexible se limitan a cada aplicación individual. Si la aplicación existente usa certificados, tenga en cuenta estas diferencias:
- La configuración de aplicación
WEBSITE_LOAD_CERTIFICATESno se usa en el plan Flex Consumption. En cambio, puede hacer accesible cada certificado al código con el conmutador Accesible para el código de la aplicación en el portal. Para obtener más información, consulte Hacer que un certificado sea accesible para el código. - Dado que flex Consumption se ejecuta en Linux, el código debe cargar certificados desde rutas de acceso de archivo (
/var/ssl/certspara público,/var/ssl/privatepara privado) en lugar de desde el almacén de certificados de Windows. - Cada aplicación admite un máximo de tres certificados privados y tres certificados públicos (.cer).
Confirmado: Si el comando
az functionapp flex-migration listo la evaluación de Copilot incluye su aplicación en la listaeligible_apps, su aplicación Linux Consumption es compatible y puede continuar para comprobar sus desencadenadores de Blob Storage. Si la aplicación usa certificados, debe agregarlos a la nueva aplicación después de la migración.
Acción requerida: Si la salida incluye su aplicación en la lista
ineligible_appscon un error relacionado con certificados, revise las consideraciones sobre certificados con ámbito de sitio y compruebe que su aplicación puede funcionar dentro de los límites de los certificados.
Copilot cataloga los certificados utilizados por la aplicación de origen y comprueba los límites de certificados con alcance del sitio. No transfiere automáticamente los certificados. Vuelve a añadir los certificados necesarios utilizando el proceso de certificado con alcance de sitio y actualiza el código que lee el almacén de certificados de Windows para usar rutas de archivos de certificados de Linux.
Si la aplicación usa certificados, planee volver a agregarlos a la nueva aplicación Flex Consumption después de la migración mediante el proceso de certificado con ámbito de sitio. Asegúrese de que las necesidades de certificado de la aplicación se ajusten a los límites de ámbito de sitio (3 privados + 3 públicos por aplicación).
Comprobación de los desencadenadores de Blob Storage
Actualmente, el plan de Consumo flexible solo admite desencadenadores basados en eventos para Azure Blob Storage, que se definen con una configuración Source de EventGrid. El plan no admite desencadenadores de Blob Storage que utilicen sondeo de contenedores y usen una configuración Source de LogsAndContainerScan. Dado que el sondeo de contenedores es el valor predeterminado, debe determinar si alguno de los desencadenadores de Blob Storage usa la configuración de origen predeterminada LogsAndContainerScan . Para más información, consulte Desencadenador en un contenedor de blobs.
Confirmado: Si el comando
az functionapp flex-migration listo la evaluación de Copilot incluye tu aplicación en la listaeligible_apps, tu aplicación de Consumo para Linux no está utilizando desencadenadores de sondeo de almacenamiento Blob. Puede seguir considerando los servicios dependientes.
Acción necesaria: Si la salida incluye su aplicación en la lista
ineligible_appscon un mensaje de error indicandoThe site '<name>' has blob storage triggers that don't use Event Grid as the source: <list> Flex Consumption only supports Event Grid-based blob triggers. Please convert these triggers to use Event Grid or replace them with Event Grid triggers before migration., su aplicación de consumo de Linux no es compatible con Flex Consumption.
Copilot identifica los enlaces de desencadenador Blob por tipo y marca cualquier desencadenador cuya fuente no sea explícitamente EventGrid. Guía el cambio de código requerido y la configuración de la suscripción a eventos antes del despliegue.
Si su aplicación tiene desencadenadores de Blob Storage que no tienen un origen de Event Grid, debe cambiar a un origen de Event Grid antes de migrar al plan de Consumo Flexible.
Importante
Antes de convertir un disparador de Blob de sondeo, verifica que Event Grid pueda alcanzar el endpoint de entrega de eventos de la aplicación de función objetivo. La entrega push de Event Grid no soporta la entrega a través de endpoints privados. Si el objetivo es solo privado, resuelve la arquitectura de entrega de eventos antes de la migración; la integración de red virtual por sí sola no proporciona conectividad entrante desde Event Grid.
Los pasos básicos para cambiar un desencadenador de Blob Storage existente a un origen de Event Grid son:
Agregue o actualice la propiedad
sourceen la definición del desencadenador de Blob Storage aEventGridy vuelva a implementar la aplicación.Constrúyase la URL del punto de conexión en la aplicación de funciones que se utilizará para la suscripción de eventos.
Cree una suscripción de eventos en el contenedor de Blob Storage.
Para más información, consulte Tutorial: Desencadenamiento de Azure Functions en contenedores de blobs mediante una suscripción de eventos.
Comprueba dependencias de código específicas de Windows
Flex Consumption funciona en Linux. Revisa tu app para detectar las API exclusivas de Windows, paquetes, binarios nativos, rutas específicas de Windows y suposiciones sobre mayúsculas y minúsculas, módulos PowerShell y acceso al almacén de certificados de Windows. Las aplicaciones dirigidas a .NET Framework o publicadas para un identificador de ejecución de Windows también requieren preparación.
Flex Consumption no soporta dependencias gestionadas por PowerShell. Antes de migrar, empaqueta todos los módulos de PowerShell necesarios con tu aplicación en su carpeta raíz Modules y verifica que esos módulos soportan Linux. Un requirements.psd1 archivo por sí solo no instala módulos en la app de destino. Para más información, consulta la gestión de dependencias de PowerShell.
Durante la evaluación, Copilot ofrece un escaneo heurístico de dependencias. Proporciona un directorio de fuentes local o un repositorio clonado cuando sea posible. Si el código fuente no está disponible, Copilot puede recuperar el paquete desplegado, pero los artefactos compilados pueden limitar la cobertura de escaneo. El escaneo no es exhaustivo y tú eres responsable de verificar la compatibilidad con Linux.
Compila y valida cualquier cambio de código necesario antes de desplegar en la nueva aplicación. Si no puedes eliminar las dependencias necesarias de Windows, considera el plan Premium en Windows en lugar de Flex Consumption.
Consideración de los servicios dependientes
Sugerencia
¿Aplicación sencilla de solo HTTP? Si las funciones solo usan desencadenadores HTTP y no se conectan a otros servicios de Azure, es probable que omita la mayoría de esta sección. Recuerde actualizar los clientes para que apunten a la dirección URL de la nueva aplicación después de la migración.
Dado que Azure Functions es un servicio de proceso, tenga en cuenta el efecto de la migración en los datos y los servicios tanto ascendentes como descendentes de la aplicación.
Estrategias de protección de datos
Para proteger los datos ascendentes y descendentes durante la migración, use estas estrategias:
- Idempotency: asegúrese de que las funciones pueden procesar de forma segura el mismo mensaje varias veces sin efectos secundarios negativos. Para obtener más información, consulte Diseño de funciones de Azure para entradas idénticas.
- Registro y supervisión: para realizar un seguimiento del procesamiento de mensajes, habilite el registro detallado en ambas aplicaciones durante la migración. Para obtener más información, consulte Supervisar ejecuciones en Azure Functions.
- Control de puntos de control: para los desencadenadores de streaming, como el desencadenador de Event Hubs, implemente los comportamientos de punto de control correctos para realizar un seguimiento de la posición de procesamiento. Para obtener más información, consulte Azure Functions procesamiento de eventos confiables.
- Procesamiento paralelo: considere la posibilidad de ejecutar temporalmente ambas aplicaciones en paralelo durante la transición. Asegúrese de supervisar y validar cuidadosamente cómo se procesan los datos desde el servicio ascendente. Para obtener más información, consulte Soluciones personalizadas de varias regiones para lograr resistencia.
- Transición gradual: en el caso de los sistemas de gran volumen, considere la posibilidad de implementar una transición gradual mediante la redirección de partes del tráfico a la nueva aplicación. Puede administrar el enrutamiento de solicitudes ascendentes desde las aplicaciones mediante servicios como Azure API Management o Azure Application Gateway.
Mitigaciones por tipo de desencadenador
Planifique estrategias de mitigación para proteger los datos de los desencadenadores de funciones específicos de su aplicación.
| Desencadenador | Riesgo para los datos | Estrategia |
|---|---|---|
| Azure Blob Storage | Alto | Cree un contenedor independiente para el desencadenador basado en eventos en la nueva aplicación. Con la nueva aplicación en ejecución, cambie los clientes para que usen el nuevo contenedor. Permitir que el contenedor original se procese completamente antes de detener la aplicación antigua. |
| Azure Cosmos DB | Alto | Cree un contenedor de concesión dedicado específicamente para la nueva aplicación. Establezca este nuevo contenedor de concesión como configuración leaseCollectionName en la nueva aplicación.Requiere que las funciones sean idempotentes o que pueda controlar los resultados del procesamiento duplicado de la fuente de cambios. Establezca la configuración StartFromBeginning en false en la nueva aplicación para evitar volver a procesar toda la fuente. |
| Azure Event Grid | Media | Vuelva a crear la misma suscripción de eventos en la nueva aplicación. Requiere que las funciones sean idempotentes o que puedas controlar los resultados del procesamiento de eventos duplicados. |
| Azure Event Hubs | Media | Cree un nuevo grupo de consumidores para usarlo en la nueva aplicación. Para más información, consulte Estrategias de migración para desencadenadores de Event Grid. |
| Azure Service Bus | Alto | Cree un tema o una cola nuevos para usarlos en la nueva aplicación. Actualice remitentes y clientes para usar el nuevo tema o cola. Después de que el tema original esté vacío, cierre la aplicación antigua. |
| Cola de Azure Storage | Alto | Cree una nueva cola que sea utilizada por la nueva aplicación. Actualice los remitentes y clientes para usar la nueva cola. Después de que la cola original esté vacía, cierre la aplicación antigua. |
| HTTP | Bajo | Recuerde cambiar los clientes y otras aplicaciones o servicios para que tengan como destino los nuevos puntos de conexión HTTP después de la migración. |
| Temporizador | Bajo | Durante la migración, asegúrese de desplazar la programación del temporizador entre las dos aplicaciones para evitar ejecuciones simultáneas de ambas aplicaciones. Deshabilite el desencadenador de temporizador en la aplicación anterior después de que la nueva aplicación se ejecute correctamente. |
Tareas anteriores a la migración
Antes de crear la nueva aplicación Flex Consumption, recopile información sobre la aplicación actual. Este paso garantiza que no pierda ninguna configuración durante la transición.
Cuando utilizas Copilot, la habilidad realiza un inventario de esta configuración como parte del flujo de trabajo de migración. Revisa sus hallazgos y decisiones en lugar de ejecutar los comandos manuales de nuevo.
Sugerencia
Este paso es principalmente el trabajo de copiar y pegar. Recopile la configuración de la aplicación existente para que pueda aplicarla a la nueva aplicación.
Complete estas tareas antes de migrar:
Recopilación de la configuración de la aplicación
Si tiene previsto usar las mismas fuentes de desencadenadores y enlaces, así como otras configuraciones de los ajustes de la aplicación, primero anote los ajustes actuales de la aplicación en su aplicación existente del plan Consumo.
Copilot revisa nombres de configuración de apps sin mostrar valores secretos. Te pregunta si deseas copiar la configuración de origen filtrada o aplazarla para que puedas configurar las dependencias de destino de forma aislada. Si pospones la configuración, el despliegue espera hasta que la configuración de destino requerida esté lista.
Precaución
La configuración de la aplicación suele contener claves y otros secretos compartidos. Almacene siempre la configuración de la aplicación de forma segura, idealmente cifrada. Para mejorar la seguridad, utilice la autenticación de Microsoft Entra ID con identidades administradas en la nueva aplicación del plan Flex Consumption en lugar de secretos compartidos.
Recopilación de configuraciones de aplicación
Existen otras configuraciones de aplicación más allá de la configuración de la aplicación. Capture estas configuraciones de la aplicación existente para que pueda volver a crearlas correctamente en la nueva aplicación.
Revise esta configuración. Si alguno de ellos existe en la aplicación actual, decida si desea volver a crearlos en la nueva aplicación de plan de consumo flexible:
| Configuración | Configuración | Comentario |
|---|---|---|
| Configuración de CORS | cors |
Determina cualquier configuración existente de uso compartido de recursos entre orígenes (CORS), que los clientes podrían necesitar. |
| Dominios personalizados | Si su aplicación está utilizando actualmente un dominio distinto a *.azurewebsites.net, debe reemplazar esta asignación de dominio personalizada por una asignación a su nueva aplicación. |
|
| Versión de HTTP | http20Enabled |
Determina si la aplicación requiere HTTP 2.0. |
| Solo HTTPS | httpsOnly |
Determina si se requiere TSL/SSL para acceder a la aplicación. |
| Certificados de cliente entrantes | clientCertEnabledclientCertModeclientCertExclusionPaths |
Establece los requisitos de las solicitudes de cliente que usan certificados para la autenticación. |
| Límite máximo de escalabilidad horizontal | WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT |
Establece el límite en instancias escaladas horizontalmente. El valor máximo predeterminado es 200. Este valor se encuentra en la configuración de la aplicación, pero en una aplicación de plan de consumo flexible, se agrega como una configuración de sitio (maximumInstanceCount). |
| Versión mínima de TLS de entrada | minTlsVersion |
Establece una versión mínima de TLS requerida por la aplicación. |
| Cifrado TLS de entrada mínimo | minTlsCipherSuite |
Establece un requisito mínimo de cifrado TLS para la aplicación. |
| Recursos compartidos de Azure Files montados | azureStorageAccounts |
Determina si existen recursos compartidos de archivos montados explícitamente en la aplicación (solo Linux). |
| Credenciales de publicación de autenticación básica de SCM | scm.allow |
Determina si el scm sitio de publicación está habilitado. Aunque no se recomienda para la seguridad, algunos métodos de publicación lo requieren. |
Copilot hace un inventario de la configuración del sitio, los límites de escala, CORS, los dominios personalizados y otras configuraciones. Registra los elementos no soportados o manipulados manualmente en la evaluación. Los metadatos explícitos de montaje en Azure Files son solo de inventario para esta migración de Windows.
Identificación de identidades administradas y acceso basado en roles
Antes de migrar, documente si la aplicación se basa en la identidad administrada asignada por el sistema o en cualquier identidad administrada asignada por el usuario. Determine los permisos de control de acceso basado en rol (RBAC) concedidos a estas identidades. Debe recrear la identidad administrada asignada por el sistema y las asignaciones de roles en su nueva aplicación. Puede reutilizar las identidades administradas asignadas por el usuario en la nueva aplicación.
Copilot realiza un inventario de las identidades administradas asignadas por el sistema y por el usuario, así como de sus asignaciones de roles. Utiliza este inventario para configurar las identidades del objetivo y recrear el acceso necesario sobre los recursos apropiados.
Identificación de la configuración de autenticación integrada
Antes de migrar a Flex Consumption, recopile información sobre las configuraciones de autenticación integradas. Si quiere que la aplicación use los mismos comportamientos de autenticación de cliente, debe volver a crearlos en la nueva aplicación. Para obtener más información, consulte Authentication and authorization in Azure Functions.
Preste especial atención a los URI de redireccionamiento, las redirecciones externas permitidas y la configuración de tokens para garantizar una transición sin problemas para los usuarios autenticados.
Copilot realiza un inventario de los proveedores habilitados y del comportamiento de autenticación sin exponer los secretos de los proveedores. Identifica los URI de callback específicos de cada objetivo y guía la configuración del proveedor antes del despliegue del código. No copia automáticamente los registros de proveedores ni los secretos.
Revisión de las restricciones de acceso de entrada
Puede establecer restricciones de acceso de entrada en las aplicaciones de un plan de consumo. Es posible que quiera mantener estas restricciones en la nueva aplicación. Para cada restricción que defina, asegúrese de capturar estas propiedades:
- Direcciones IP o intervalos CIDR
- Valores de prioridad
- Tipo de acción (Permitir/Denegar)
- Nombres de las reglas
Copilot realiza un inventario y recrea las restricciones de acceso compatibles. No debilita automáticamente esas restricciones para que las comprobaciones de salud del despliegue o la validación HTTP tengan éxito.
Al ejecutarse en el plan de consumo flexible, puede volver a crear estas restricciones basadas en IP de entrada. Puede proteger aún más la aplicación implementando otras restricciones de red, como la integración de red virtual y los puntos de conexión privados entrantes. Para obtener más información, consulte Integración de la red virtual.
Inicio de la migración
Importante
Si el acceso con clave compartida está deshabilitado en el host seleccionado o en la cuenta de almacenamiento de implementación, o si tu organización requiere acceso al almacenamiento sin claves, configura la autenticación de identidad administrada y las asignaciones de roles necesarias tanto para el almacenamiento del host como para el almacenamiento de implementación. Los flujos básicos de creación basados en CLI descritos en este artículo utilizan cadenas de conexión de almacenamiento. Crear la app con claves y convertirla después no cumple con el requisito de prohibir la autenticación por clave compartida durante la provisión. Para más información, consulte Conexiones de almacenamiento de host basadas en identidad y Configurar configuraciones de despliegue.
Si ha usado la solicitud de detección en la sección Identificar, la habilidad ya ha evaluado, creado y configurado su nueva aplicación Consumo flexible. Puede omitir esta sección y continuar con los pasos de migración.
Si ya sabe qué aplicación se va a migrar, use este mensaje:
migrate my app <APP_NAME> to flex consumption
La habilidad gestiona automáticamente la evaluación, la creación de aplicaciones y la migración de configuración az functionapp flex-migration start, que son equivalentes al comando y sus pasos de comprobación.
Después de iniciar correctamente la migración, continúe con Obtención del paquete de implementación de código.
Si ya sabe qué aplicación se va a migrar, use este mensaje:
Migrate my Windows Consumption Function App <APP_NAME> to Flex Consumption.
Sustituye <APP_NAME> por el nombre de tu app de origen. Copilot presenta el plan de migración, realiza evaluaciones, inventaría la configuración y crea una nueva aplicación Flex Consumption junto a la aplicación de origen.
Por defecto, el flujo de trabajo propone <APP_NAME>-flex como nombre de la aplicación de destino. Copilot te pide que elijas si reutilizar la cuenta de almacenamiento fuente, crear una nueva o usar una cuenta existente específica antes de crear la aplicación objetivo. Puedes solicitar un nombre de destino diferente o indicar tu preferencia de almacenamiento en el prompt. Revisa la elección de almacenamiento porque las dependencias compartidas permiten que ambas aplicaciones procesen los mismos eventos.
Copilot comprueba si las cuentas de almacenamiento seleccionadas permiten la autenticación por clave compartida y pregunta sobre los requisitos de política solo de identidad. Si no se permite la creación basada en claves, Copilot pausa antes de crear la aplicación objetivo. Aprovisiona una aplicación Flex Consumption vacía dedicada a esta migración en la misma suscripción, mediante infraestructura como código con prioridad para la identidad. Configura el acceso mediante identidad administrada tanto para el almacenamiento de host como para el de implementación, las asignaciones de roles requeridas y la supervisión. No implementes el código de la función todavía. Para ejemplos de provisionamiento, véase los ejemplos de infraestructura como código de Flex Consumption.
Devuelva el ID completo de recurso de Azure del destino y la ruta guardada del archivo de progreso. Copilot verifica el destino existente y, tras tu aprobación, reanuda la configuración y el despliegue sin crear otra aplicación. Utilice este indicador
Resume the Flex Consumption migration for <APP_NAME> using progress at <PROGRESS_FILE_PATH>.
I provisioned a keyless target at <TARGET_RESOURCE_ID>. Use that existing target; do not create another app.
Antes del despliegue, Copilot guía la preparación del código de Windows a Linux, la configuración de destino, la autenticación integrada y la seguridad de desencadenadores no HTTP. Luego ofrece el despliegue a través de una pipeline actualizada, un proyecto local o un paquete de despliegue compatible.
Por defecto, Copilot registra el progreso en .azure-upgrade/<SOURCE_APP_NAME>/upgrade-status.md. Para reanudar, utiliza este prompt:
Resume the Flex Consumption migration for <APP_NAME>.
Obtención del paquete de implementación de código
Para volver a implementar la aplicación, necesita los archivos de origen del proyecto o el paquete de implementación. Lo ideal es mantener los archivos del proyecto en el control de código fuente para que pueda volver a implementar fácilmente el código de función en la nueva aplicación. Si tiene los archivos de código fuente, puede omitir esta sección y continuar con Capture performance benchmarks (opcional) (Captura de pruebas comparativas de rendimiento [opcional]).
Si ya no tiene acceso a los archivos de origen del proyecto, puede descargar el paquete de implementación actual de la aplicación plan de consumo existente en Azure. La ubicación del paquete de implementación depende de si se ejecuta en Linux o Windows.
Las aplicaciones del plan de consumo en Linux mantienen el archivo de paquete ZIP de implementación en una de estas ubicaciones:
Un contenedor de Azure Blob Storage llamado
scm-releasesen la cuenta de almacenamiento de host predeterminada (AzureWebJobsStorage). Este contenedor es el origen de implementación predeterminado para una aplicación de plan de consumo en Linux.Si la aplicación tiene una configuración de
WEBSITE_RUN_FROM_PACKAGEque es una dirección URL, el paquete se encuentra en una ubicación accesible externamente que se mantiene. Un paquete externo debe hospedarse en un contenedor de Blob Storage con acceso restringido. Para obtener más información, consulte Dirección URL del paquete externo.
Sugerencia
Si restringe el acceso de la cuenta de almacenamiento solo a identidades administradas, podría necesitar concederle a la cuenta de Azure acceso de lectura al contenedor de almacenamiento agregándola al rol Storage Blob Data Reader.
El paquete de implementación se comprime mediante el squashfs formato . Para ver lo que hay dentro del paquete, debe usar herramientas que puedan descomprimir este formato.
Siga estos pasos para descargar el paquete de implementación de la aplicación actual:
La funcionalidad de migración de Copilot intenta descargar y desplegar su proyecto de código existente en la nueva aplicación. Si no tiene éxito, en su lugar le orienta a través de la obtención e implementación del paquete de código como parte del proceso de migración. Puede omitir esta sección y continuar con los pasos de migración.
La ubicación de los archivos de origen del proyecto depende de la configuración de la WEBSITE_RUN_FROM_PACKAGE aplicación como se indica a continuación:
WEBSITE_RUN_FROM_PACKAGE valor |
Ubicación del archivo de origen |
|---|---|
1 |
Los archivos están en un paquete ZIP que se almacena en el recurso compartido de Azure Files de la cuenta de almacenamiento definida por la configuración WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. La configuración WEBSITE_CONTENTSHARE define el nombre del recurso de archivos compartido. |
| Dirección URL de un punto de conexión | Los archivos se encuentran en un paquete ZIP en una ubicación accesible externamente que se mantiene. Un paquete externo debe hospedarse en un contenedor de Blob Storage con acceso restringido. Para obtener más información, consulte Dirección URL del paquete externo. |
Copilot pide primero un directorio de origen local. Si el origen no está disponible, ofrece la posibilidad de recuperar el paquete implementado desde el recurso compartido de contenido de la aplicación de origen o desde una URL de paquete externa. Comprueba si el paquete es adecuado para Linux y Flex Consumption; las compilaciones específicas de Windows requieren preparación en lugar de redespliegue directo.
Captura de pruebas comparativas de rendimiento (opcional)
Si planea validar la mejora del rendimiento en la aplicación en función de la migración al plan de consumo flexible, considere la posibilidad de capturar las pruebas comparativas de rendimiento del plan actual. A continuación, puedes compararlos con los mismos puntos de referencia para tu aplicación que se ejecuta en un plan Flex Consumption.
Sugerencia
Compare siempre el rendimiento en condiciones similares, como la hora del día, el día de la semana y la carga del cliente. Intente ejecutar las dos pruebas comparativas lo más cerca posible.
Estos son algunos puntos de referencia que se deben tener en cuenta para las pruebas de rendimiento estructuradas:
| Prueba comparativa sugerida | Comentario |
|---|---|
| Arranque en frío | Mida el tiempo de la primera solicitud a la primera respuesta después de un período de inactividad. |
| Rendimiento | Mida las solicitudes máximas por segundo mediante herramientas de pruebas de carga para determinar cómo la aplicación controla las solicitudes simultáneas. |
| Latencia | Realice un seguimiento de los tiempos de respuesta de P50, P95 y P99 bajo varias condiciones de carga. Puede supervisar estas métricas en Application Insights. |
Use esta consulta de Kusto para revisar los tiempos de respuesta de latencia sugeridos en Application Insights:
requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart
Pasos de migración
Para migrar las funciones de una aplicación de plan de consumo a una aplicación de plan de consumo flexible, siga estos pasos principales:
Comprobación de la aplicación Flex Consumption creada y configurada
Después de ejecutar el comando az functionapp flex-migration start , compruebe que la nueva aplicación Flex Consumption se ha creado correctamente y configurado correctamente. Estos son algunos pasos para validar los resultados de la migración:
La habilidad de migración de Copilot verifica automáticamente la nueva aplicación como parte de la migración. Si inició la migración con un consulta de Copilot en Iniciar la migración para Linux, la aptitud ya ha comprobado que la aplicación se creó y configuró correctamente. Puede omitir esta sección y continuar con Configurar la autenticación integrada.
Revisión del resumen de la migración
El comando de migración automatizada transfiere la mayoría de las configuraciones. Sin embargo, compruebe manualmente que estos elementos han sido migrados. Es posible que tenga que configurarlos manualmente:
- Certificados: Vuelve a añadir certificados TLS/SSL a la aplicación Flex Consumption utilizando el proceso de certificados con alcance del sitio.
- Ranuras de implementación: no se admite en el Consumo flexible.
- Configuración de autenticación integrada: debe volver a configurar esta configuración manualmente.
- Configuración de CORS: es posible que tenga que comprobar esta configuración manualmente en función de la configuración.
Si falta alguna configuración crítica o es incorrecta, configúrela manualmente mediante los pasos descritos en las secciones Windows proceso de migración de este artículo.
- Revisión final del plan
- Creación de una aplicación en el plan de consumo flexible
- Aplicación de la configuración de la aplicación migrada en la nueva aplicación
- Aplicación de otras configuraciones de aplicaciones
- Configuración de la escala y la simultaneidad
- Configurar los dominios personalizados y el acceso a CORS
- Configuración de identidades administradas y asignación de roles
- Configurar restricciones de acceso de red
- Habilitación de la supervisión
- Configuración de la autenticación integrada
- Implementa el código de tu aplicación en el nuevo recurso Flex Consumption
Revisión final del plan
Antes de continuar con el proceso de migración, dedique un momento a realizar estos últimos pasos preparatorios:
Cuando utilices Copilot, revisa la evaluación, el inventario de configuración, los cambios en el código, la opción de implementación y las decisiones sobre la seguridad de los desencadenadores antes de aprobar la creación y la implementación del destino. Una migración exitosa solo de validación no implica que se transfiera el tráfico de producción ni los desencadenantes.
Revise toda la información recopilada: revise todas las notas, los detalles de la configuración y los ajustes de la aplicación que documentó en las secciones de evaluación y premigración anteriores. Si algo no está claro, vuelva a ejecutar los comandos CLI de Azure o obtenga la información del portal.
Definir el plan de migración: en función de los resultados, cree una lista de comprobación para la migración que resalte:
- Cualquier configuración que necesite atención especial
- Desencadenadores y enlaces u otras dependencias que podrían verse afectados durante la migración
- Estrategia de pruebas para la validación posterior a la migración
- Plan de reversión si hay problemas inesperados
Planeación del tiempo de inactividad: considere cuándo detener la aplicación de funciones original para evitar la pérdida de datos y el procesamiento duplicado de eventos, y cómo esta migración podría afectar a los usuarios o a los sistemas de bajada. En algunos casos, es posible que tenga que deshabilitar funciones específicas antes de detener toda la aplicación.
Una revisión final cuidadosa ayuda a garantizar un proceso de migración más suave y minimiza el riesgo de pasar por alto configuraciones importantes.
Creación de una aplicación en el plan de consumo flexible
Puede crear una aplicación de funciones en el plan de consumo flexible junto con otros recursos necesarios Azure de varias maneras:
| Create Option (Opción de creación) | Artículos de referencia |
|---|---|
| GitHub Copilot | Usa el prompt de Windows en Iniciar la migración. Copilot confirma los recursos objetivo y crea la app como parte del flujo de trabajo guiado. |
| CLI de Azure | Creación de una aplicación de consumo flexible |
| portal de Azure | Crear una aplicación de funciones en el portal de Azure |
| Infraestructura como código |
Plantilla de ARM azd Bicep Terraform |
| Visual Studio Code | Visual Studio Code implementación |
| Visual Studio | Visual Studio implementación |
Sugerencia
Cuando sea posible, use Microsoft Entra ID para la autenticación en lugar de las cadenas de conexión, que contienen claves compartidas. El uso de identidades administradas es un procedimiento recomendado que mejora la seguridad mediante la eliminación de la necesidad de almacenar secretos compartidos directamente en la configuración de la aplicación. Si la aplicación original usó cadenas de conexión, el plan de consumo flexible admite identidades administradas. La mayoría de estos vínculos muestran cómo habilitar identidades administradas en la aplicación de funciones.
Aplicación de la configuración de la aplicación migrada en la nueva aplicación
Antes de implementar el código, configure la nueva aplicación con la configuración de la aplicación de plan Flex Consumption correspondiente desde la aplicación de funciones original.
Importante
No todas las configuraciones de la aplicación plan de consumo se admiten al ejecutarse en un plan de consumo flexible. Para más información, consulte Desuso de planes de Consumo flexible.
Tras la aprobación, Copilot copia los ajustes compatibles de la app sin mostrar ni persistir los valores secretos en bruto. Conserva el almacenamiento propiedad del destino y la configuración de Application Insights. También revisa las conversiones de nombres de : a __ necesarias en Linux y se detiene si los nombres de origen se asignan de forma ambigua.
Aplicación de otras configuraciones de aplicaciones
Busque la lista de otras configuraciones de aplicación de la aplicación antigua que recopiló durante la migración previa y establézcalas en la nueva aplicación.
Copilot aplica la configuración de sitio compatible a partir del inventario y verifica el destino. Los ajustes no soportados y los elementos que requieren manipulación manual permanecen como trabajo de seguimiento explícito en lugar de ser copiados silenciosamente.
Configuración de la escala y la simultaneidad
El plan Flex Consumption utiliza el escalado por función. Cada función dentro de la aplicación se escala de forma independiente en función de su carga de trabajo. El escalado está más estrictamente relacionado con la configuración de simultaneidad. Esta configuración le ayuda a tomar decisiones de escalado en función de las ejecuciones simultáneas actuales. Para obtener más información, consulte los temas Escalado por función y Simultaneidad en el artículo sobre el Plan de consumo flexible.
Si quiere que la nueva aplicación se escale como la aplicación original, considere la configuración de simultaneidad. Establecer valores de simultaneidad más altos puede dar lugar a que se creen menos instancias para controlar la misma carga.
Si establece un límite de escalado personalizado en la aplicación original, puede aplicarlo a la nueva aplicación. De lo contrario, vaya a la sección siguiente.
El número máximo de instancias predeterminado es 100. Establézcalo en un valor entre 1 y 1000.
Nota:
Reducir el número máximo de instancias por debajo de 40 para las aplicaciones de funciones HTTP puede provocar errores de solicitud frecuentes y ventanas de limitación prolongada cuando el tráfico supera la capacidad. Esta configuración está pensada únicamente para escenarios avanzados en los que se acepta una escalabilidad limitada y se ha probado de manera exhaustiva.
Copilot comprueba cualquier configuración máxima de escalabilidad horizontal de origen con el rango de consumo de Flex admitido antes de aplicarla. Si el origen no ha establecido un límite personalizado, se mantiene el límite predeterminado del destino. Revisa el ajuste de la concurrencia específico de la carga de trabajo tras la migración.
Configurar los dominios personalizados y el acceso a CORS
Si la aplicación original tenía dominios personalizados enlazados o la configuración de CORS, vuelva a crearlos en la nueva aplicación. Para obtener más información sobre los dominios personalizados, consulte Set up an existing custom domain in Azure App Service.
Copilot recrea una configuración CORS compatible y guía la configuración personalizada del dominio. Cualquier cambio en las vinculaciones de origen, DNS o enrutamiento de producción requiere aprobación separada; crear la aplicación objetivo no completa la conmutación del tráfico.
Configuración de identidades administradas y asignación de roles
La configuración de identidades administradas en la nueva aplicación depende del tipo de identidad administrada:
| Tipo de identidad administrada | Creación de la identidad | Asignaciones de roles |
|---|---|---|
| Asignada por el usuario | Opcional | Puede seguir usando las mismas identidades administradas asignadas por el usuario con la nueva aplicación. Debe reasignar estas identidades a la aplicación Flex Consumption y comprobar que todavía tienen las asignaciones de roles correctas en los servicios remotos. Si decide crear nuevas identidades para la nueva aplicación, debe asignar los mismos roles que las identidades existentes. |
| Asignado por el sistema | Sí | Dado que cada aplicación de funciones tiene su propia identidad administrada asignada por el sistema, debe habilitar la identidad administrada asignada por el sistema en la nueva aplicación y reasignar los mismos roles que en la aplicación original. |
Volver a crear correctamente las asignaciones de roles es clave para asegurarse de que la aplicación de funciones tiene el mismo acceso a Azure recursos después de la migración.
Sugerencia
Si la aplicación original usó cadenas de conexión u otros secretos compartidos para la autenticación, esta es una gran oportunidad para mejorar la seguridad de la aplicación cambiando al uso de Microsoft Entra ID autenticación con identidades administradas. Para más información, consulte Configurar conexiones a servicios remotos en Azure Functions.
Copilot habilita una identidad asignada por el sistema en el destino y vuelve a crear las asignaciones de roles necesarias para su nuevo principal. Verifica el acceso contra los recursos objetivo en lugar de reutilizar el principal de origen.
Configuración de restricciones de acceso a la red
Si la aplicación original tenía restricciones de acceso entrante basadas en IP, vuelva a crear cualquiera de las mismas reglas de acceso entrante que quiera mantener en la nueva aplicación.
Sugerencia
El plan flex Consumption es totalmente compatible con la integración de red virtual. Debido a esta compatibilidad, también puede usar puntos de conexión privados entrantes después de la migración. Para obtener más información, consulte Puntos de conexión privados.
Copilot recrea restricciones de acceso a fuentes compatibles y las verifica. Si esas restricciones impiden las pruebas HTTP directas, registra la validación como diferida en lugar de abrir el acceso automáticamente.
Habilitación de la supervisión
Antes de iniciar la nueva aplicación en el plan de consumo flexible, asegúrese de que Application Insights está habilitado. Al configurar Application Insights, puede solucionar cualquier problema que aparezca durante la implementación de código y el inicio.
Implemente una estrategia de supervisión completa que abarque las métricas, los registros y los costos de la aplicación. Con esta estrategia, puede validar el éxito de la migración, identificar los problemas rápidamente y optimizar el rendimiento y el costo de la nueva aplicación.
Si tiene previsto comparar esta nueva aplicación con la aplicación actual, asegúrese de que el esquema también recopila los puntos de referencia necesarios para la comparación. Para obtener más información, consulte Configuración de la supervisión.
Al utilizar Copilot, la habilidad verifica la configuración de Application Insights del destino antes de la implementación. Conserva la ingestión autenticada por Microsoft Entra cuando la fuente la utilizó y valida la telemetría tras el despliegue.
Configurar la autenticación integrada
Si la aplicación original usó la autenticación de cliente integrada (a veces llamada Easy Auth), vuelva a crearla en la nueva aplicación. Si planea reutilizar el mismo registro de cliente, asegúrese de establecer los puntos de conexión autenticados de la nueva aplicación en el proveedor de autenticación.
La aptitud de migración Copilot para Linux no automatiza la configuración de autenticación integrada. Use las pestañas CLI de Azure o Azure portal para volver a crear manualmente la configuración de autenticación.
Copilot guía la configuración y verificación proveedor por proveedor en el destino. Debes configurar los secretos del proveedor directamente a través del portal, una configuración existente con el secreto o una referencia de Key Vault, y registrar el URI de callback destino. Si la autenticación se aplaza, Copilot se detiene antes de desplegar el código para que el destino no exponga los endpoints previamente protegidos sin autenticación.
Implementa el código de tu aplicación en el nuevo recurso Flex Consumption
Después de configurar la nueva aplicación de plan flex Consumption en función de la configuración de la aplicación original, implemente el código en los nuevos recursos de la aplicación en Azure.
Precaución
Tras un despliegue exitoso, los disparadores activados en tu nueva aplicación pueden empezar a procesar inmediatamente los datos de los servicios conectados. Para minimizar los datos duplicados y evitar la pérdida de datos al iniciar la nueva aplicación y apagar la aplicación original, revise las estrategias que definió en mitigaciones por tipo de desencadenador.
Antes de la implementación, Copilot clasifica cada desencadenador y propone desactivar las funciones que no sean HTTP y que puedan procesar eventos de producción o ejecutar programaciones. Si apruebas la desactivación, escribe y verifica la configuración de desactivación antes del despliegue, y luego verifica el estado efectivo de la función tras el despliegue. Las funciones HTTP permanecen activadas porque los clientes deben ser redirigidos al nuevo nombre de host.
Los nombres de funciones que contienen un guion (-) no pueden desactivarse en Linux mediante la configuración de la app por función. Para estas funciones, Copilot requiere una decisión de seguridad independiente: aislar las dependencias, cambiar el nombre y volver a empaquetar, aprobar una transición source-first o aceptar explícitamente el procesamiento activo. No trata una bandera de desactivación ineficaz como protección.
Planifica la administración de las claves de función antes de la transición a HTTP. La nueva aplicación tiene sus propias claves de host y de función. Para los llamantes que usan estas claves, deben conservar las claves compatibles de host de origen y funciones HTTP o actualizar los llamantes para que usen las claves de la aplicación de destino antes de redirigir el tráfico. Copilot pregunta qué estrategia usar y, si eliges preservación, copia y verifica las claves seleccionadas tras el despliegue. Validar las solicitudes autenticadas contra el endpoint objetivo antes de la conmutación.
Copilot no copia la _master tecla ni las teclas del sistema gestionadas por extensiones. Actualizar las integraciones de webhooks que requieran claves de sistema generadas por el sistema de destino por separado. Preservar las claves del cliente significa que esas credenciales autorizan ambas aplicaciones mientras coexisten.
Al usar Copilot, elige si actualizar tu pipeline CI/CD, publicar un proyecto local preparado o desplegar un paquete recuperado compatible. Tras la validación, Copilot guía el corte de producción y pide aprobación explícita antes de cambiar la aplicación de origen.
Functions proporciona varias maneras de implementar el código, ya sea desde el proyecto de código o como un paquete de implementación listo para ejecutarse.
Sugerencia
Si mantiene el código del proyecto en un repositorio de código fuente, ahora es el momento perfecto para configurar una canalización de implementación continua. La implementación continua le permite implementar automáticamente las actualizaciones de aplicaciones en función de los cambios en un repositorio conectado.
Actualice los flujos de trabajo de implementación existentes para implementar el código fuente en la nueva aplicación:
También puede crear un nuevo flujo de trabajo de implementación continua para la nueva aplicación. Para obtener más información, consulte implementación continua para Azure Functions.
Pasos posteriores a la migración
🎉 ¡Felicitaciones! La aplicación se está ejecutando ahora en Flex Consumption. Para sacar el máximo partido del nuevo plan, tenga en cuenta estas tareas de seguimiento opcionales:
Comprobación de la funcionalidad básica
Compruebe que la nueva aplicación se está ejecutando en un plan de consumo flexible:
La habilidad de migración de Copilot valida tu nueva aplicación tras el despliegue, incluyendo su plan de alojamiento y el estado de la función. Las pruebas HTTP pueden permanecer aplazadas cuando las restricciones de acceso intencionadas impiden realizarlas. Revisa cualquier prueba diferida y valida el procesamiento no HTTP antes del corte de producción. Si necesita volver a validar, utilice este indicador:
verify my flex consumption app <APP_NAME> is running correctlyUse un cliente HTTP para llamar al menos a un punto de conexión de desencadenador HTTP en la nueva aplicación para asegurarse de que responde según lo previsto.
Captura de pruebas comparativas de rendimiento
Con la nueva aplicación en ejecución, ejecute las mismas pruebas comparativas de rendimiento que recopiló de la aplicación original, como:
| Prueba comparativa sugerida | Comentario |
|---|---|
| Arranque en frío | Mida el tiempo de la primera solicitud a la primera respuesta después de un período de inactividad. |
| Rendimiento | Mida las solicitudes máximas por segundo mediante herramientas de pruebas de carga para determinar cómo la aplicación controla las solicitudes simultáneas. |
| Latencia | Realice un seguimiento de los tiempos de respuesta de P50, P95 y P99 bajo varias condiciones de carga. Puede supervisar estas métricas en Application Insights. |
Use esta consulta de Kusto para revisar los tiempos de respuesta de latencia sugeridos en Application Insights:
requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart
Nota:
Las métricas del plan de consumo flexible difieren de las métricas del plan de consumo. Al comparar el rendimiento antes y después de la migración, tenga en cuenta que debe usar diferentes métricas para realizar un seguimiento de características de rendimiento similares. Para obtener más información, consulte Configuración de la supervisión.
Creación de paneles personalizados
Con las métricas de Azure Monitor y Application Insights, puede crear paneles en el portal de Azure que muestran gráficos de métricas de plataforma y registros y análisis en tiempo de ejecución.
Considere la posibilidad de configurar paneles y alertas en las métricas clave en el portal de Azure. Para obtener más información, consulta Monitor tu aplicación en Azure.
Refinar la configuración del plan
Las mejoras de rendimiento reales y las implicaciones de costos de la migración pueden variar en función de las cargas de trabajo y la configuración específicas de la aplicación. El plan flex Consumption proporciona varias opciones de configuración que puedes ajustar para refinar el rendimiento de la aplicación. Es posible que desee realizar ajustes para que coincidan más estrechamente con el comportamiento de la aplicación original o equilibrar el costo frente al rendimiento. Para obtener más información, consulta Ajustar la aplicación en el artículo Consumo flexible.
Actualización de los archivos de implementación de recursos
Si administra la infraestructura de su aplicación de funciones mediante Bicep o Terraform, actualice sus archivos de implementación para que ahora apunten al plan de Consumo flexible. En esta sección se muestran las principales diferencias entre las definiciones de recursos del plan de consumo y el plan de consumo flexible.
Importante
No se puede convertir una aplicación de un plan de consumo existente a Flex Consumption directamente. Debe crear nuevos recursos con un nuevo nombre o eliminar los recursos existentes antes de implementar los equivalentes de Flex Consumption.
Diferencias clave
Al migrar las implementaciones de recursos de Consumption a Flex Consumption, tenga en cuenta estos cambios importantes:
| Aspecto | Plan de consumo | Plan de consumo flexible |
|---|---|---|
| SKU del plan de hospedaje |
Y1 (Dinámico) |
FC1 (FlexConsumption) |
| Plan requerido | Opcional (autocreado) | Obligatorio (debe ser explícito) |
| Sistema operativo | Windows o Linux | Solo para Linux. |
| Configuración | Configuración de aplicaciones | Sección functionAppConfig |
| Compartición de contenido de almacenamiento | Configuración de WEBSITE_CONTENTSHARE |
deployment.storage en functionAppConfig |
En los ejemplos siguientes se muestran las principales diferencias entre las definiciones de recursos del plan consumo y el plan de consumo flexible. Usan la identidad administrada asignada por el sistema, pero no están completas. No incluyen todos los recursos necesarios, como cuentas de almacenamiento, Application Insights o todas las asignaciones de roles necesarias. Para ver ejemplos completos y listos para producción, revise los ejemplos Flex Consumption IaC.
Plan de consumo (antes):
// Consumption plan (optional - auto-created if omitted)
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
location: location
sku: {
name: 'Y1'
tier: 'Dynamic'
}
properties: {
reserved: true // Linux
}
}
resource functionApp 'Microsoft.Web/sites@2022-03-01' = {
name: functionAppName
location: location
kind: 'functionapp,linux'
properties: {
serverFarmId: hostingPlan.id
siteConfig: {
linuxFxVersion: 'DOTNET-ISOLATED|8.0'
appSettings: [
{ name: 'FUNCTIONS_EXTENSION_VERSION', value: '~4' }
{ name: 'FUNCTIONS_WORKER_RUNTIME', value: 'dotnet-isolated' }
{ name: 'AzureWebJobsStorage__accountName', value: storageAccount.name }
{ name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING__accountName', value: storageAccount.name }
{ name: 'WEBSITE_CONTENTSHARE', value: functionAppName }
{ name: 'APPLICATIONINSIGHTS_CONNECTION_STRING', value: appInsights.properties.ConnectionString }
{ name: 'APPLICATIONINSIGHTS_AUTHENTICATION_STRING', value: 'Authorization=AAD' }
]
}
}
identity: {
type: 'SystemAssigned'
}
}
Plan de consumo flexible (después):
// Flex Consumption plan (required)
resource hostingPlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: hostingPlanName
location: location
sku: {
name: 'FC1'
tier: 'FlexConsumption'
}
kind: 'functionapp'
properties: {
reserved: true
}
}
// Deployment storage container (required)
resource deploymentContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2023-05-01' = {
name: '${storageAccount.name}/default/deployments'
}
resource functionApp 'Microsoft.Web/sites@2023-12-01' = {
name: functionAppName
location: location
kind: 'functionapp,linux'
properties: {
serverFarmId: hostingPlan.id
functionAppConfig: {
deployment: {
storage: {
type: 'blobContainer'
value: '${storageAccount.properties.primaryEndpoints.blob}deployments'
authentication: {
type: 'SystemAssignedIdentity'
}
}
}
scaleAndConcurrency: {
maximumInstanceCount: 100
instanceMemoryMB: 2048
}
runtime: {
name: 'dotnet-isolated'
version: '8.0'
}
}
siteConfig: {
appSettings: [
{ name: 'AzureWebJobsStorage__accountName', value: storageAccount.name }
{ name: 'APPLICATIONINSIGHTS_CONNECTION_STRING', value: appInsights.properties.ConnectionString }
{ name: 'APPLICATIONINSIGHTS_AUTHENTICATION_STRING', value: 'Authorization=AAD' }
]
}
}
identity: {
type: 'SystemAssigned'
}
}
Nota:
Al utilizar APPLICATIONINSIGHTS_AUTHENTICATION_STRING con Authorization=AAD, también debe asignar el rol de Publicador de métricas de supervisión a la identidad administrada de la aplicación de funciones en el recurso de Application Insights.
Para ver ejemplos completos de Bicep, consulte los ejemplos de Bicep de consumo flexible.
Conciliación de implementaciones de recursos después de la migración
Si usa la infraestructura como código para administrar las implementaciones de recursos de Azure, actualice los archivos de implementación después de migrar a Flex Consumption para evitar el desfase de configuración. Este es un enfoque recomendado:
No mezclar implementaciones manuales y basadas en recursos: si usó el CLI de Azure o el portal para crear la aplicación Flex Consumption durante la migración, actualice los archivos de recursos antes de la siguiente implementación. De lo contrario, su implementación podría intentar volver a crear los recursos del antiguo plan de Consumo.
Actualice los nombres de recursos o use la administración del ciclo de vida: dado que no se puede convertir una aplicación de consumo a consumo flexible, tiene dos opciones:
- Nuevos nombres de recursos: actualice el código de implementación para usar nuevos nombres para el plan de hospedaje y la aplicación de funciones. Este enfoque mantiene intactos los recursos antiguos hasta que esté seguro de que la migración se ha realizado correctamente.
-
Importar recursos existentes: si desea mantener los mismos nombres, elimine primero los recursos antiguos y deje que la implementación cree los nuevos recursos de Flex Consumption. Como alternativa, importe los recursos creados manualmente en el estado de Terraform mediante
terraform importo haga referencia a recursos existentes en Bicep.
Comprobar la alineación de estado: después de actualizar los archivos de implementación, ejecute un plan o una operación de vista previa (
terraform planoaz deployment group what-if) para confirmar que no se producen cambios inesperados.Actualizar canalizaciones de CI/CD: si las canalizaciones de implementación hacen referencia a la configuración anterior del plan de consumo, actualícelas para usar las nuevas definiciones de recursos y métodos de implementación de Flex Consumption.
Sugerencia
Para minimizar la interrupción, considere la posibilidad de ejecutar la aplicación consumo anterior y la nueva aplicación Flex Consumption en paralelo durante un período de transición. Actualice la implementación para administrar la nueva aplicación Flex Consumption, compruebe que funciona correctamente y, a continuación, quite los recursos antiguos de la aplicación Consumo de Azure y los archivos de implementación.
Quitar la aplicación original (opcional)
Sugerencia
No hay prisa aquí. Mantenga la aplicación original durante unos días o semanas mientras comprueba que todo funciona. El plan de consumo solo cobra por el uso real, por lo que mantener la antigua aplicación (con desencadenadores deshabilitados) cuesta poco.
Cuando esté seguro de que la nueva aplicación funciona correctamente, puede limpiar el original. Este paso es opcional: algunos equipos mantienen la aplicación antigua como una opción de referencia o reversión.
Importante
Esta acción elimina la aplicación de funciones original. El plan de consumo permanece intacto si otras aplicaciones la usan. Antes de continuar, asegúrese de hacer lo siguiente:
- Migre correctamente todas las funciones a la nueva aplicación Flex Consumption.
- Compruebe que no hay tráfico dirigido a la aplicación original.
- Se ha copiado una copia de seguridad de los registros, la configuración o los datos pertinentes que puedan ser necesarios para referencia.
La skill de migración de Copilot puede eliminar la aplicación original una vez completada la transición de producción y la validación del objetivo. Si el trabajo de preparación sigue siendo aplazado o el origen sigue procesando cargas de producción, conserva la aplicación fuente. Copilot siempre pide su confirmación explícita antes de eliminar cualquier cosa. Utilice este indicador
delete my original consumption app <ORIGINAL_APP_NAME>
Estrategias de solución de problemas y recuperación
La mayoría de las migraciones finalizan sin problemas. Si algo no funciona según lo previsto, pruebe estas soluciones para problemas comunes:
| Cuestión | Solución |
|---|---|
| Problemas de rendimiento de arranque en frío | • Revisar la configuración de simultaneidad • Comprobar si faltan dependencias |
| Faltan enlaces | • Verificar paquetes de extensiones • Actualizar configuraciones de enlace |
| Errores de permisos | • Comprobar las asignaciones de identidad y los permisos de rol |
| Problemas de conectividad de red | • Validar las restricciones de acceso y la configuración de red |
| Falta el Application Insights | • Volver a crear la conexión de Application Insights |
| No se puede iniciar la aplicación | Consulte Pasos generales de solución de problemas. |
| Los desencadenadores no procesan eventos | Consulte Pasos generales de solución de problemas. |
Si experimenta problemas para migrar una aplicación de producción, considere la posibilidad de revertir la migración a la aplicación original mientras soluciona problemas.
Pasos generales para solucionar problemas
Siga estos pasos para los casos en los que la nueva aplicación no se inicia o los desencadenadores de función no procesan eventos:
En la página de la nueva aplicación del portal Azure, seleccione Diagnose y resuelva problemas en el panel izquierdo de la página de la aplicación. Seleccione Disponibilidad y rendimiento y revise el detector de errores de informe o la aplicación de funciones. Para obtener más información, consulte Información general sobre diagnósticos de Azure Functions.
En la página de la aplicación, seleccione Supervisión>Application Insights>Ver datos de Application Insights y luego seleccione Investigar>fallos y compruebe si hay eventos de fallo.
Seleccione Registros de supervisión> y ejecute esta consulta de Kusto para comprobar si hay errores en estas tablas:
traces | where severityLevel == 3 | where cloud_RoleName == "<APP_NAME>" | where timestamp > ago(1d) | project timestamp, message, operation_Name, customDimensions | order by timestamp descEn estas consultas, reemplace por
<APP_NAME>el nombre de la nueva aplicación. Estas consultas comprueban si hay errores en el último día (where timestamp > ago(1d)).De nuevo en la página de la aplicación, seleccione Configuración Variables> deentorno y compruebe que todas las configuraciones críticas de la aplicación se transfieren correctamente. Busque cualquier configuración en desuso que pueda migrarse incorrectamente o cualquier error tipográfico o cadena de conexión incorrecta. Compruebe la conexión de almacenamiento de host predeterminada.
Seleccione Identidad de configuración> y compruebe que existen las identidades esperadas y que están asignadas a los roles correctos.
En su código, verifique que todas las configuraciones de enlace sean correctas, prestando especial atención a los nombres de las cadenas de conexión, a los nombres de las colas y contenedores de almacenamiento, y a la configuración de grupos de consumidores en los desencadenadores de Event Hubs.
Pasos de reversión para aplicaciones de producción críticas
Si no puede solucionar el problema, considere la posibilidad de revertir a la aplicación original mientras sigue solucionando problemas.
Si se detiene la aplicación original, reiníciela:
Pide a Copilot que reinicie la aplicación original y revierta la migración.
restart my original consumption app <ORIGINAL_APP_NAME>Si ha creado nuevas colas, temas o contenedores, asegúrese de que los clientes se redirigen de nuevo a los recursos originales.
Si ha modificado DNS o dominios personalizados, revierta estos cambios para que apunten a la aplicación original.
Proporcionar comentarios
Si tiene problemas con la migración mediante este artículo o quiere proporcionar otros comentarios sobre esta guía, use uno de estos métodos para obtener ayuda o proporcionar sus comentarios:
Obtener ayuda en Microsoft Q& A - Cree un problema en el repositorio Azure Functions
- Proporcionar comentarios sobre el producto
- Crear un ticket de soporte