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
Control de código fuente
Git local1
FTPS1
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 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 implementar mediante una dirección URL de paquete externo, deberá reiniciar manualmente la aplicación de funciones para sincronizar completamente la implementación cuando el paquete cambie sin cambiar la dirección URL, lo que incluye la implementación inicial.

Cuando la aplicación de funciones está protegida por restricciones de red entrantes, solo se puede llamar al punto de conexión de desencadenadores de sincronización desde un cliente de la red virtual.

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 difieren en función de si la aplicación se ejecuta 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 está limitado 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

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. 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.

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.

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: