Uso de Azure Functions Core ToolsWork with Azure Functions Core Tools

Azure Functions Core Tools le permite desarrollar y probar funciones en el equipo local desde el símbolo del sistema o terminal.Azure Functions Core Tools lets you develop and test your functions on your local computer from the command prompt or terminal. Las funciones locales pueden conectarse a servicios de Azure en directo, y puede depurar sus funciones en el equipo local con el tiempo de ejecución de Functions completo.Your local functions can connect to live Azure services, and you can debug your functions on your local computer using the full Functions runtime. Incluso puede implementar una aplicación de función en su suscripción a Azure.You can even deploy a function app to your Azure subscription.

Importante

No mezcle el desarrollo local con el desarrollo del portal en la misma aplicación de función.Do not mix local development with portal development in the same function app. Cuando cree y publique funciones desde un proyecto local, no debe intentar mantener o modificar el código del proyecto en el portal.When you create and publish functions from a local project, you should not try to maintain or modify project code in the portal.

Para desarrollar funciones en el equipo local y publicarlas en Azure utilizando Core Tools siga estos pasos básicos:Developing functions on your local computer and publishing them to Azure using Core Tools follows these basic steps:

Versiones de Core ToolsCore Tools versions

Hay tres versiones de Azure Functions Core Tools.There are three versions of Azure Functions Core Tools. La versión que use depende del entorno de desarrollo local, la elección del lenguaje y el nivel de compatibilidad necesario:The version you use depends on your local development environment, choice of language, and level of support required:

Solo puede instalar una versión de Core Tools en un equipo determinado.You can only install one version of Core Tools on a given computer. A menos que se indique lo contrario, los ejemplos de este artículo son para la versión 3.x.Unless otherwise noted, the examples in this article are for version 3.x.

Requisitos previosPrerequisites

Azure Functions Core Tools actualmente depende de la CLI de Azure para la autenticación con su cuenta de Azure.Azure Functions Core Tools currently depends on the Azure CLI for authenticating with your Azure account. Esto significa que debe instalar la CLI de Azure localmente para poder realizar la publicación en Azure desde Azure Functions Core Tools.This means that you must install the Azure CLI locally to be able to publish to Azure from Azure Functions Core Tools.

Instalación de Azure Functions Core ToolsInstall the Azure Functions Core Tools

Azure Functions Core Tools incluye una versión del mismo tiempo de ejecución de Azure Functions que puede ejecutar en el equipo de desarrollo local.Azure Functions Core Tools includes a version of the same runtime that powers Azure Functions runtime that you can run on your local development computer. También proporciona comandos para crear funciones, conectarse a Azure e implementar proyectos de funciones.It also provides commands to create functions, connect to Azure, and deploy function projects.

Versión 3.x y 2.xVersion 3.x and 2.x

La versión 3.x o 2.x de las herramientas usa el entorno de ejecución de Azure Functions que se basa en .NET Core.Version 3.x/2.x of the tools uses the Azure Functions runtime that is built on .NET Core. Esta versión se admite en todas las plataformas que admiten .NET Core, incluidas Windows, macOS y Linux.This version is supported on all platforms .NET Core supports, including Windows, macOS, and Linux.

Importante

Puede omitir el requisito de instalar el SDK de .NET Core con los conjuntos de extensiones.You can bypass the requirement for installing the .NET Core SDK by using extension bundles.

En los pasos siguientes se utiliza Windows Installer (MSI) para instalar Core Tools v3.x.The following steps use a Windows installer (MSI) to install Core Tools v3.x. Para obtener más información sobre otros instaladores basados en paquetes, que son necesarios para instalar Core Tools V2. x, consulte el archivo Léame de Core Tools.For more information about other package-based installers, which are required to install Core Tools v2.x, see the Core Tools readme.

  1. Descargue y ejecute el instalador de Core Tools según su versión de Windows:Download and run the Core Tools installer, based on your version of Windows:

  2. Si no planea usar los conjuntos de extensión, instale el SDK de .NET Core 3.x para Windows.If you don't plan to use extension bundles, install the .NET Core 3.x SDK for Windows.

Creación de un proyecto local de FunctionsCreate a local Functions project

Un directorio de proyecto de funciones contiene los archivos host.json y local.settings.json, junto con las subcarpetas que contienen el código de funciones individuales.A functions project directory contains the files host.json and local.settings.json, along with subfolders that contain the code for individual functions. Este directorio es el equivalente a una aplicación de función en Azure.This directory is the equivalent of a function app in Azure. Para obtener más información sobre la estructura de carpetas de Functions, vea la Guía para desarrolladores de Azure Functions.To learn more about the Functions folder structure, see the Azure Functions developers guide.

Para la versión 3.x o 2.x deberá seleccionar un lenguaje predeterminado para el proyecto cuando lo inicialice.Version 3.x/2.x requires you to select a default language for your project when it is initialized. En la versión 3. x o 2.x, todas las funciones agregadas usan plantillas de lenguaje predeterminado.In version 3.x/2.x, all functions added use default language templates. En la versión 1.x, debe especificar el lenguaje cada vez que crea una función.In version 1.x, you specify the language each time you create a function.

En la ventana de terminal o desde un símbolo del sistema, ejecute el siguiente comando para crear el proyecto y el repositorio de Git local:In the terminal window or from a command prompt, run the following command to create the project and local Git repository:

func init MyFunctionProj

Importante

Java utiliza un arquetipo de Maven para crear el proyecto de funciones local, junto con la primera función desencadenada por HTTP.Java uses a Maven archetype to create the local Functions project, along with your first HTTP triggered function. Utilice el comando siguiente para crear el proyecto de Java: mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype.Use the following command to create your Java project: mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype. Para obtener un ejemplo del uso del arquetipo de Maven, consulte la guía de inicio rápido de línea de comandos.For an example using the Maven archetype, see the Command line quickstart.

Al especificar un nombre de proyecto, se crea una carpeta con dicho nombre y posteriormente se inicializa.When you provide a project name, a new folder with that name is created and initialized. En caso contrario, se inicializa la carpeta actual.Otherwise, the current folder is initialized.
En la versión 3.x o 2.x, cuando ejecute el comando, debe elegir un entorno de ejecución para el proyecto.In version 3.x/2.x, when you run the command you must choose a runtime for your project.

Select a worker runtime:
dotnet
node
python 
powershell

Use las flechas arriba/abajo para elegir un lenguaje, a continuación, presione ENTRAR.Use the up/down arrow keys to choose a language, then press Enter. Si tiene previsto desarrollar funciones de JavaScript o de TypeScript, elija nodo y seleccione el lenguaje.If you plan to develop JavaScript or TypeScript functions, choose node , and then select the language. TypeScript tiene algunos requisitos adicionales.TypeScript has some additional requirements.

La salida tendrá un aspecto similar al siguiente ejemplo de un proyecto de JavaScript:The output looks like the following example for a JavaScript project:

Select a worker runtime: node
Writing .gitignore
Writing host.json
Writing local.settings.json
Writing C:\myfunctions\myMyFunctionProj\.vscode\extensions.json
Initialized empty Git repository in C:/myfunctions/myMyFunctionProj/.git/

func init admite las siguientes opciones, que corresponden solo a la versión 3.x o 2.x, a menos que se indique lo contrario:func init supports the following options, which are version 3.x/2.x-only, unless otherwise noted:

OpciónOption DescripciónDescription
--csx Crea funciones de .NET como script de C#, que es el comportamiento de la versión 1.x.Creates .NET functions as C# script, which is the version 1.x behavior. Solo es válido con --worker-runtime dotnet.Valid only with --worker-runtime dotnet.
--docker Crea un archivo Dockerfile para un contenedor con una imagen base en función del elemento --worker-runtime elegido.Creates a Dockerfile for a container using a base image that is based on the chosen --worker-runtime. Use esta opción cuando vaya a publicar en un contenedor Linux personalizado.Use this option when you plan to publish to a custom Linux container.
--docker-only Agrega un Dockerfile a un proyecto existente.Adds a Dockerfile to an existing project. Solicita el entorno de ejecución de trabajo si no se especifica o se establece en local.settings.json.Prompts for the worker-runtime if not specified or set in local.settings.json. Use esta opción cuando vaya a publicar un proyecto existente en un contenedor de Linux personalizado.Use this option when you plan to publish an existing project to a custom Linux container.
--force Inicializa el proyecto incluso cuando hay archivos existentes en el proyecto.Initialize the project even when there are existing files in the project. Este valor sobrescribe los archivos existentes con el mismo nombre.This setting overwrites existing files with the same name. Los otros archivos de la carpeta del proyecto no se ven afectados.Other files in the project folder aren't affected.
--language Inicializa un proyecto específico del lenguaje.Initializes a language specific project. Se admite actualmente cuando --worker-runtime se establece en node.Currently supported when --worker-runtime set to node. Las opciones son typescript y javascript.Options are typescript and javascript. También puede usar --worker-runtime javascript o --worker-runtime typescript.You can also use --worker-runtime javascript or --worker-runtime typescript.
--managed-dependencies Instala las dependencias administradas.Installs managed dependencies. Actualmente, solo admite esta funcionalidad el entorno de ejecución de trabajos de PowerShell.Currently, only the PowerShell worker runtime supports this functionality.
--source-control Controla si se crea un repositorio de git.Controls whether a git repository is created. De forma predeterminada, no se crea un repositorio.By default, a repository isn't created. Cuando es true, se crea un repositorio.When true, a repository is created.
--worker-runtime Establece el entorno de ejecución del lenguaje del proyecto.Sets the language runtime for the project. Los valores admitidos son csharp, dotnet, javascript, node (JavaScript),powershell, python y typescript.Supported values are: csharp, dotnet, javascript,node (JavaScript), powershell, python, and typescript. Para Java, use Maven. Si no está establecido, deberá elegir el entorno de ejecución durante la inicialización.For Java, use Maven.When not set, you're prompted to choose your runtime during initialization.

Importante

De manera predeterminada, con la versión 2.x y las posteriores de Core Tools se crean proyectos de aplicación de funciones para el entorno de ejecución de .NET como proyectos de clase de C# (.csproj).By default, version 2.x and later versions of the Core Tools create function app projects for the .NET runtime as C# class projects (.csproj). Estos proyectos de C#, que se pueden usar con Visual Studio o con Visual Studio Code, se compilan durante las pruebas y al publicar en Azure.These C# projects, which can be used with Visual Studio or Visual Studio Code, are compiled during testing and when publishing to Azure. Si en su lugar desea crear y trabajar con los mismos archivos de script de C# (.csx) creados en la versión 1.x y en el portal, debe incluir el parámetro --csx cuando cree e implemente las funciones.If you instead want to create and work with the same C# script (.csx) files created in version 1.x and in the portal, you must include the --csx parameter when you create and deploy functions.

Registro de las extensionesRegister extensions

A excepción de los desencadenadores de HTTP y del temporizador, los enlaces de Functions en las versiones 2.x y superiores del runtime se implementan como paquetes de extensión.With the exception of HTTP and timer triggers, Functions bindings in runtime version 2.x and higher are implemented as extension packages. Los enlaces HTTP y los desencadenadores de temporizador no requieren extensiones.HTTP bindings and timer triggers don't require extensions.

Para reducir las incompatibilidades entre los distintos paquetes de extensiones, Functions le permite hacer referencia a un conjunto de extensiones en el archivo de proyecto host.json.To reduce incompatibilities between the various extension packages, Functions lets you reference an extension bundle in your host.json project file. Si decide no usar conjuntos de extensiones, también debe instalar el SDK de .NET Core 2.x localmente y mantener un archivo extensions.csproj con el proyecto de funciones.If you choose not to use extension bundles, you also need to install .NET Core 2.x SDK locally and maintain an extensions.csproj with your functions project.

Tanto en la versión 2.x del runtime de Azure Functions como en las posteriores, debe registrar explícitamente las extensiones de los tipos de enlace que use en sus funciones.In version 2.x and beyond of the Azure Functions runtime, you have to explicitly register the extensions for the binding types used in your functions. Puede instalar las extensiones de enlace individualmente o puede agregar una referencia de un conjunto de extensiones al archivo del proyecto host.json.You can choose to install binding extensions individually, or you can add an extension bundle reference to the host.json project file. Los conjuntos de extensiones eliminan la posibilidad de tener problemas de compatibilidad con los paquetes cuando se usan varios tipos de enlace.Extension bundles removes the chance of having package compatibility issues when using multiple binding types. Este el enfoque recomendado para registrar extensiones de enlace.It is the recommended approach for registering binding extensions. Los conjuntos de extensiones también eliminan el requisito de instalar el SDK de .NET Core 2.x.Extension bundles also removes the requirement of installing the .NET Core 2.x SDK.

Uso de conjuntos de extensionesUse extension bundles

La forma más fácil de instalar extensiones de enlace es habilitar conjuntos de extensiones.The easiest way to install binding extensions is to enable extension bundles. Al habilitar agrupaciones, un conjunto predefinido de paquetes de extensiones se instala automáticamente.When you enable bundles, a predefined set of extension packages is automatically installed.

Para habilitar las agrupaciones de extensiones, abra el archivo host.json y actualice su contenido para que coincida con el siguiente código:To enable extension bundles, open the host.json file and update its contents to match the following code:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}

Para obtener más información, consulte Register Azure Functions binding extensions (Registrar las extensiones de enlace de Azure Functions).To learn more, see Register Azure Functions binding extensions. Debe agregar los conjuntos de extensiones a host.json antes de agregar enlaces al archivo functions.json.You should add extension bundles to the host.json before you add bindings to the function.json file.

Instalación explícita de extensionesExplicitly install extensions

Si no puede usar paquetes de extensión, utilice Azure Functions Core Tools localmente para instalar los paquetes de extensión específicos que requiere el proyecto.If you aren't able to use extension bundles, you can use Azure Functions Core Tools locally to install the specific extension packages required by your project.

Importante

No se pueden instalar extensiones explícitamente en una aplicación de función que use conjuntos de extensiones.You can't explicitly install extensions in a function app that is using extension bundles. Antes de instalar las extensiones explícitamente, quite la sección extensionBundle en host.json.Remove the extensionBundle section in host.json before explicitly installing extensions.

En los siguientes elementos se describen algunos de los motivos por los que es posible que tenga que instalar las extensiones manualmente:The following items describe some reasons you might need to install extensions manually:

  • Debe tener acceso a una versión específica de una extensión que no está disponible en un conjunto.You need to access a specific version of an extension not available in a bundle.
  • Debe tener acceso a una extensión personalizada que no está disponible en un conjunto.You need to access a custom extension not available in a bundle.
  • Debe tener acceso a una combinación específica de extensiones que no está disponible en un único conjunto.You need to access a specific combination of extensions not available in a single bundle.

Nota

Para instalar manualmente extensiones mediante Core Tools, debe tener instalado el SDK de .NET Core 2.x.To manually install extensions by using Core Tools, you must have the .NET Core 2.x SDK installed. Azure Functions Core Tools usa el SDK de .NET Core para instalar extensiones de NuGet.The .NET Core SDK is used by Azure Functions Core Tools to install extensions from NuGet. No es necesario tener conocimientos de .NET para usar las extensiones de Azure Functions.You don't need to know .NET to use Azure Functions extensions.

Cuando se instalan las extensiones explícitamente, se agrega un archivo de proyecto .NET denominado extensions.csproj a la raíz del proyecto.When you explicitly install extensions, a .NET project file named extensions.csproj is added to the root of your project. Este archivo define el conjunto de paquetes NuGet requeridos por las funciones.This file defines the set of NuGet packages required by your functions. Aunque puede trabajar con las referencias de paquetes de NuGet en este archivo, las herramientas principales le permiten instalar extensiones sin tener que editar manualmente el archivo.While you can work with the NuGet package references in this file, Core Tools lets you install extensions without having to manually edit the file.

Hay varias maneras de usar las herramientas principales para instalar las extensiones necesarias en el proyecto local.There are several ways to use Core Tools to install the required extensions in your local project.

Instalación de todas las extensionesInstall all extensions

Utilice el comando siguiente para agregar automáticamente todos los paquetes de extensiones que usan los enlaces del proyecto local:Use the following command to automatically add all extension packages used by the bindings in your local project:

func extensions install

El comando lee el archivo function.json para ver qué paquetes necesita, los instala y, luego, recompila el proyecto de extensiones.The command reads the function.json file to see which packages you need, installs them, and rebuilds the extensions project (extensions.csproj). Agrega los nuevos enlaces en la versión actual, pero no actualiza los enlaces existentes.It adds any new bindings at the current version but does not update existing bindings. Use la opción --force para actualizar los enlaces existentes a la versión más reciente cuando instale otros nuevos.Use the --force option to update existing bindings to the latest version when installing new ones.

Si la aplicación de función usa enlaces que no reconoce Core Tools, debe instalar manualmente la extensión específica.If your function app uses bindings that Core Tools does not recognize, you must manually install the specific extension.

Instalación de una extensión específicaInstall a specific extension

Utilice el siguiente comando para instalar un paquete de extensiones específico en una versión específica, en este caso la extensión de almacenamiento:Use the following command to install a specific extension package at a specific version, in this case the Storage extension:

func extensions install --package Microsoft.Azure.WebJobs.Extensions.Storage --version 4.0.2

Archivo de configuración localLocal settings file

El archivo local.settings.json almacena la configuración de la aplicación, las cadenas de conexión y la configuración que usan las herramientas locales de desarrollo.The local.settings.json file stores app settings, connection strings, and settings used by local development tools. La configuración del archivo local.settings.json solo se usa al ejecutar los proyectos de forma local.Settings in the local.settings.json file are used only when you're running projects locally. El archivo de configuración local tiene la siguiente estructura:The local settings file has this structure:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<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:These settings are supported when you run projects locally:

ConfiguraciónSetting DescripciónDescription
IsEncrypted Cuando la configuración se establece en true, todos los valores se cifran con una clave de máquina local.When this setting is set to true, all values are encrypted with a local machine key. Se usa con los comandos func settings.Used with func settings commands. El valor predeterminado es false.Default value is false. El archivo local.settings.json se puede cifrar en su equipo local cuando contiene secretos, como las cadenas de conexión de servicios.You might want to encrypt the local.settings.json file on your local computer when it contains secrets, such as service connection strings. El host descifra automáticamente la configuración cuando se ejecuta.The host automatically decrypts settings when it runs. Use el comando func settings decrypt antes de intentar leer la configuración cifrada localmente.Use the func settings decrypt command before trying to read locally encrypted settings.
Values Matriz de opciones de configuración de la aplicación y cadenas de conexión que se usan al ejecutar un proyecto de forma local.Array of application settings and connection strings used when a project is running locally. Estos pares clave-valor (cadena-cadena) corresponden a la configuración de la aplicación en su aplicación de funciones de Azure, como AzureWebJobsStorage.These key-value (string-string) pairs correspond to application settings in your function app in Azure, like 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.Many triggers and bindings have a property that refers to a connection string app setting, like Connection for the Blob storage trigger. Para estas propiedades, se necesita una configuración de la aplicación definida en la matriz Values.For these properties, you need an application setting defined in the Values array. Consulte la tabla posterior, donde encontrará una lista de los valores que se usan con más frecuencia.See the subsequent table for a list of commonly used settings.
Los valores deben ser cadenas y no objetos JSON o matrices.Values must be strings and not JSON objects or arrays. Los nombres de la configuración no pueden incluir dos puntos (:) ni un subrayado doble (__).Setting names can't include a colon (:) or a double underline (__). 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.Double underline characters are reserved by the runtime, and the colon is reserved to support dependency injection.
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.Settings in this section customize the Functions host process when you run projects locally. Dicha configuración es independiente de la de host.json, que también se aplica al ejecutar proyectos en Azure.These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPort Establece el puerto predeterminado que se usa cuando al ejecutar el host de Functions local (func host start y func run).Sets the default port used when running the local Functions host (func host start and func run). La opción de línea de comandos --port tiene prioridad sobre esta configuración.The --port command-line option takes precedence over this setting.
CORS Define los orígenes permitidos para el uso compartido de recursos entre orígenes (CORS).Defines the origins allowed for cross-origin resource sharing (CORS). Los orígenes se proporcionan en una lista de valores separados por comas y sin espacios.Origins are supplied as a comma-separated list with no spaces. Se admite el valor comodín (*), lo que permite realizar solicitudes desde cualquier origen.The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentials Al establecer el valor en true, se permiten las solicitudes withCredentials.When set to true, allows withCredentials requests.
ConnectionStrings Identificador de colección.A collection. No use dicha colección para las cadenas de conexión que empleen enlaces de función.Don't use this collection for the connection strings used by your function bindings. 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.This collection is used only by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, like Entity Framework. Las cadenas de conexión de este objeto se agregan al entorno con el tipo de proveedor de System.Data.SqlClient.Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. Los elementos de esta colección no se publican en Azure con otra configuración de aplicación.Items in this collection aren't published to Azure with other app settings. Debe agregar explícitamente estos valores a la colección Connection strings de la configuración de la aplicación de función.You must explicitly add these values to the Connection strings collection of your function app settings. Si quiere crear un objeto SqlConnection en el código de la función, debe almacenar el valor de la cadena de conexión con las otras conexiones en Configuración de la aplicación, en el portal.If you're creating a SqlConnection in your function code, you should store the connection string value with your other connections in Application Settings in the portal.

Los siguientes valores de la aplicación se pueden incluir en la matriz Values cuando la ejecución se realiza en un entorno local:The following application settings can be included in the Values array when running locally:

ConfiguraciónSetting ValoresValues DescripciónDescription
AzureWebJobsStorage Cadena de conexión de la cuenta de almacenamiento, o bienStorage account connection string, or
UseDevelopmentStorage=true
Contiene la cadena de conexión de una cuenta de Azure Storage.Contains the connection string for an Azure storage account. Se requiere cuando se utilizan desencadenadores distintos de HTTP.Required when using triggers other than HTTP. Para más información, consulte la referencia de AzureWebJobsStorage.For more information, see the AzureWebJobsStorage reference.
Si tiene el emulador de Azure Storage instalado localmente y ha establecido AzureWebJobsStorage en UseDevelopmentStorage=true, Core Tools usará el emulador.When you have the Azure Storage Emulator installed locally and you set AzureWebJobsStorage to UseDevelopmentStorage=true, Core Tools uses the emulator. Dicho emulador es útil durante el desarrollo, pero conviene probarlo con una conexión de almacenamiento real antes de la implementación.The emulator is useful during development, but you should test with an actual storage connection before deployment.
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.To disable a function when running locally, add "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" to the collection, where <FUNCTION_NAME> is the name of the function. Para más información, consulte Deshabilitamiento de funciones en Azure FunctionsTo learn more, see How to disable functions in Azure Functions
FUNCTIONS_WORKER_RUNTIME dotnet
node
java
powershell
python
Indica el lenguaje de destino del runtime de Functions.Indicates the targeted language of the Functions runtime. Se requiere para la versión 2.x y superior del runtime de Functions.Required for version 2.x and higher of the Functions runtime. Este valor lo genera Azure Functions Core Tools para el proyecto.This setting is generated for your project by Core Tools. Para más información, consulte la referencia de FUNCTIONS_WORKER_RUNTIME.To learn more, see the FUNCTIONS_WORKER_RUNTIME reference.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Indica que PowerShell 7 se debe usar cuando la ejecución se realice localmente.Indicates that PowerShell 7 be used when running locally. Si no se establece, se usa PowerShell Core 6.If not set, then PowerShell Core 6 is used. Este valor solo se usa cuando la ejecución se realice localmente.This setting is only used when running locally. Cuando se ejecuta en Azure, la versión del runtime de PowerShell viene determinada por el valor de configuración del sitio powerShellVersion, que se puede establecer en el portal.When running in Azure, the PowerShell runtime version is determined by the powerShellVersion site configuration setting, which can be set in the portal.

De manera predeterminada, estas opciones de configuración no se migran automáticamente cuando el proyecto se publica en Azure.By default, these settings are not migrated automatically when the project is published to Azure. Use el conmutador --publish-local-settingsal publicarlo para asegurarse de que la configuración se agregue a la aplicación de función en Azure.Use the --publish-local-settings switch when you publish to make sure these settings are added to the function app in Azure. Tenga en cuenta que los valores de ConnectionStrings nunca se publican.Note that values in ConnectionStrings are never published.

Esta configuración de la aplicación de función también se puede leer en el código como variables de entorno.The function app settings values can also be read in your code as environment variables. Para más información, consulte la sección Variables de entorno de estos temas de referencia específicos del lenguaje:For more information, see the Environment variables section of these language-specific reference topics:

Cuando no se establece ninguna cadena de conexión de almacenamiento válida para AzureWebJobsStorage y no se usa el emulador, se muestra el siguiente mensaje de error:When no valid storage connection string is set for AzureWebJobsStorage and the emulator isn't being used, the following error message is shown:

Missing value for AzureWebJobsStorage in local.settings.json.Missing value for AzureWebJobsStorage in local.settings.json. This is required for all triggers other than HTTP.This is required for all triggers other than HTTP. You can run 'func azure functionapp fetch-app-settings <functionAppName>' or specify a connection string in local.settings.json (Puede ejecutar "func azure functionapp fetch-app-settings" o especificar una cadena de conexión en local settings.json).You can run 'func azure functionapp fetch-app-settings <functionAppName>' or specify a connection string in local.settings.json.

Obtención de las cadenas de conexión de almacenamientoGet your storage connection strings

Incluso cuando se usa el Emulador de Microsoft Azure Storage para tareas de desarrollo, recomendamos probar con una conexión de almacenamiento real.Even when using the Microsoft Azure Storage Emulator for development, you may want to test with an actual storage connection. Suponiendo que ya creó una cuenta de almacenamiento, puede obtener una cadena de conexión de almacenamiento válida de una de las maneras siguientes:Assuming you have already created a storage account, you can get a valid storage connection string in one of the following ways:

  • En Azure Portal, busque y seleccione Cuentas de almacenamiento.From the Azure portal, search for and select Storage accounts. Selección de cuentas de almacenamiento desde Azure PortalSelect Storage accounts from Azure portal

    Seleccione la cuenta de almacenamiento, elija Claves de acceso en Configuración y, a continuación, copie uno de los valores de Cadena de conexión.Select your storage account, select Access keys in Settings , then copy one of the Connection string values. Copia de una cadena de conexión desde Azure PortalCopy connection string from Azure portal

  • Use Explorador de Azure Storage para conectarse a su cuenta de almacenamiento de Azure.Use Azure Storage Explorer to connect to your Azure account. En el Explorador , expanda su suscripción, expanda Cuentas de almacenamiento , seleccione la cuenta de almacenamiento y copie la cadena de conexión principal o secundaria.In the Explorer , expand your subscription, expand Storage Accounts , select your storage account, and copy the primary or secondary connection string.

    Copia de la cadena de conexión desde el Explorador de Azure Storage

  • Utilice Core Tools en el directorio raíz del proyecto para descargar la cadena de conexión de Azure mediante uno de los siguientes comandos:Use Core Tools from the project root to download the connection string from Azure with one of the following commands:

    • Descargue toda la configuración de una aplicación de función existente:Download all settings from an existing function app:

      func azure functionapp fetch-app-settings <FunctionAppName>
      
    • Obtenga la cadena de conexión de una cuenta de almacenamiento concreta:Get the Connection string for a specific storage account:

      func azure storage fetch-connection-string <StorageAccountName>
      

      Si aún no ha iniciado sesión en Azure, se le pedirá que lo haga.When you aren't already signed in to Azure, you're prompted to do so. Estos comandos sobrescriben cualquier configuración existente en el archivo local. settings.json.These commands overwrite any existing settings in the local.settings.json file.

Creación de una funciónCreate a function

Para crear una función, ejecute el siguiente comando:To create a function, run the following command:

func new

En la versión 3.x o 2.x, al ejecutar func new, se le pedirá que elija una plantilla en el lenguaje predeterminado de la aplicación de función y, después, también se le pedirá que elija un nombre para la función.In version 3.x/2.x, when you run func new you are prompted to choose a template in the default language of your function app, then you are also prompted to choose a name for your function. En la versión 1.x, también se le pedirá que elija el lenguaje.In version 1.x, you are also prompted to choose the language.

Select a language: Select a template:
Blob trigger
Cosmos DB trigger
Event Grid trigger
HTTP trigger
Queue trigger
SendGrid
Service Bus Queue trigger
Service Bus Topic trigger
Timer trigger

El código de la función se genera en una subcarpeta con el nombre proporcionado de la función, como se aprecia en la siguiente salida de desencadenador de cola:Function code is generated in a subfolder with the provided function name, as you can see in the following queue trigger output:

Select a language: Select a template: Queue trigger
Function name: [QueueTriggerJS] MyQueueTrigger
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\index.js
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\readme.md
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\sample.dat
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\function.json

También puede especificar estas opciones en el comando con los argumentos siguientes:You can also specify these options in the command using the following arguments:

ArgumentoArgument DescripciónDescription
--csx (Versión 2.x y posteriores). Genera las mismas plantillas de script de C# (.csx) que se usan en la versión 1.x y en el portal.(Version 2.x and later versions.) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--language , -l--language , -l Lenguaje de programación de la plantilla, como C#, F# o JavaScript.The template programming language, such as C#, F#, or JavaScript. Esta opción es obligatoria en la versión 1.x.This option is required in version 1.x. En la versión 2.x y las posteriores, no utilice esta opción o elija un lenguaje que coincida con el entorno de ejecución del trabajo.In version 2.x and later versions, do not use this option or choose a language that matches the worker runtime.
--name , -n--name , -n Nombre de función.The function name.
--template , -t--template , -t Use el comando func templates list para ver la lista completa de plantillas disponibles para cada lenguaje compatible.Use the func templates list command to see the complete list of available templates for each supported language.

Por ejemplo, para crear un desencadenador HTTP de JavaScript en un único comando, ejecute:For example, to create a JavaScript HTTP trigger in a single command, run:

func new --template "Http Trigger" --name MyHttpTrigger

Para crear una función desencadenada por la cola en un único comando, ejecute:To create a queue-triggered function in a single command, run:

func new --template "Queue Trigger" --name QueueTriggerJS

Ejecución local de funcionesRun functions locally

Para ejecutar un proyecto de Functions, ejecute el host de Functions.To run a Functions project, run the Functions host. El host habilita desencadenadores para todas las funciones del proyecto.The host enables triggers for all functions in the project. El comando de inicio varía en función del lenguaje del proyecto.The start command varies, depending on your project language.

func start --build

Nota

La versión 1.x del runtime de Functions requiere el comando host, como en el ejemplo siguiente:Version 1.x of the Functions runtime requires the host command, as in the following example:

func host start

func start admite las siguientes opciones:func start supports the following options:

OpciónOption DescripciónDescription
--no-build No compile del proyecto actual antes de su ejecución.Do no build current project before running. Solo para proyectos de dotnet.For dotnet projects only. El valor predeterminado se establece en false.Default is set to false. No se admite para la versión 1.x.Not supported for version 1.x.
--cors-credentials Permite solicitudes autenticadas de varios orígenes (es decir, cookies y el encabezado de autenticación). No se admite para la versión 1.x.Allow cross-origin authenticated requests (i.e. cookies and the Authentication header) Not supported for version 1.x.
--cors Lista separada por comas de orígenes CORS, sin espacios en blanco.A comma-separated list of CORS origins, with no spaces.
--language-worker Argumentos para configurar el trabajo del lenguaje.Arguments to configure the language worker. Por ejemplo, puede habilitar la depuración para el trabajo de lenguaje proporcionando el puerto de depuración y otros argumentos necesarios.For example, you may enable debugging for language worker by providing debug port and other required arguments. No se admite para la versión 1.x.Not supported for version 1.x.
--cert La ruta de acceso a un archivo .pfx que contiene una clave privada.The path to a .pfx file that contains a private key. Solo se usa con --useHttps.Only used with --useHttps. No se admite para la versión 1.x.Not supported for version 1.x.
--password La contraseña o un archivo que contenga la contraseña de un archivo. pfx.Either the password or a file that contains the password for a .pfx file. Solo se usa con --cert.Only used with --cert. No se admite para la versión 1.x.Not supported for version 1.x.
--port , -p--port , -p Puerto local en el que se escucha.The local port to listen on. Valor predeterminado: 7071.Default value: 7071.
--pause-on-error Se pone en pausa en espera de entrada adicional antes de salir del proceso.Pause for additional input before exiting the process. Se utiliza solo cuando se inicia Core Tools desde un entorno de desarrollo integrado (IDE).Used only when launching Core Tools from an integrated development environment (IDE).
--script-root , --prefix--script-root , --prefix Se usa para especificar la ruta de acceso a la raíz de la aplicación de función que se va a ejecutar o implementar.Used to specify the path to the root of the function app that is to be run or deployed. Esto se usa para los proyectos compilados que generan archivos de proyecto en una subcarpeta.This is used for compiled projects that generate project files into a subfolder. Por ejemplo, cuando se compila un proyecto de biblioteca de clases de C#, los archivos host.json, local.settings.json y function.json se generan en una subcarpeta raíz con una ruta de acceso similar a MyProject/bin/Debug/netstandard2.0.For example, when you build a C# class library project, the host.json, local.settings.json, and function.json files are generated in a root subfolder with a path like MyProject/bin/Debug/netstandard2.0. En este caso, establezca el prefijo como --script-root MyProject/bin/Debug/netstandard2.0.In this case, set the prefix as --script-root MyProject/bin/Debug/netstandard2.0. Esta es la raíz de la aplicación de función cuando se ejecuta en Azure.This is the root of the function app when running in Azure.
--timeout , -t--timeout , -t Tiempo de espera en segundos para que se inicie el host de Functions.The timeout for the Functions host to start, in seconds. Valor predeterminado: 20 segundos.Default: 20 seconds.
--useHttps Enlace con https://localhost:{port} en lugar de con http://localhost:{port}.Bind to https://localhost:{port} rather than to http://localhost:{port}. De forma predeterminada, esta opción crea un certificado de confianza en el equipo.By default, this option creates a trusted certificate on your computer.

Cuando se inicia el host de Functions, devuelve la dirección URL de las funciones desencadenadas por HTTP:When the Functions host starts, it outputs the URL of HTTP-triggered functions:

Found the following functions:
Host.Functions.MyHttpTrigger

Job host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

Importante

Cuando se ejecuta localmente, no se aplica la autorización para puntos de conexión HTTP.When running locally, authorization isn't enforced for HTTP endpoints. Esto significa que todas las solicitudes HTTP locales se tratan como authLevel = "anonymous".This means that all local HTTP requests are handled as authLevel = "anonymous". Para obtener más información, consulte el artículo sobre enlaces HTTP.For more information, see the HTTP binding article.

Paso de datos de prueba a una funciónPassing test data to a function

Para probar sus funciones localmente, inicie el host de Functions y llame a puntos de conexión del servidor local mediante solicitudes HTTP.To test your functions locally, you start the Functions host and call endpoints on the local server using HTTP requests. El punto de conexión al que llama depende del tipo de función.The endpoint you call depends on the type of function.

Nota

En los ejemplos de este tema se usa la herramienta cURL para enviar solicitudes HTTP desde el terminal o un símbolo del sistema.Examples in this topic use the cURL tool to send HTTP requests from the terminal or a command prompt. Puede usar una herramienta de su elección para enviar solicitudes HTTP al servidor local.You can use a tool of your choice to send HTTP requests to the local server. La herramienta cURL está disponible de forma predeterminada en los sistemas basados en Linux y en la compilación 17063 de Windows 10, y en las posteriores.The cURL tool is available by default on Linux-based systems and Windows 10 build 17063 and later. En las versiones anteriores de Windows, primero debe descargar e instalar la herramienta cURL.On older Windows, you must first download and install the cURL tool.

Para obtener información más general sobre cómo probar funciones, consulte Estrategias para probar el código en Azure Functions.For more general information on testing functions, see Strategies for testing your code in Azure Functions.

Funciones desencadenadas por HTTP y webhookHTTP and webhook triggered functions

Llama al siguiente punto de conexión para ejecutar de forma local funciones desencadenadas por HTTP y webhook:You call the following endpoint to locally run HTTP and webhook triggered functions:

http://localhost:{port}/api/{function_name}

Asegúrese de usar el mismo nombre del servidor y puerto en el que escucha el host de Functions.Make sure to use the same server name and port that the Functions host is listening on. Puede ver esto en la salida generada al iniciar el host de Functions.You see this in the output generated when starting the Function host. Puede llamar a esta dirección URL mediante cualquier método HTTP admitido por el desencadenador.You can call this URL using any HTTP method supported by the trigger.

El siguiente comando cURL desencadena la función de inicio rápido MyHttpTrigger desde una solicitud GET con el parámetro name transferido en la cadena de consulta.The following cURL command triggers the MyHttpTrigger quickstart function from a GET request with the name parameter passed in the query string.

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

En el siguiente ejemplo está la misma función a la que se llama desde una solicitud POST que transfiere name en el cuerpo de la solicitud:The following example is the same function called from a POST request passing name in the request body:

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'

Puede realizar solicitudes GET desde un explorador que transfiere datos en la cadena de consulta.You can make GET requests from a browser passing data in the query string. Para todos los demás métodos HTTP, debe usar cURL, Fiddler, Postman o una herramienta de pruebas HTTP similar.For all other HTTP methods, you must use cURL, Fiddler, Postman, or a similar HTTP testing tool.

Funciones no desencadenadas por HTTPNon-HTTP triggered functions

En todos los tipos de funciones distintos de los desencadenadores y webhooks HTTP, y de los desencadenadores de Event Grid, puede probar sus funciones localmente llamando a un punto de conexión de administración.For all kinds of functions other than HTTP triggers and webhooks and Event Grid triggers, you can test your functions locally by calling an administration endpoint. Al llamar a este punto de conexión con una solicitud HTTP POST en el servidor local se desencadena esta función.Calling this endpoint with an HTTP POST request on the local server triggers the function.

Para probar las funciones de Event Grid desencadenadas localmente, consulte Pruebas locales con la aplicación web de visor.To test Event Grid triggered functions locally, see Local testing with viewer web app.

Opcionalmente, puede transferir los datos de prueba a la ejecución en el cuerpo de la solicitud POST.You can optionally pass test data to the execution in the body of the POST request. Esta funcionalidad es similar a la pestaña Prueba de Azure Portal.This functionality is similar to the Test tab in the Azure portal.

Se llama al siguiente punto de conexión de administrador para desencadenar funciones ajenas a HTTP:You call the following administrator endpoint to trigger non-HTTP functions:

http://localhost:{port}/admin/functions/{function_name}

Para transferir datos de prueba al punto de conexión de administrador de una función, debe proporcionar los datos en el cuerpo de un mensaje de solicitud POST.To pass test data to the administrator endpoint of a function, you must supply the data in the body of a POST request message. Es necesario que el cuerpo del mensaje tenga el siguiente formato JSON:The message body is required to have the following JSON format:

{
    "input": "<trigger_input>"
}

El valor <trigger_input> contiene datos en un formato esperado por la función.The <trigger_input> value contains data in a format expected by the function. El siguiente ejemplo de cURL es una solicitud POST dirigida a una función QueueTriggerJS.The following cURL example is a POST to a QueueTriggerJS function. En este caso, la entrada es una cadena que equivale al mensaje que se espera encontrar en la cola.In this case, the input is a string that is equivalent to the message expected to be found in the queue.

curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/QueueTrigger

Uso del comando func run (solo versión 1.x)Using the func run command (version 1.x only)

Importante

El comando func run solo se admite en la versión 1.x de las herramientas.The func run command is only supported in version 1.x of the tools. Para obtener más información, consulte el tema How to target Azure Functions runtime versions (Cómo seleccionar un destino para versiones en tiempo de ejecución de Azure Functions).For more information, see the topic How to target Azure Functions runtime versions.

En la versión 1.x, también puede invocar una función directamente con func run <FunctionName> y proporcionar datos de entrada para la función.In version 1.x, you can also invoke a function directly by using func run <FunctionName> and provide input data for the function. Este comando es similar a la ejecución de una función con la pestaña Prueba de Azure Portal.This command is similar to running a function using the Test tab in the Azure portal.

func run admite las siguientes opciones:func run supports the following options:

OpciónOption DescripciónDescription
--content , -c--content , -c Contenido alineado.Inline content.
--debug , -d--debug , -d Se asocia un depurador al proceso de host antes de ejecutar la función.Attach a debugger to the host process before running the function.
--timeout , -t--timeout , -t Tiempo de espera (en segundos) hasta que el host local de Functions está listo.Time to wait (in seconds) until the local Functions host is ready.
--file , -f--file , -f Nombre del archivo que se usa como contenido.The file name to use as content.
--no-interactive No pide entrada.Does not prompt for input. Resulta útil en escenarios de automatización.Useful for automation scenarios.

Por ejemplo, para llamar a una función desencadenada por HTTP y pasar cuerpo del contenido, ejecute el siguiente comando:For example, to call an HTTP-triggered function and pass content body, run the following command:

func run MyHttpTrigger -c '{\"name\": \"Azure\"}'

Publicación en AzurePublish to Azure

Azure Functions Core Tools admite dos tipos de implementación: la opción de implementar archivos del proyecto de funciones directamente en su aplicación de funciones a través de la implementación de archivos zip y la implementación de un contenedor de Docker personalizado.The Azure Functions Core Tools supports two types of deployment: deploying function project files directly to your function app via Zip Deploy and deploying a custom Docker container. Tiene que tener creada una aplicación de funciones en su suscripción de Azure para implementar su código.You must have already created a function app in your Azure subscription, to which you'll deploy your code. Se deben compilar los proyectos que lo requieran para poder implementar los archivos binarios.Projects that require compilation should be built so that the binaries can be deployed.

Importante

Debe tener la CLI de Azure instalada localmente para poder realizar la publicación en Azure desde Core Tools.You must have the Azure CLI installed locally to be able to publish to Azure from Core Tools.

Una carpeta de proyecto puede contener archivos y directorios específicos del idioma que no deben publicarse.A project folder may contain language-specific files and directories that shouldn't be published. Los elementos excluidos se enumeran en un archivo .funcignore en la carpeta raíz del proyecto.Excluded items are listed in a .funcignore file in the root project folder.

Implementación de los archivos de proyectoDeploy project files

Para publicar su código local en una aplicación de funciones en Azure, use el comando publish:To publish your local code to a function app in Azure, use the publish command:

func azure functionapp publish <FunctionAppName>

Importante

Java utiliza Maven para publicar el proyecto local en Azure.Java uses Maven to publish your local project to Azure. Para publicar proyectos en Azure, ejecute el siguiente comando: mvn azure-functions:deploy.Use the following command to publish to Azure: mvn azure-functions:deploy. Durante la implementación inicial se crean recursos de Azure.Azure resources are created during initial deployment.

Este comando se publica en una aplicación de función existente en Azure.This command publishes to an existing function app in Azure. Obtendrá un error si intenta publicarla en un <FunctionAppName> que no exista en su suscripción.You'll get an error if you try to publish to a <FunctionAppName> that doesn't exist in your subscription. Para obtener información sobre cómo crear una aplicación de función desde el símbolo del sistema o la ventana de Terminal mediante la CLI de Azure, consulte Creación de una instancia de Function App para la ejecución sin servidor.To learn how to create a function app from the command prompt or terminal window using the Azure CLI, see Create a Function App for serverless execution. De manera predeterminada, este comando usa la compilación remota e implementa la aplicación para ejecutarla desde el paquete de implementación.By default, this command uses remote build and deploys your app to run from the deployment package. Para deshabilitar este modo de implementación recomendado, use la opción --nozip.To disable this recommended deployment mode, use the --nozip option.

Importante

Cuando se crea una aplicación de función en Azure Portal, se usa la versión 3.x del entorno de ejecución de Functions de forma predeterminada.When you create a function app in the Azure portal, it uses version 3.x of the Function runtime by default. Para hacer que la aplicación de función utilice la versión 1.x del entorno de ejecución, siga las instrucciones de Ejecución en la versión 1.x.To make the function app use version 1.x of the runtime, follow the instructions in Run on version 1.x. No se puede cambiar la versión del entorno de ejecución de una aplicación de función que tiene funciones existentes.You can't change the runtime version for a function app that has existing functions.

Las siguientes opciones de publicación se aplican a todas las versiones:The following publish options apply for all versions:

OpciónOption DescripciónDescription
--publish-local-settings -i Se publica la configuración de local.settings.json en Azure, se pide que se sobrescriba si la configuración ya existe.Publish settings in local.settings.json to Azure, prompting to overwrite if the setting already exists. Si usa el Emulador de Microsoft Azure Storage, cambie antes la configuración de la aplicación a una conexión de almacenamiento real.If you are using the Microsoft Azure Storage Emulator, first change the app setting to an actual storage connection.
--overwrite-settings -y Suprime el mensaje de sobrescritura de la configuración de la aplicación cuando se utiliza --publish-local-settings -i.Suppress the prompt to overwrite app settings when --publish-local-settings -i is used.

Las siguientes opciones de publicación solo se admiten en la versión 2.x y las posteriores:The following publish options are supported only for version 2.x and later versions:

OpciónOption DescripciónDescription
--publish-settings-only , -o--publish-settings-only , -o Solo se publica la configuración y se omite el contenido.Only publish settings and skip the content. El valor predeterminado es Preguntar.Default is prompt.
--list-ignored-files Muestra una lista de archivos que se omiten durante la publicación, según el archivo .funcignore.Displays a list of files that are ignored during publishing, which is based on the .funcignore file.
--list-included-files Muestra una lista de archivos que se publican, según el archivo .funcignore.Displays a list of files that are published, which is based on the .funcignore file.
--nozip Desactiva el modo Run-From-Package predeterminado.Turns the default Run-From-Package mode off.
--build-native-deps Omite la generación de la carpeta .wheels al publicar aplicaciones de función de Python.Skips generating .wheels folder when publishing Python function apps.
--build , -b--build , -b Realiza la acción de compilación cuando se implementa en una aplicación de función de Linux.Performs build action when deploying to a Linux function app. Acepta remote y local.Accepts: remote and local.
--additional-packages Lista de paquetes para instalar al crear dependencias nativas.List of packages to install when building native dependencies. Por ejemplo: python3-dev libevent-dev.For example: python3-dev libevent-dev.
--force Omite la comprobación previa a la publicación en determinados escenarios.Ignore pre-publishing verification in certain scenarios.
--csx Publica un proyecto de script de C# (.csx).Publish a C# script (.csx) project.
--no-build El proyecto no se compila durante la publicación.Project isn't built during publishing. En el caso de Python, pip install no se ejecuta.For Python, pip install isn't performed.
--dotnet-cli-params Al publicar funciones de C# compiladas (.csproj), Core Tools llama a "dotnet build --output bin/publish".When publishing compiled C# (.csproj) functions, the core tools calls 'dotnet build --output bin/publish'. Todos los parámetros pasados se anexarán a la línea de comandos.Any parameters passed to this will be appended to the command line.

Ejecución del contenedor personalizadoDeploy custom container

Azure Functions le permite implementar el proyecto de funciones en un contenedor de Docker personalizado.Azure Functions lets you deploy your function project in a custom Docker container. Para más información, consulte Creación de una función en Linux con una imagen personalizada.For more information, see Create a function on Linux using a custom image. Los contenedores personalizados deben tener un archivo Dockerfile.Custom containers must have a Dockerfile. Para crear una aplicación con un archivo Dockerfile, use la opción--dockerfile en func init.To create an app with a Dockerfile, use the --dockerfile option on func init.

func deploy

Están disponibles las siguientes opciones de implementación de contenedor personalizado:The following custom container deployment options are available:

OpciónOption DescripciónDescription
--registry Nombre de un registro de Docker en el que el usuario actual ha iniciado sesión.The name of a Docker Registry the current user signed-in to.
--platform Plataforma de hospedaje de la aplicación de función.Hosting platform for the function app. Las opciones válidas son kubernetesValid options are kubernetes
--name Nombre de la aplicación de función.Function app name.
--max Opcionalmente, establece el número máximo de instancias de la aplicación de función que se va a implementar.Optionally, sets the maximum number of function app instances to deploy to.
--min Opcionalmente, establece el número mínimo de instancias de la aplicación de función que se va a implementar.Optionally, sets the minimum number of function app instances to deploy to.
--config Establece un archivo de configuración de implementación opcional.Sets an optional deployment configuration file.

Supervisión de funcionesMonitoring functions

La forma recomendada de supervisar la ejecución de sus funciones, es usar la integración con Azure Application Insights.The recommended way to monitor the execution of your functions is by integrating with Azure Application Insights. También puede transmitir los registros de ejecución al equipo local.You can also stream execution logs to your local computer. Para más información, consulte Supervisión de Azure Functions.To learn more, see Monitor Azure Functions.

Integración de Application InsightsApplication Insights integration

Al crear la aplicación de funciones en Azure, la integración de Application Insights debe estar habilitada.Application Insights integration should be enabled when you create your function app in Azure. Si, por alguna razón, la aplicación de funciones no está conectada a una instancia de Application Insights, es fácil llevar a cabo esta integración en Azure Portal.If for some reason your function app isn't connected to an Application Insights instance, it's easy to do this integration in the Azure portal. Para más información, consulte Habilitación de la integración de Application Insights.To learn more, see Enable Application Insights integration.

Habilitación de los registros de streamingEnable streaming logs

Puede ver una secuencia de archivos de registro que generan las funciones en una sesión de línea de comandos en el equipo local.You can view a stream of log files being generated by your functions in a command-line session on your local computer.

Streaming integrado de registrosBuilt-in log streaming

Use la opción logstream para empezar a recibir registros de streaming de una aplicación de funciones específica que se ejecuta en Azure, como en el ejemplo siguiente:Use the logstream option to start receiving streaming logs of a specific function app running in Azure, as in the following example:

func azure functionapp logstream <FunctionAppName>

Nota

El streaming de registro integrado aún no se ha habilitado en Core Tools para las aplicaciones de funciones que se ejecutan en Linux en un plan de consumo.Built-in log streaming isn't yet enabled in Core Tools for function apps running on Linux in a Consumption plan. En estos planes de hospedaje, es preciso usar Live Metrics Stream para ver los registros casi en tiempo real.For these hosting plans, you instead need to use Live Metrics Stream to view the logs in near-real time.

Secuencia de métricas en directoLive Metrics Stream

La información de Live Metrics Stream de una aplicación de funciones se puede ver en una ventana nueva del explorador. Para ello, hay que incluir la opción --browser, como se hace en el ejemplo siguiente:You can view the Live Metrics Stream for your function app in a new browser window by including the --browser option, as in the following example:

func azure functionapp logstream <FunctionAppName> --browser

Este tipo de registros de streaming requiere que se habilite la integración de Application Insights para la aplicación de funciones.This type of streaming logs requires that Application Insights integration be enabled for your function app.

Pasos siguientesNext steps

Aprenda a desarrollar, probar y publicar funciones de Azure Functions mediante el módulo de aprendizaje de Microsoft de Azure Functions Core Tools. Azure Functions Core Tools es de código abierto y se hospeda en GitHub.Learn how to develop, test, and publish Azure Functions by using Azure Functions Core Tools Microsoft learn module Azure Functions Core Tools is open source and hosted on GitHub.
Para notificar un error o realizar una solicitud de característica, abra un problema de GitHub.To file a bug or feature request, open a GitHub issue.