Compartir vía


Codificación y comprobación de las funciones de Azure Functions en un entorno local

Siempre que sea posible, debe crear y validar el proyecto de código de Azure Functions en un entorno de desarrollo local. Azure Functions Core Tools proporciona una versión en tiempo de ejecución local de Azure Functions que se integra con herramientas de desarrollo populares para un desarrollo integrado, depuración e implementaciones. Las funciones locales incluso pueden conectarse a servicios de Azure dinámicos.

En este artículo se proporcionan algunas instrucciones compartidas para el desarrollo local, como trabajar con el archivolocal.settings.json. También se vincula a instrucciones específicas del entorno de desarrollo.

Sugerencia

Puede encontrar información detallada sobre cómo desarrollar funciones localmente en los artículos de instrucciones específicas del IDE vinculado.

Entornos de desarrollo locales

La manera en la que desarrolla las funciones en el equipo local depende del lenguaje y las herramientas que prefiera. Asegúrese de elegir su idioma preferido en la parte superior del artículo.

Sugerencia

Todo el desarrollo local se basa en Azure Functions Core Tools a fin de proporcionar el entorno de ejecución de Functions para la depuración en un entorno local.

Puede usar estos entornos de desarrollo para codificar funciones localmente en su lenguaje preferido:

Entorno Descripción
Visual Studio Las herramientas de Azure Functions se incluyen en la carga de trabajo desarrollo de Azure de Visual Studio. Permite compilar e implementar el código de función de C# en Azure como una biblioteca de clases de .NET. Incluye Core Tools para realizar pruebas locales. Para más información, consulte Creación de la primera función de C# en Azure mediante Visual Studio.
Visual Studio Code La extensión de Azure Functions para Visual Studio Code agrega compatibilidad con Functions a Visual Studio Code. Requiere Core Tools. Admite el desarrollo en Linux, macOS y Windows. Para más información, vea Creación de la primera función mediante Visual Studio Code.
Símbolo del sistema o terminal Azure Functions Core Tools proporciona el entorno de tiempo de ejecución central y las plantillas para crear las funciones, lo que permite desarrollar localmente. Admite el desarrollo en Linux, macOS y Windows. Para más información, consulte Creación de una función de C# en Azure desde la línea de comandos.
Entorno Descripción
Maven El arquetipo maven usa Core Tools para habilitar el desarrollo de funciones de Java. Admite el desarrollo en Linux, macOS y Windows. Para más información, consulte Creación de la primera función con Java y Maven.
Visual Studio Code La extensión de Azure Functions para Visual Studio Code agrega compatibilidad con Functions a Visual Studio Code. Requiere Core Tools. Admite el desarrollo en Linux, macOS y Windows. Para más información, vea Creación de la primera función mediante Visual Studio Code.
IntelliJ IDEA Maven archetype y Core Tools le permiten desarrollar sus funciones mediante IntelliJ. Para más información, consulte Creación de la primera función de Java en Azure mediante IntelliJ.
Eclipse Maven archetype y Core Tools le permiten desarrollar sus funciones mediante Eclipse. Para más información, consulte Creación de la primera función de Java en Azure mediante Ecplise.
Entorno Descripción
Visual Studio Code La extensión de Azure Functions para Visual Studio Code agrega compatibilidad con Functions a Visual Studio Code. Requiere Core Tools. Admite el desarrollo en Linux, macOS y Windows. Para más información, vea Creación de la primera función mediante Visual Studio Code.
Símbolo del sistema o terminal Azure Functions Core Tools proporciona el entorno de tiempo de ejecución central y las plantillas para crear las funciones, lo que permite desarrollar localmente. Admite el desarrollo en Linux, macOS y Windows. Para más información, consulte Creación de una función Node.js en Azure desde la línea de comandos.
Entorno Descripción
Visual Studio Code La extensión de Azure Functions para Visual Studio Code agrega compatibilidad con Functions a Visual Studio Code. Requiere Core Tools. Admite el desarrollo en Linux, macOS y Windows. Para más información, vea Creación de la primera función mediante Visual Studio Code.
Símbolo del sistema o terminal Azure Functions Core Tools proporciona el entorno de tiempo de ejecución central y las plantillas para crear las funciones, lo que permite desarrollar localmente. Admite el desarrollo en Linux, macOS y Windows. Para más información, consulte Creación de una función de PowerShell en Azure desde la línea de comandos.
Entorno Descripción
Visual Studio Code La extensión de Azure Functions para Visual Studio Code agrega compatibilidad con Functions a Visual Studio Code. Requiere Core Tools. Admite el desarrollo en Linux, macOS y Windows. Para más información, vea Creación de la primera función mediante Visual Studio Code.
Símbolo del sistema o terminal Azure Functions Core Tools proporciona el entorno de tiempo de ejecución central y las plantillas para crear las funciones, lo que permite desarrollar localmente. Admite el desarrollo en Linux, macOS y Windows. Para más información, consulte Creación de una función de Python en Azure desde la línea de comandos.

Cada uno de estos entornos de desarrollo local le permite crear proyectos de aplicación de función y usar plantillas de función predefinidas para crear nuevas funciones. Cada una usa Core Tools para probar y depurar sus funciones en el entorno de tiempo de ejecución real de Functions en su propia máquina, igual que haría con cualquier otra aplicación. También puede publicar su proyecto de aplicación de función desde cualquiera de estos entornos en Azure.

Archivos de proyecto locales

Un directorio de proyecto de Functions contiene los siguientes archivos en la carpeta raíz del proyecto, independientemente del lenguaje:

Nombre de archivo Descripción
host.json Para obtener más información, consulte la referencia de host.json.
local.settings.json Configuración que usa Core Tools cuando se ejecuta localmente, incluida la configuración de la aplicación. Para más información, vea el archivo de configuración local.
.gitignore Impide que el archivo local.settings.json se publique accidentalmente en un repositorio de Git. Para más información, vea el archivo de configuración local.
.vscode\extensions.json Archivo de configuración que se usa al abrir la carpeta del proyecto en Visual Studio Code.

Otros archivos del proyecto dependen del lenguaje y de las funciones específicas. Para más información, vea la guía para desarrolladores del lenguaje.

Archivo de configuración local

El archivo local.settings.json almacena la configuración de la aplicación utilizada por las herramientas de desarrollo local. La configuración del archivo local.settings.json solo se usa cuando se ejecuta el proyecto localmente. Al publicar el proyecto en Azure, asegúrese de agregar también cualquier configuración necesaria a la configuración de la aplicación para la aplicación de funciones.

Importante

Como el archivo local.settings.json puede contener secretos, como cadenas de conexión, debe tener precaución al confirmar en el control de código fuente. Las herramientas que admiten Functions proporcionan formas de sincronizar la configuración del local.settings.json archivo con la configuración de la aplicación en la aplicación de funciones en la que se implementa el proyecto.

El local.settings.json archivo tiene esta estructura:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Esta configuración se admite al ejecutar los proyectos de forma local:

Configuración Descripción
IsEncrypted Cuando la configuración se establece en true, todos los valores se cifran con una clave de máquina local. Se usa con los comandos func settings. El valor predeterminado es false. El archivo local.settings.json se puede cifrar en su equipo local cuando contiene secretos, como las cadenas de conexión de servicios. El host descifra automáticamente la configuración cuando se ejecuta. Use el comando func settings decrypt antes de intentar leer la configuración cifrada localmente.
Values Colección de opciones de configuración de la aplicación que se usan al ejecutar un proyecto de forma local. Estos pares clave-valor (cadena-cadena) se corresponden a la configuración de la aplicación en la aplicación de funciones de Azure, como AzureWebJobsStorage. Muchos desencadenadores y enlaces tienen una propiedad que hace referencia a una configuración de la aplicación de cadena de conexión, por ejemplo, Connection para el desencadenador del almacén de blobs. Para estas propiedades, se necesita una configuración de la aplicación definida en la matriz Values. Consulte la tabla posterior, donde encontrará una lista de los valores que se usan con más frecuencia.
Los valores deben ser cadenas y no objetos JSON o matrices. Los nombres de la configuración no pueden incluir un subrayado doble (__) y no deben incluir dos puntos (:). Los caracteres dobles de subrayado están reservados para el tiempo de ejecución, mientras que el signo de dos puntos está reservado para admitir la inserción de dependencias.
Host La configuración que se muestra en esta sección permite personalizar el proceso de host de Functions al ejecutar los proyectos de forma local. Dicha configuración es independiente de la de host.json, que también se aplica al ejecutar proyectos en Azure.
LocalHttpPort Establece el puerto predeterminado que se usa cuando al ejecutar el host de Functions local (func host start y func run). La opción de línea de comandos --port tiene prioridad sobre esta configuración. Por ejemplo, cuando trabaje en IDE de Visual Studio, puede cambiar el número de puerto. Para ello, vaya a la ventana "Propiedades de proyecto -> Depurar" y especifique de manera explícita el número de puerto en un comando host start --port <your-port-number> que se puede suministrar en el campo "Argumentos de aplicación".
CORS Define los orígenes permitidos para el uso compartido de recursos entre orígenes (CORS). Los orígenes se proporcionan en una lista de valores separados por comas y sin espacios. Se admite el valor comodín (*), lo que permite realizar solicitudes desde cualquier origen.
CORSCredentials Al establecer el valor en true, se permiten las solicitudes withCredentials.
ConnectionStrings Identificador de colección. No use dicha colección para las cadenas de conexión que empleen enlaces de función. Esta colección solo la usan los marcos que habitualmente obtienen las cadenas de conexión de la sección ConnectionStrings de un archivo de configuración, como Entity Framework. Las cadenas de conexión de este objeto se agregan al entorno con el tipo de proveedor de System.Data.SqlClient. Los elementos de esta colección no se publican en Azure con otra configuración de aplicación. Debe agregar explícitamente estos valores a la colección Connection strings de la configuración de la aplicación de función. Si va a crear una instancia de SqlConnection en el código de la función, debe almacenar el valor de la cadena de conexión con las demás conexiones en Configuración de la aplicación en el portal.

La siguiente configuración de la aplicación se puede incluir en la matriz Values cuando se ejecuta localmente:

Configuración Valores Descripción
AzureWebJobsStorage Cadena de conexión de la cuenta de almacenamiento, o bien
UseDevelopmentStorage=true
Contiene la cadena de conexión de una cuenta de Azure Storage. Se requiere cuando se utilizan desencadenadores distintos de HTTP. Para más información, vea la referencia de AzureWebJobsStorage.
Cuando tiene el emulador de Azurite instalado localmente y configura AzureWebJobsStorage en UseDevelopmentStorage=true, Core Tools usa el emulador. Para más información, consulte Emulador de almacenamiento local.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Para deshabilitar una función cuando la ejecución se realizar en un entorno local, agregue "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" a la colección, donde <FUNCTION_NAME> es el nombre de la función. Para más información, consulte Deshabilitamiento de funciones en Azure Functions.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
Indica el lenguaje de destino del runtime de Functions. Se requiere para la versión 2.x y superior del runtime de Functions. Este valor lo genera Azure Functions Core Tools para el proyecto. Para más información, vea la referencia de FUNCTIONS_WORKER_RUNTIME.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Indica que se use PowerShell 7 cuando se ejecuta localmente. Si no se establece, se usa PowerShell Core 6. Este valor solo se usa cuando la ejecución se realice localmente. La versión del runtime de PowerShell viene determinada por el valor de configuración del sitio powerShellVersion, cuando se ejecuta en Azure, que se puede establecer en el portal.

Para obtener información sobre cómo usar valores de la values matriz como variables de entorno en el código de función, consulte Variables de entorno en la guía para desarrolladores.

Para obtener información sobre cómo usar valores de la values matriz como variables de entorno en el código de función, consulte Variables de entorno en la guía para desarrolladores.

Para obtener información sobre cómo usar valores de la values matriz como variables de entorno en el código de función, consulte Variables de entorno en la guía para desarrolladores.

Para obtener información sobre cómo usar valores de la values matriz como variables de entorno en el código de función, consulte Variables de entorno en la guía para desarrolladores.

Sincronización de la configuración

Al desarrollar las funciones localmente, cualquier configuración local requerida por la aplicación también debe estar presente en la configuración de la aplicación de la aplicación de funciones en la que se implementa el código. También es posible que tenga que descargar la configuración actual de la aplicación de funciones en el proyecto local. Aunque puede configurar manualmente los valores de la aplicación en Azure Portal, las siguientes herramientas también le permiten sincronizar los valores de la aplicación con la configuración local en el proyecto:

Desencadenadores y enlaces

Al desarrollar las funciones localmente, debe tener en cuenta los comportamientos de desencadenador y enlace. En el caso de los desencadenadores HTTP, puede llamar al punto de conexión HTTP en el equipo local mediante http://localhost/. En el caso de las funciones desencadenadas sin HTTP, hay varias opciones para ejecutarse localmente:

  • La manera más fácil de probar los enlaces durante el desarrollo local es usar cadenas de conexión destinadas a servicios de Azure activos. Puede dirigirse a servicios activos agregando la configuración de cadena de conexión adecuada en la Values matriz en el archivo local.settings.json. Al hacer esto, las ejecuciones locales de código durante las pruebas pueden afectar a los servicios de producción. En su lugar, considere la posibilidad de configurar servicios independientes para usarlos durante el desarrollo y las pruebas y, a continuación, cambiar a diferentes servicios durante la producción.
  • En el caso de los desencadenadores basados en almacenamiento, puede usar un emulador de almacenamiento local.
  • Puede ejecutar manualmente funciones de desencadenador que no son HTTP mediante puntos de conexión de administrador especiales. Para obtener más información, consulte Ejecución manual de una función no desencadenada por HTTP.

Durante las pruebas locales, debe ejecutar localmente el host proporcionado por Core Tools (func.exe). Para obtener más información, consulte Azure Functions Core Tools.

Herramientas de prueba HTTP

Durante el desarrollo, es fácil llamar a cualquiera de los puntos de conexión de función desde un explorador web cuando admiten el método HTTP GET. Sin embargo, para otros métodos HTTP que admiten cargas, como POST o PUT, debe usar una herramienta de prueba HTTP para crear y enviar estas solicitudes HTTP a los puntos de conexión de función.

Precaución

En los casos en los que sus solicitudes deban incluir datos confidenciales, asegúrese de utilizar una herramienta que proteja sus datos y reduzca el riesgo de exponerlos al público. Los datos confidenciales que debe proteger podrían incluir: credenciales, secretos, tokens de acceso, claves de API, datos de geolocalización, incluso datos personales.

Para proteger los datos, elija una herramienta de prueba HTTP que funcione sin conexión o localmente, no sincronice los datos en la nube y no requiera que inicie sesión en una cuenta en línea. Algunas herramientas también pueden proteger los datos de la exposición accidental mediante la implementación de características de seguridad específicas.

Evite usar herramientas que almacenen de forma centralizada su historial de solicitudes HTTP (incluida la información confidencial), que no sigan los procedimientos recomendados de seguridad o que no respeten la privacidad de los datos.

Considere la posibilidad de usar una de estas herramientas para enviar solicitudes HTTP de forma segura a los puntos de conexión de función:

Emulador de almacenamiento local

Durante el desarrollo local, puede usar el emulador de Azurite local al probar funciones con enlaces de Azure Storage (Queue Storage, Blob Storage y Table Storage), sin tener que conectarse a servicios de almacenamiento remoto. Azurite se integra con Visual Studio Code y Visual Studio, y también puede ejecutarlo desde el símbolo del sistema mediante npm. Para más información, consulte Uso del emulador de Azurite para desarrollo y pruebas locales de Azure Storage.

La siguiente configuración de la Values colección del archivo local.settings.json indica al host de Functions local que use Azurite para la conexión predeterminada AzureWebJobsStorage:

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Con este valor de configuración, cualquier desencadenador o enlace de Azure Storage que use AzureWebJobsStorage como conexión se conecta a Azurite cuando se ejecuta localmente. Tenga en cuenta estas consideraciones al usar la emulación de almacenamiento durante la ejecución local:

  • Debe tener Azurite instalado y en ejecución.
  • Pruebe con una conexión de almacenamiento real a los servicios de Azure antes de publicar en Azure.
  • Al publicar el proyecto, no publique la configuración AzureWebJobsStorage como UseDevelopmentStorage=true. En Azure, la configuración de AzureWebJobsStorage siempre debe ser la cadena de conexión de la cuenta de almacenamiento que usa la aplicación de funciones. Para más información, consulte AzureWebJobsStorage.