Tecnologías de implementación en Azure Functions

Puede usar algunas tecnologías diferentes para implementar el código del proyecto de Azure Functions en Azure. En este artículo se proporciona información general sobre los métodos de implementación disponibles y recomendaciones sobre el mejor método que se puede usar en cada escenario. También se proporciona una lista exhaustiva de las tecnologías de implementación subyacentes y detalles clave sobre ellas.

Métodos de implementación

La tecnología de implementación que se usa para publicar código en la aplicación de funciones en Azure depende de las necesidades específicas y del punto del ciclo de desarrollo. Por ejemplo, durante el desarrollo y las pruebas, puede implementar directamente desde la herramienta de desarrollo, por ejemplo, Visual Studio Code. Si la aplicación está en producción, es más probable que se publique de forma continua desde el control de código fuente o mediante una canalización de publicación automatizada, que puede incluir validación y pruebas.

En la tabla siguiente se describen los métodos de implementación disponibles para el proyecto de código.

Tipo de implementación Métodos Óptimo para...
Basado en herramientas Publicación de Visual Studio Code
Publicación de Visual Studio
Publicación de Core Tools
Implementaciones durante el desarrollo y otras implementaciones improvisadas. Implementación del código a petición mediante herramientas de desarrollo locales.
Administrado por App Service Centro de implementación (CI/CD)
Implementaciones de contenedores
Implementación continua (CI/CD) desde el control de código fuente o un registro de contenedor. Las implementaciones se administran mediante la plataforma App Service (Kudu).
Canalizaciones externas Azure Pipelines
Acciones de GitHub
Las canalizaciones de producción que incluyen validación, pruebas y otras acciones se ejecutan como parte de una implementación automatizada. La canalización administra las implementaciones.

Las implementaciones específicas deben usar la mejor tecnología en función del escenario específico. Muchos de los métodos de implementación se basan en la implementación ZIP, que se recomienda para la implementación.

Disponibilidad de la tecnología de implementación

El método de implementación también depende del plan de hospedaje y del sistema operativo en el que ejecute la aplicación de funciones.

Actualmente, Functions ofrece cinco opciones para hospedar las aplicaciones de funciones:

Cada plan tiene diferentes comportamientos. No todas las tecnologías de implementación están disponibles para cada plan de hospedaje y sistema operativo. En este gráfico se proporciona información sobre las tecnologías de implementación admitidas:

Tecnología de implementación Flex Consumption Consumo Elastic Premium Dedicado Aplicaciones de contenedor
OneDeploy
Implementación de Zip
Dirección URL del paquete externo1
Contenedor de Docker Solo Linux Solo Linux Solo Linux
Control de código fuente Solo Windows
Git local1 Solo Windows
FTPS1 Solo Windows
Edición en el portal2

1 No se recomiendan las tecnologías de implementación que necesitan que los desencadenadores se sincronicen manualmente.
2 La edición en el portal está deshabilitada cuando el código se implementa en la aplicación de funciones desde fuera del portal. Para obtener más información, incluidos los detalles de compatibilidad con idiomas para la edición en el portal, consulte Detalles de compatibilidad con idiomas.

Conceptos clave

Algunos conceptos clave son fundamentales para comprender cómo funcionan las implementaciones en Azure Functions.

Sincronización de desencadenadores

Cuando se modifica cualquiera de los desencadenantes, la infraestructura de Funciones debe estar al tanto de los cambios. La sincronización se realiza automáticamente para muchas tecnologías de implementación. Aunque en algunos casos habrá que sincronizar manualmente los desencadenadores.

Debe sincronizar manualmente los desencadenadores al usar estas opciones de implementación:

Puede sincronizar desencadenadores de una de estas maneras:

  • Reinicie la aplicación de funciones en Azure Portal.

  • Use el comando az rest para enviar una solicitud HTTP POST que llame a la API de syncfunctiontriggers, como en este ejemplo:

    az rest --method post --url https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Web/sites/<APP_NAME>/syncfunctiontriggers?api-version=2016-08-01
    

Al implementar una versión actualizada del paquete de implementación y mantener la misma dirección URL del paquete externo, debe reiniciar manualmente la aplicación de funciones. Esto indica al host que debe sincronizar y volver a implementar las actualizaciones desde la misma dirección URL del paquete. El host de Functions también realiza una sincronización de desencadenador en segundo plano una vez iniciada la aplicación. Sin embargo, para los planes de hospedaje Consumo y Elastic Premium también debe sincronizar de forma manual los desencadenadores en estos escenarios:

  • Implementaciones que usan una dirección URL de paquete externo con plantillas de ARM o Terraform.
  • Al actualizar el paquete de implementación en la misma dirección URL del paquete externo.

Compilación remota

Puede solicitar a Azure Functions que realice una compilación remota del proyecto de código durante la implementación. En estos escenarios, debe solicitar una compilación remota en lugar de compilar localmente:

  • Va a implementar una aplicación en una aplicación de funciones basada en Linux que se desarrolló en un equipo Windows. Esto suele ser el caso del desarrollo de aplicaciones de Python. Puede acabar con en bibliotecas incorrectas que se usan al compilar el paquete de implementación localmente en Windows.
  • El proyecto tiene dependencias en un índice de paquete personalizado.
  • Quiere reducir el tamaño del paquete de implementación.

La forma en que solicita una compilación remota depende de si la aplicación se ejecuta en Azure en Windows o Linux.

Todas las aplicaciones de funciones que se ejecutan en Windows tienen una pequeña aplicación de administración, el sitio de scm proporcionado por Kudu. Este sitio controla gran parte de la lógica de implementación y compilación de Azure Functions.

Cuando una aplicación se implementa en Windows, se ejecutan comandos específicos del lenguaje, como dotnet restore (C#) o npm install (JavaScript).

Las consideraciones siguientes se aplican al usar compilaciones remotas durante la implementación:

  • Las compilaciones remotas son compatibles con las aplicaciones de funciones que se ejecutan en Linux en el plan de consumo. Sin embargo, las opciones de implementación están limitadas para estas aplicaciones porque no tienen un sitio de scm (Kudu).
  • Las aplicaciones de funciones que se ejecutan en Linux en un plan Premium o en un Plan dedicado (App Service) tienen un sitio de scm (Kudu), pero se limita en comparación con Windows.
  • Las compilaciones remotas no se realizan cuando una aplicación usa la ejecución desde paquetes. Para obtener información sobre cómo usar la compilación remota en estos casos, consulte Implementación zip.
  • Es posible que tenga problemas con la compilación remota si su aplicación se creó antes de que la característica estuviera disponible (1 de agosto de 2019). En el caso de las aplicaciones anteriores, cree una nueva aplicación de funciones o ejecute az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> para actualizar la aplicación de funciones. Puede que necesite enviar este comando dos veces para que se ejecute correctamente.

Almacenamiento de contenido de aplicaciones

Los métodos de implementación basados en paquetes almacenan el paquete en la cuenta de almacenamiento asociada a la aplicación de funciones, que se define en la configuración de AzureWebJobsStorage. Cuando esté disponible, las aplicaciones de plan de consumo y Elastic Premium intentan usar el recurso compartido de contenido de Azure Files desde esta cuenta, pero también puede mantener el paquete en otra ubicación. En su lugar, las aplicaciones del Plan de Consumo flexible usan un contenedor de almacenamiento en la cuenta de almacenamiento predeterminada, a menos que configure una cuenta de almacenamiento diferente que se usará para la implementación. Para obtener más información, revise los detalles de Dónde se almacena el contenido de la aplicación en cada tecnología de implementación que se describe en la sección siguiente.

Importante

La cuenta de almacenamiento se usa para almacenar datos importantes de la aplicación, a veces incluido el propio código de la aplicación. Debe limitar el acceso desde otras aplicaciones y usuarios a la cuenta de almacenamiento.

Detalles de la tecnología de implementación

En Azure Functions se encuentran disponibles los métodos de implementación siguientes.

Una implementación

Una implementación es la única tecnología de implementación admitida para las aplicaciones en el plan de Consumo flexible. El resultado final es un paquete de .zip listo para ejecutarse en el que se ejecuta la aplicación de funciones.

Cómo usarlo: Implementar con la característica de publicación de Visual Studio Code, o desde la línea de comandos mediante Azure Functions Core Tools o la CLI de Azure . Nuestra Tarea de operaciones de desarrollo de Azure y acción de GitHub aprovechar de forma similar una implementación cuando detectan que se implementa una aplicación Consumo flexible.

Al crear una aplicación Consumo flexible, deberá especificar un contenedor de almacenamiento de implementación (blob) así como un método de autenticación para él. De manera predeterminada, se usa la misma cuenta de almacenamiento que la AzureWebJobsStorage conexión, con una cadena de conexión como método de autenticación. Por lo tanto, la configuración de implementación se configura durante el tiempo de creación de la aplicación sin necesidad de la configuración de la aplicación.

Cuándo usarlo: Una implementación es la única tecnología de implementación disponible para las aplicaciones de funciones que se ejecutan en el plan de consumo flexible.

Dónde se almacena el contenido de la aplicación: al crear una aplicación de función consumo flexible, se especifica un contenedorde almacenamiento de implementación. Se trata de un contenedor de blobs donde la plataforma cargará el contenido de la aplicación que implementó. Para cambiar la ubicación, puede visitar la hoja Configuración de implementación en Azure Portal o usar la CLI de Azure.

Implementación de Zip

La implementación zip es la tecnología de implementación predeterminada y recomendada para las aplicaciones de funciones en los planes consumo, Elastic Premium y App Service (dedicado). El resultado final es un paquete de .zip listo para ejecutarse en el que se ejecuta la aplicación de funciones. Difiere de la dirección URL del paquete externo en que nuestra plataforma es responsable de la compilación remota y el almacenamiento del contenido de la aplicación.

Cómo usarlo: Implementar mediante su herramienta cliente favorita: Visual Studio Code, Visual Studioo desde la línea de comandos mediante Azure Functions Core Tools o la CLI de Azure . Nuestra Tareas de operaciones de desarrollo de Azure y acción de GitHub aprovechar de forma similar la implementación zip.

Si realiza la implementación mediante la implementación de archivos ZIP, puede establecer la aplicación para que se ejecute desde el paquete. Para ejecutarla desde el paquete, defina el valor de configuración de la aplicación WEBSITE_RUN_FROM_PACKAGE en 1. Se recomienda usar la implementación de archivos ZIP. Produce tiempos de carga más rápidos para las aplicaciones, y es el valor predeterminado para VS Code, Visual Studio y la CLI de Azure.

Cuándo usarlo: la implementación Zip es la tecnología de implementación predeterminada y recomendada para las aplicaciones de funciones en los planes de consumo de Windows, Windows y Linux Elastic Premium y Windows y Linux App Service (dedicado).

Dónde se almacena el contenido de la aplicación: El contenido de la aplicación de una implementación zip se almacena de manera predeterminada en el sistema de archivos, que puede estar respaldado por Azure Files de la cuenta de almacenamiento especificada cuando se creó la aplicación de funciones. En Consumo para Linux, el contenido de la aplicación se conserva en un blob de la cuenta de almacenamiento especificada por la AzureWebJobsStorageconfiguración de la aplicación y la configuración de la aplicación WEBSITE_RUN_FROM_PACKAGE tomará el valor de la dirección URL del blob.

Dirección URL del paquete externo

La dirección URL del paquete externo es una opción si desea controlar manualmente cómo se realizan las implementaciones. Tiene la responsabilidad de cargar un paquete de .zip listo para ejecutar que contiene el contenido de la aplicación compilada en el Blob Storage y hacer referencia a esta dirección URL externa como una configuración de aplicación en la aplicación de funciones. Cada vez que se reinicia la aplicación, captura el paquete, lo monta y se ejecuta en modoEjecutar desde el paquete.

Cómo se debe usar: agregue WEBSITE_RUN_FROM_PACKAGE a la configuración de la aplicación. El valor de esta configuración debe ser una dirección URL de blob que apunte a la ubicación del paquete específico que quiere que se ejecute la aplicación. Puede agregar una configuración cualquiera en el portal o mediante la CLI de Azure.

Si usa Azure Blob Storage, la aplicación de funciones puede acceder al contenedor mediante una conexión basada en identidad administrada o con un firma de acceso compartido (SAS). La opción que elija afecta al tipo de dirección URL que usa como valor de WEBSITE_RUN_FROM_PACKAGE. Se recomienda la identidad administrada para la seguridad general y, dado que los tokens de SAS expiran y deben mantenerse manualmente.

Siempre que implemente el archivo de paquete al que hace referencia una aplicación de funciones, deberá sincronizar manualmente los desencadenadores, incluida la implementación inicial. Al cambiar el contenido del archivo de paquete y no la propia dirección URL, también deberá reiniciar la aplicación de funciones para sincronizar desencadenadores. Consulte nuestra guía paso a paso sobre cómo configurar esta tecnología de implementación.

Cuándo usarlo: la dirección URL del paquete externo es el único método de implementación admitido para las aplicaciones que se ejecutan en el plan de Consumo para Linux cuando no desea que se produzca una compilación remota. Este método también es la tecnología de implementación recomendada al crear la aplicación sin Azure Files. En el caso de las aplicaciones escalables que se ejecutan en Linux, debe considerar el hospedaje plan de Consumo flexible.

Dónde se almacena el contenido de la aplicación: Es responsable de cargar el contenido de la aplicación en Blob Storage. Puede usar cualquier cuenta de Blob Storage, aunque se recomienda Azure Blob Storage.

Contenedor de Docker

Puede implementar una aplicación de funciones que se ejecuta en un contenedor de Linux.

Cómo usarlo: cree las funciones en un contenedor de Linux y, a continuación, implemente el contenedor en un plan Premium o Dedicado en Azure Functions u otro host de contenedor. Use Azure Functions Core Tools para crear un Dockerfile para el proyecto que use para compilar una aplicación de funciones en contenedor. Puede usar el contenedor en las siguientes implementaciones:

Cuándo se debe usar: use la opción de contenedor Docker cuando quiera tener más control sobre el entorno de Linux donde se ejecuta la aplicación de funciones y donde se aloja el contenedor. Este mecanismo de implementación solo está disponible para las funciones que se ejecutan en Linux.

Dónde se almacena el contenido de la aplicación: El contenido de la aplicación se almacena en el registro de contenedor especificado como parte de la imagen.

Control de código fuente

Puede habilitar la integración continua entre la aplicación de funciones y un repositorio de código fuente. Con el control de código fuente habilitado, una actualización del código en el repositorio de código fuente conectado desencadena la implementación del código más reciente desde el repositorio. Para más información, consulte la implementación continua para Azure Functions.

Uso: la manera más fácil de configurar la publicación desde el control de código fuente es desde el Centro de implementación en el área Funciones del portal. Para más información, vea Implementación continua para Azure Functions.

Cuándo se debe usar: El uso del control de código fuente es el procedimiento recomendado para los equipos que colaboran en sus aplicaciones de funciones. El control de código fuente es una buena opción de implementación que permite el uso de canalizaciones de implementación más sofisticadas. El control de código fuente normalmente está habilitado en un espacio de ensayo, que se puede intercambiar a producción después de la validación de las actualizaciones del repositorio. Para obtener más información, consulte Ranuras de implementación de Azure Functions.

Dónde se almacena el contenido de la aplicación: El contenido de la aplicación está en el sistema de control de código fuente, pero un contenido de aplicación compilado y clonado localmente se almacena en el sistema de archivos de la aplicación, que puede estar respaldado por Azure Files de la cuenta de almacenamiento especificada cuando se creó la aplicación de funciones.

Git local

Puede usar GIT local para insertar código desde la máquina local en Azure Functions.

Cómo se debe usar: Siga las instrucciones de Implementación de Git local a Azure App Service.

Cuándo usarlo: para reducir la posibilidad de errores, debe evitar el uso de métodos de implementación que necesiten el paso adicional de sincronización manual de los desencadenadores. Use la implementación ZIP siempre que sea posible.

Dónde se almacena el contenido de la aplicación: El contenido de la aplicación se almacena en el sistema de archivos, que puede estar respaldado por Azure Files de la cuenta de almacenamiento especificada cuando se creó la aplicación de funciones.

FTP/S

Puede usar FTP/S para la transferencia directa de archivos a Azure Functions, aunque este método de implementación no se recomienda. Si no tiene previsto usar FTP, debe deshabilitarlo. Si decide usar FTP, debe aplicar FTPS. Para obtener información sobre cómo hacerlo en Azure Portal, vea Aplicación de FTPS.

Cómo usarlo: siga las instrucciones de Configuración de implementación de FTPS para obtener la dirección URL y las credenciales que puede usar para implementar en la aplicación de funciones mediante FTPS.

Cuándo usarlo: para reducir la posibilidad de errores, debe evitar el uso de métodos de implementación que necesiten el paso adicional de sincronización manual de los desencadenadores. Use la implementación ZIP siempre que sea posible.

Dónde se almacena el contenido de la aplicación: El contenido de la aplicación se almacena en el sistema de archivos, que puede estar respaldado por Azure Files de la cuenta de almacenamiento especificada cuando se creó la aplicación de funciones.

Edición del portal

En el editor basado en el portal, puede editar directamente los archivos que se encuentran en la aplicación de funciones (en esencia, se implementan cada vez que guarde los cambios).

Cómo se debe usar: Para poder editar las funciones en Azure Portal, debe haber creado las funciones en el portal. Para conservar un único origen de confianza, el uso de cualquier otro método de implementación hace que la función sea de solo lectura e impide la edición del portal de forma continuada. Para volver a un estado en el que pueda editar los archivos en Azure Portal, puede volver a activar manualmente el modo de edición en Read/Write y quitar la configuración de la aplicación relacionada con la implementación (como WEBSITE_RUN_FROM_PACKAGE).

Cuándo se debe usar: El portal es una buena forma de empezar a trabajar con Azure Functions. Para un trabajo de desarrollo más avanzado, se recomienda usar una de las herramientas de cliente siguientes:

Dónde se almacena el contenido de la aplicación: El contenido de la aplicación se almacena en el sistema de archivos, que puede estar respaldado por Azure Files de la cuenta de almacenamiento especificada cuando se creó la aplicación de funciones.

La siguiente tabla muestra los sistemas operativos y lenguajes que admiten la edición en el portal:

Idioma Consumo de Windows Windows Premium Dedicado de Windows Consumo de Linux Linux Premium Dedicado de Linux
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 La edición en el portal solo se admite para los archivos de script de C#, que se ejecutan In-Process con el host. Para más información, consulte la Referencia para desarrolladores de scripts de C# de Azure Functions (.csx).
2 La edición en el portal solo se admite para el modelo de programación de Python v1.

Comportamientos de implementación

Al implementar actualizaciones en el código de aplicación de funciones, las funciones en ejecución finalizan. Una vez completada la implementación, el código nuevo se carga para comenzar a procesar las solicitudes. Revise Mejora del rendimiento y confiabilidad de Azure Functions para aprender a escribir funciones sin estado y defensivas.

Si necesita más control sobre esta transición, debe usar ranuras de implementación.

Ranuras de implementación

Al implementar la aplicación de funciones en Azure, puede implementar en una ranura de implementación independiente en lugar de directamente en producción. La implementación en una ranura de implementación y, a continuación, el intercambio a producción después de la comprobación es la manera recomendada de configurar la implementación continua.

La forma de implementar en una ranura dependerá de la herramienta de implementación específica que use. Por ejemplo, al usar Azure Functions Core Tools, incluirá la opción--slot para indicar el nombre de una ranura específica para el comando func azure functionapp publish.

Para obtener más información sobre las ranuras de implementación, consulte la documentación de ranuras de implementación de Azure Functions.

Pasos siguientes

Lea los siguientes artículos para obtener más información sobre cómo implementar las aplicaciones de funciones: