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 tres planes de hospedaje:

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 Consumo de Windows Windows Premium Dedicado de Windows Consumo de Linux Linux Premium Dedicado de Linux
Dirección URL del paquete externo1
Implementación de Zip
Contenedor de Docker
Web Deploy
Control de código fuente
Git local1
FTPS1
Edición en el portal2 3 3

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.
3 La edición en el portal solo está habilitada para las funciones HTTP y activadas por temporizador que se ejecutan en Linux con los planes Premium y Dedicado.

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. Si al implementar las actualizaciones se hace referencia a una dirección URL del paquete externo, Git local, sincronización en la nube o FTP, hay que sincronizar manualmente los desencadenadores. Puede sincronizar los desencadenadores de una de estas tres maneras:

  • Reinicie la aplicación de funciones en Azure Portal.
  • Envíe una solicitud HTTP POST a https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> mediante la https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY>.
  • Envíe la solicitud HTTP POST a https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Reemplace los marcadores de posición con el identificador de suscripción, el nombre del grupo de recursos y el nombre de la aplicación de funciones. Esta solicitud necesita un token de acceso en el Authorizationencabezado de solicitud.

Al realizar la implementación mediante una dirección URL de paquete externo, debe reiniciar manualmente la aplicación de funciones para sincronizar completamente las actualizaciones cuando el paquete cambie sin cambiar la dirección URL.

Compilación remota

Azure Functions puede realizar automáticamente compilaciones en el código que recibe después de las implementaciones de archivos ZIP. Estas compilaciones se comportan de manera ligeramente diferente en función de si la aplicación se ejecuta en Windows o Linux.

Todas las aplicaciones de funciones que se ejecutan en Windows disponen de una pequeña aplicación de administración, el sitio 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 se admiten para las aplicaciones de funciones que se ejecutan en Linux en el plan de consumo, pero no tienen un sitio SCM/Kudu, que limita las opciones de implementación.
  • Las aplicaciones de funciones que ejecutan en Linux en un plan Premium o en un plan dedicado (App Service) tienen un sitio SCM/Kudu, pero está limitado en comparación con Windows.
  • Las compilaciones remotas no se realizan cuando una aplicación se ha configurado previamente en el modo run-from-package. 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

Varios métodos de implementación almacenan la carga de la aplicación implementada o compilada en la cuenta de almacenamiento asociada a la aplicación de funciones. Functions intenta usar el recurso compartido de contenido de Azure Files cuando se configura, pero algunos métodos almacenan en su lugar la carga en la instancia de Blob Storage asociada a la conexión AzureWebJobsStorage. Vea los detalles de los párrafos Dónde se almacena el contenido de la aplicación de cada tecnología de implementación descrita 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.

Dirección URL del paquete externo

Puede utilizar la dirección URL del paquete externo para hacer referencia a un archivo (.zip) de paquete remoto que contiene la aplicación de funciones. El archivo se descarga desde la dirección URL proporcionada y la aplicación se ejecuta en modo de ejecución 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 opción debe ser una dirección URL (la ubicación del archivo de paquete específico que quiere ejecutar). Puede agregar una configuración cualquiera en el portal o mediante la CLI de Azure.

Si usa Azure Blob Storage, utilice un contenedor privado con una firma de acceso compartido (SAS) para que Functions tenga acceso al paquete. Cada vez que se reinicia la aplicación, se captura una copia del contenido. La referencia debe ser válida durante la vigencia de la aplicación.

Cuándo se debe usar: si el usuario no quiere que se produzca una compilación remota, la dirección URL del paquete externo es el único método de implementación compatible con Azure Functions que se ejecuta en Linux en el plan de Consumo. Al actualizar el archivo de paquete al que hace referencia una aplicación de funciones, debe sincronizar manualmente los desencadenadores para indicar a Azure que la aplicación ha cambiado. Al cambiar el contenido del archivo de paquete y no la propia dirección URL, también debe reiniciar manualmente la aplicación de funciones.

Dónde se almacena el contenido de la aplicación: El contenido de la aplicación se almacena en la dirección URL especificada. Podría estar en blobs de Azure, posiblemente en la cuenta de almacenamiento especificada por la conexión AzureWebJobsStorage. Algunas herramientas de cliente pueden implementarse de manera predeterminada en un blob de esta cuenta. Por ejemplo, para las aplicaciones de Consumo para Linux, la CLI de Azure intentará realizar la implementación a través de un paquete almacenado en un blob de la cuenta especificada por AzureWebJobsStorage.

Implementación de archivo ZIP

Utilice la implementación de archivo ZIP para insertar un archivo ZIP que contiene la aplicación de funciones de Azure. Si quiere, puede establecer que la aplicación comience a ejecutarse desde el paquete o especificar que se produzca una compilación remota.

Cómo se debe usar: Realice la implementación con su herramienta cliente favorita: Visual Studio Code, Visual Studio o mediante la línea de comandos con Azure Functions Core Tools. De forma predeterminada, estas herramientas usan la implementación desde un archivo ZIP y se ejecutan desde el paquete. Core Tools y la extensión Visual Studio Code habilitan la compilación remota al implementar en Linux. Para implementar manualmente un archivo ZIP en la aplicación de funciones, siga las instrucciones que encontrará en Deploying from a zip file or url (Implementación desde un archivo ZIP o una dirección URL).

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 se debe usar: La implementación de archivos ZIP es la tecnología de implementación recomendada para Azure Functions.

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 conexión AzureWebJobsStorage.

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.

Web Deploy (MSDeploy)

Web Deploy empaqueta e implementa las aplicaciones Windows en cualquier servidor IIS, incluidas las aplicaciones de funciones que se ejecutan en Windows en Azure.

Cómo se debe usar: Use Visual Studio Tools para Azure Functions. Desactive la casilla Ejecutar desde el archivo de paquete (recomendado) .

También puede descargar Web Deploy 3.6 y llamar a MSDeploy.exe directamente.

Cuándo se debe usar: Web Deploy se admite y no presenta problemas, pero el mecanismo preferido ahora es la implementación de archivo ZIP con la ejecución desde el paquete habilitada. Para obtener más información, consulte la guía de desarrollo de Visual Studio.

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.

Control de código fuente

Use el control de código fuente para conectar la aplicación de funciones a un repositorio de Git. Una actualización del código de ese repositorio desencadena la implementación. Para más información, vea la wiki de Kudu.

Cómo se debe usar: Use el centro de implementación del área Functions del portal para configurar la publicación desde el control de código fuente. 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.

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#
Script de C# * *
F#
Java
JavaScript (Node.js) 1 1
Python2 1 1
PowerShell
TypeScript (Node.js)

1 La edición en el portal solo está habilitada para los desencadenadores HTTP y de temporizador de Functions en Linux con los planes Premium y Dedicado.
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. 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: