Guía para desarrolladores de Azure FunctionsAzure Functions developers guide

En Azure Functions, determinadas funciones comparten algunos componentes y conceptos técnicos básicos, independientemente del idioma o el enlace que use.In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. Antes de ir a detalles de aprendizaje específicos de un idioma o un enlace determinados, asegúrese de leer al completo esta información general que se aplica a todos ellos.Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

En este artículo se supone que ya ha leído la Información general sobre Azure Functions.This article assumes that you've already read the Azure Functions overview.

Código de funciónFunction code

Una función es el concepto principal en las funciones de Azure.A function is the primary concept in Azure Functions. Una función contiene dos elementos importantes: el código, que se puede escribir en diversos lenguajes, y la configuración, el archivo function.json.A function contains two important pieces - your code, which can be written in a variety of languages, and some config, the function.json file. Con los lenguajes compilados, este archivo de configuración se genera automáticamente a partir de las anotaciones del código.For compiled languages, this config file is generated automatically from annotations in your code. Para los lenguajes de scripting, debe proporcionar el archivo de configuración.For scripting languages, you must provide the config file yourself.

El archivo function.json define el desencadenador de la función, los enlaces y otras opciones de configuración.The function.json file defines the function's trigger, bindings, and other configuration settings. Cada función tiene un solo desencadenador.Every function has one and only one trigger. Este archivo de configuración se usa en tiempo de ejecución para determinar los eventos que se supervisarán y cómo pasar datos y devolverlos al ejecutarse una función.The runtime uses this config file to determine the events to monitor and how to pass data into and return data from a function execution. El siguiente es un ejemplo de archivo function.json.The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

La propiedad bindings es donde configura los enlaces y los desencadenadores.The bindings property is where you configure both triggers and bindings. Cada enlace comparte unos ajustes de configuración comunes y algunos parámetros que son específicos de un determinado tipo de enlace.Each binding shares a few common settings and some settings which are specific to a particular type of binding. Cada enlace requiere la siguiente configuración:Every binding requires the following settings:

PropiedadProperty Valores/tiposValues/Types ComentariosComments
type stringstring Tipo de enlace.Binding type. Por ejemplo: queueTrigger.For example, queueTrigger.
direction 'in', 'out''in', 'out' Indica si el enlace está disponible para recibir datos en la función o enviar datos de la función.Indicates whether the binding is for receiving data into the function or sending data from the function.
name stringstring El nombre que se usa para los datos enlazados en la función.The name that is used for the bound data in the function. En C# es un nombre de argumento; en JavaScript es la clave en una lista de clave-valor.For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

Aplicación de funciónFunction app

La aplicación de función proporciona un contexto de ejecución en Azure donde ejecutar las funciones.A function app provides an execution context in Azure in which your functions run. Una aplicación de función se compone de una o varias funciones individuales que se administran, implementan y escalan conjuntamente.A function app is comprised of one or more individual functions that are managed, deployed, and scaled together. Todas las funciones de una aplicación de función comparten el mismo plan de precios, la misma implementación continua y la misma versión en tiempo de ejecución.All of the functions in a function app share the same pricing plan, continuous deployment and runtime version. Una aplicación de función es como una forma de organizar y administrar las funciones de manera colectiva.Think of a function app as a way to organize and collectively manage your functions.

Nota

Todas las funciones de una aplicación de función deben crearse en el mismo lenguaje.All functions in a function app must be authored in the same language. En versiones anteriores del tiempo de ejecución de Azure Functions, esto no era necesario.In previous versions of the Azure Functions runtime, this wasn't required.

Estructura de carpetasFolder structure

El código de todas las funciones de una aplicación de función está ubicado en una carpeta de proyecto raíz que contiene un archivo de configuración de host y una o varias subcarpetas.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Cada subcarpeta contiene el código de una función diferente como se puede ver en la representación siguiente:Each subfolder contains the code for a separate function, as in the following representation:

FunctionApp
 | - host.json
 | - Myfirstfunction
 | | - function.json
 | | - ...  
 | - mysecondfunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

En la versión 2.x del sistema en ejecución de Functions, todas las funciones de la aplicación de función deben compartirse en el mismo proceso de trabajo de idioma.In version 2.x of the Functions runtime, all functions in the function app must share the same language worker.

El archivo host.json, que contiene alguna configuración específica del tiempo de ejecución, se coloca en la carpeta principal de la aplicación de función.The host.json file, which contains some runtime-specific configurations, is in the root folder of the function app. Un carpeta bin contiene paquetes y otros archivos de biblioteca requeridos por la aplicación de función.A bin folder contains packages and other library files required by the function app. Consulte los requisitos específicos de idioma para un proyecto de aplicación de función:See the language-specific requirements for a function app project:

La estructura de carpetas anterior es la predeterminada (y recomendada) para una aplicación de función.The above is the default (and recommended) folder structure for a Function app. Si desea cambiar la ubicación del archivo de código de una función, modifique la sección scriptFile del archivo function.json.If you wish to change the file location of a function's code, modify the scriptFile section of the function.json file. Asimismo, para implementar el proyecto en la aplicación de función en Azure, se recomienda usar la implementación de paquetes.We also recommend using package deployment to deploy your project to your function app in Azure. También puede usar herramientas existentes como la integración e implementación continuas y Azure DevOps.You can also use existing tools like continuous integration and deployment and Azure DevOps.

Nota

Si implementa un paquete manualmente, asegúrese de implementar el archivo host.json y las carpetas de la función directamente en la carpeta wwwroot.If deploying a package manually, make sure to deploy your host.json file and function folders directly to the wwwroot folder. No incluya la carpeta wwwroot en sus implementaciones.Do not include the wwwroot folder in your deployments. De lo contrario, acabará con carpetas wwwroot\wwwroot.Otherwise, you end up with wwwroot\wwwroot folders.

Uso de herramientas locales y publicaciónUse local tools and publishing

Las aplicaciones de función pueden crearse y publicarse con diversas herramientas, incluidas Visual Studio, Visual Studio Code, IntelliJ, Eclipse y Azure Functions Core Tools.Function apps can be authored and published using a variety of tools, including Visual Studio, Visual Studio Code, IntelliJ, Eclipse, and the Azure Functions Core Tools. Para más información, consulte Codificación y comprobación de las funciones de Azure Functions en un entorno local.For more information, see Code and test Azure Functions locally.

Edición de funciones en Azure PortalHow to edit functions in the Azure portal

El editor de funciones integrado en Azure Portal le permite actualizar el código y el archivo function.json directamente.The Functions editor built into the Azure portal lets you update your code and your function.json file directly inline. Esto solo se recomienda para pequeños cambios o pruebas de concepto: el procedimiento recomendado es usar una herramienta de desarrollo local como VS Code.This is recommended only for small changes or proofs of concept - best practice is to use a local development tool like VS Code.

Ejecución en paraleloParallel execution

Cuando se producen varios eventos de desencadenado más rápido de lo que un tiempo de ejecución de función de un solo subproceso pueda procesarlos, el tiempo de ejecución puede invocar la función varias veces en paralelo.When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. Si una aplicación de función usa el plan de hospedaje de consumo, esta aplicación podría escalarse horizontalmente de forma automática.If a function app is using the Consumption hosting plan, the function app could scale out automatically. Cada instancia de la aplicación de función, tanto si la aplicación se ejecuta en el plan de hospedaje de consumo como en el plan de hospedaje de App Service normal, puede procesar invocaciones de función simultáneas en paralelo mediante varios subprocesos.Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. El número máximo de invocaciones de función simultáneas en cada instancia de aplicación de función varía según el tipo de desencadenador usado y lo recursos empleados por otras funciones dentro de la aplicación de función.The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Versiones del entorno en tiempo de ejecución de FunctionsFunctions runtime versioning

Puede configurar la versión del entorno en tiempo de ejecución de Functions mediante la configuración de la aplicación FUNCTIONS_EXTENSION_VERSION.You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. Por ejemplo, el valor "~2" indica que la aplicación de función utilizará 2.x como versión principal.For example, the value "~2" indicates that your Function App will use 2.x as its major version. Las Function App se actualizan a las nuevas versiones secundarias a medida que se lanzan.Function Apps are upgraded to each new minor version as they are released. Para más información y saber cómo ver la versión exacta de la aplicación de función, consulte Cómo seleccionar un destino para versiones en tiempo de ejecución de Azure Functions.For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

RepositoriosRepositories

El código de Azure Functions es código abierto y está almacenado en repositorios de GitHub:The code for Azure Functions is open source and stored in GitHub repositories:

EnlacesBindings

Esta es una tabla de todos los enlaces admitidos.Here is a table of all supported bindings.

En la tabla siguiente se muestran los enlaces que son compatibles con las dos versiones principales del entorno de tiempo de ejecución de Azure Functions.The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

TypeType 1.x1.x 2.x12.x1 DesencadenadorTrigger EntradaInput SalidaOutput
Blob StorageBlob Storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP & WebhooksHTTP & Webhooks
Microsoft Graph
Tablas de Excel
Microsoft Graph
Excel tables
Microsoft Graph
Archivos de OneDrive
Microsoft Graph
OneDrive files
Microsoft Graph
Correo electrónico de Outlook
Microsoft Graph
Outlook email
Microsoft Graph
Eventos
Microsoft Graph
Events
Microsoft Graph
Tokens de autenticación
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Centros de notificacionesNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Table storageTable storage
TemporizadorTimer
TwilioTwilio

1 En 2.x, se deben registrar todos los enlaces, excepto HTTP y el temporizador.1 In 2.x, all bindings except HTTP and Timer must be registered. Consulte Registro de extensiones de enlace.See Register binding extensions.

¿Tiene algún problema con errores procedentes de los enlaces?Having issues with errors coming from the bindings? Revise la documentación de los códigos de error de los enlaces de Azure Functions.Review the Azure Functions Binding Error Codes documentation.

Problemas de informesReporting Issues

itemItem DESCRIPCIÓNDescription VínculoLink
Tiempo de ejecuciónRuntime Host de script, desencadenadores y enlaces, compatibilidad con idiomasScript Host, Triggers & Bindings, Language Support Registre un problemaFile an Issue
PlantillasTemplates Problemas de código con la plantilla de creaciónCode Issues with Creation Template Registre un problemaFile an Issue
PortalPortal Interfaz de usuario o problema de la experienciaUser Interface or Experience Issue Registre un problemaFile an Issue

Pasos siguientesNext steps

Para obtener más información, consulte los siguientes recursos:For more information, see the following resources: