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.

Versiones de Core ToolsCore Tools versions

Hay dos versiones de Azure Functions Core Tools.There are two 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:

A menos que se indique lo contrario, los ejemplos de este artículo son para la versión 2.x.Unless otherwise noted, the examples in this article are for version 2.x.

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 1.xVersion 1.x

La versión original de las herramientas usa el entorno en tiempo de ejecución versión 1.x de Functions.The original version of the tools uses the Functions 1.x runtime. Esta versión usa .NET Framework (4.7) y solo se admite en equipos Windows.This version uses the .NET Framework (4.7) and is only supported on Windows computers. Antes de instalar las herramientas de la versión 1.x, debe instalar NodeJS, que incluye npm.Before you install the version 1.x tools, you must install NodeJS, which includes npm.

Use el siguiente comando para instalar las herramientas de la versión 1.x:Use the following command to install the version 1.x tools:

npm install -g azure-functions-core-tools@v1

Versión 2.xVersion 2.x

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

WindowsWindows

Los pasos siguientes utilizan npm para instalar Core Tools en Windows.The following steps use npm to install Core Tools on Windows. También puede usar Chocolatey.You can also use Chocolatey. Para más información, consulte el archivo Léame de Core Tools.For more information, see the Core Tools readme.

  1. Instale .NET Core 2.1 para Windows.Install .NET Core 2.1 for Windows.

  2. Instale Node.js, que incluye npm.Install Node.js, which includes npm. Para la versión 2.x de las herramientas, solo se admite Node.js 8.5 y versiones posteriores.For version 2.x of the tools, only Node.js 8.5 and later versions are supported.

  3. Instale el paquete de Core Tools:Install the Core Tools package:

    npm install -g azure-functions-core-tools
    

MacOS con HomebrewMacOS with Homebrew

Los pasos siguientes utilizan Homebrew para instalar Core Tools en macOS.The following steps use Homebrew to install the Core Tools on macOS.

  1. Instale .NET Core 2.1 para macOS.Install .NET Core 2.1 for macOS.

  2. Instale Homebrew, si aún no está instalado.Install Homebrew, if it's not already installed.

  3. Instale el paquete de Core Tools:Install the Core Tools package:

    brew tap azure/functions
    brew install azure-functions-core-tools 
    

Linux (Ubuntu/Debian) con APTLinux (Ubuntu/Debian) with APT

Los siguientes pasos usan APT para instalar Core Tools en la distribución de Ubuntu/Debian Linux.The following steps use APT to install Core Tools on your Ubuntu/Debian Linux distribution. Para otras distribuciones de Linux, consulte el archivo Léame de Core Tools.For other Linux distributions, see the Core Tools readme.

  1. Instale .NET Core 2.1 para Linux.Install .NET Core 2.1 for Linux.

  2. Registre la clave de producto de Microsoft como de confianza:Register the Microsoft product key as trusted:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    
  3. Compruebe que el servidor de Ubuntu ejecuta una de las versiones adecuadas de la siguiente tabla.Verify your Ubuntu server is running one of the appropriate versions from the table below. Para agregar el origen apt, ejecute:To add the apt source, run:

    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    sudo apt-get update
    
    Distribución de LinuxLinux distribution VersiónVersion
    Ubuntu 18.04Ubuntu 18.04 bionic
    Ubuntu 17.10Ubuntu 17.10 artful
    Ubuntu 17.04Ubuntu 17.04 zesty
    Ubuntu 16.04/Linux Mint 18Ubuntu 16.04/Linux Mint 18 xenial
  4. Instale el paquete de Core Tools:Install the Core Tools package:

    sudo apt-get install azure-functions-core-tools
    

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 2.x deberá seleccionar un lenguaje predeterminado para el proyecto cuando se inicializa, y todas las funciones de agregan con plantillas de lenguaje predeterminado.Version 2.x requires you to select a default language for your project when it is initialized, and 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

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 2.x, cuando ejecute el comando, debe elegir un tiempo de ejecución para el proyecto.In version 2.x, when you run the command you must choose a runtime for your project. Si va a desarrollar funciones de JavaScript, elija node:If you plan to develop JavaScript functions, choose node:

Select a worker runtime:
dotnet
node

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. 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 2.x, a menos que se indique lo contrario:func init supports the following options, which are version 2.x-only, unless otherwise noted:

OpciónOption DESCRIPCIÓNDescription
--csx Inicializa un proyecto de script de C# (.csx).Initializes a C# script (.csx) project. Debe especificar --csx en los siguientes comandos.You must specify --csx in subsequent commands.
--docker Crea un archivo Dockerfile para un contenedor con una imagen base en función del --worker-runtime elegido.Create 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.
--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.
--no-source-control -n Impide la creación de forma predeterminada de un repositorio de Git en la versión 1.x.Prevents the default creation of a Git repository in version 1.x. En la versión 2.x, el repositorio de git no se crea de forma predeterminada.In version 2.x, the git repository isn't created by default.
--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 dotnet, node (JavaScript) y java.Supported values are dotnet, node (JavaScript), and java. Si no se establece, deberá elegir el entorno de ejecución durante la inicialización.When not set, you are prompted to choose your runtime during initialization.

Importante

De manera predeterminada, la versión 2.x de Core Tools crea proyectos de aplicación de función para el runtime de .NET como proyectos de clase de C# (.csproj).By default, version 2.x of the Core Tools creates 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

En la versión 2.x del entorno de ejecución de Azure Functions, debe registrar explícitamente las extensiones de enlace (tipos de enlace) que utilice en la aplicación de función.In version 2.x of the Azure Functions runtime, you have to explicitly register the binding extensions (binding types) that you use in your function app.

Al desarrollar funciones a nivel local, puede instalar las extensiones necesarias con el uso de Azure Functions Core Tools desde el terminal o desde un símbolo del sistema.When you develop functions locally, you can install the extensions you need by using the Azure Functions Core Tools from the Terminal or from a command prompt.

Después de haber actualizado el archivo function.json para que incluya todos los enlaces que necesita la función, ejecute el siguiente comando en la carpeta del proyecto.After you have updated your function.json file to include all the bindings that your function needs, run the following command in the project folder.

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. 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 desea instalar una versión concreta de un paquete o va a instalar paquetes antes de editar el archivo function.json, use el comando func extensions install con el nombre del paquete, tal como se muestra en el ejemplo siguiente:If you want to install a particular version of a package or you want to install packages before editing the function.json file, use the func extensions install command with the name of the package, as shown in the following example:

func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version <target_version>

Reemplace <target_version> con una versión específica del paquete, como 3.0.0-beta5.Replace <target_version> with a specific version of the package, such as 3.0.0-beta5. Las versiones válidas se enumeran en las páginas individuales del paquete en NuGet.org.Valid versions are listed on the individual package pages at NuGet.org.

Para más información, consulte Conceptos básicos sobre los enlaces y desencadenadores de Azure Functions.For more information, see Azure Functions triggers and bindings concepts.

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 de Azure Functions Core Tools.The file local.settings.json stores app settings, connection strings, and settings for Azure Functions Core Tools. Las herramientas de Functions solo usan las opciones de configuración de dicho archivo cuando las herramientas se ejecutan localmente.Settings in the local.settings.json file are only used by Functions tools when running locally. 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-settings al 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. El archivo tiene la siguiente estructura:The file has the following structure:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}
ConfiguraciónSetting DESCRIPCIÓNDescription
IsEncryptedIsEncrypted Cuando se establece en true, todos los valores se cifran con una clave de máquina local.When set to true, all values are encrypted using 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.
ValoresValues Colección de opciones de configuración de la aplicación y las cadenas de conexión que se usan en la ejecución local.Collection of application settings and connection strings used when running locally. Estos valores se corresponden con la configuración de la aplicación de función en Azure, como AzureWebJobsStorage y AzureWebJobsDashboard.These values correspond to app settings in your function app in Azure, such as AzureWebJobsStorage and AzureWebJobsDashboard. Muchos desencadenadores y enlaces tienen una propiedad que hace referencia a una configuración de la aplicación de cadena de conexión como, por ejemplo, Conexión para el desencadenador de Blob Storage.Many triggers and bindings have a property that refers to a connection string app setting, such as Connection for the Blob storage trigger. Para estas propiedades, se necesita una configuración de la aplicación definida en la matriz Valores.For such properties, you need an application setting defined in the Values array.
AzureWebJobsStorage es una configuración de aplicación necesaria para los desencadenadores que no sean HTTP.AzureWebJobsStorage is a required app setting for triggers other than HTTP. Cuando tenga el Emulador de almacenamiento de Azure Storage instalado localmente, puede establecer AzureWebJobsStorage en UseDevelopmentStorage=true y Core Tools utilizará el emulador.When you have the Azure storage emulator installed locally, you can set AzureWebJobsStorage to UseDevelopmentStorage=true and Core Tools uses the emulator. Esto es útil durante el desarrollo, pero debe probar con una conexión de almacenamiento real antes de la implementación.This is useful during development, but you should test with an actual storage connection before deployment.
HostHost La configuración que se muestra esta sección permite personalizar el proceso de host de Functions cuando se ejecuta localmente.Settings in this section customize the Functions host process when running locally.
LocalHttpPortLocalHttpPort 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 este valor.The --port command-line option takes precedence over this value.
CORSCORS 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.
ConnectionStringsConnectionStrings No utilice esta colección para las cadenas de conexión que utilizan los enlaces de función.Do not use this collection for the connection strings used by your function bindings. Esta colección solo la usan marcos que habitualmente obtienen las cadenas de conexión desde la sección ConnectionStrings de un archivo de configuración, como Entity Framework.This collection is only used by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, such as 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 are not published to Azure with other app settings. Debe agregar explícitamente estos valores a la colección Cadenas de conexión 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 está creando un objeto SqlConnection en el código de la función, debe almacenar el valor de la cadena de conexión en Configuración de la aplicación con las otras conexiones.If you are creating a SqlConnection in your function code, you should store the connection string value in Application settings with your other connections.

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 ' 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 ' 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 almacenamiento para tareas de desarrollo, recomendamos probar con una conexión de almacenamiento real.Even when using the 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:

  • Desde Azure Portal.From the Azure portal. Navegue a su cuenta de almacenamiento, seleccione Claves de acceso en Configuración y, a continuación, copie uno de los valores de Cadena de conexión.Navigate to 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 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, seleccione la cuenta de almacenamiento y copie la cadena de conexión principal o secundaria.In the Explorer, expand your subscription, 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 para descargar la cadena de conexión de Azure con uno de los siguientes comandos:Use Core Tools 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 are not already signed in to Azure, you are prompted to do so.

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 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 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) 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) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--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, no utilice esta opción o elija un lenguaje que coincida con el entorno de ejecución del trabajo.In version 2.x, do not use this option or choose a language that matches the worker runtime.
--name -n Nombre de la función.The function name.
--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:

func host start

El comando host solo es necesario en la versión 1.x.The host command is only required in version 1.x.

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

OpciónOption DESCRIPCIÓNDescription
--build Compilación del proyecto actual antes de su ejecución.Build current project before running. Solo versión 2.x y proyectos de C#.Version 2.x and C# projects only.
--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. Solo versión 2.x.Version 2.x only.
--cors Lista separada por comas de orígenes CORS, sin espacios en blanco.A comma-separated list of CORS origins, with no spaces.
--debug Inicia el host con el puerto de depuración abierto, de modo que pueda adjuntar al proceso func.exe de Visual Studio Code o Visual Studio 2017.Starts the host with the debug port open so that you can attach to the func.exe process from Visual Studio Code or Visual Studio 2017. Los valores válidos son VSCode y VS.Valid values are VSCode and VS.
--language-worker Argumentos para configurar el trabajo del lenguaje.Arguments to configure the language worker. Solo versión 2.x.Version 2.x only.
--nodeDebugPort -n Puerto del depurador de nodo que se va a usar.The port for the node debugger to use. Valor predeterminado: un valor de launch.json o 5858.Default: A value from launch.json or 5858. Solo versión 1.x.Version 1.x only.
--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. Solo versión 2.x.Version 2.x only.
--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 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 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.

En el caso de un proyecto de la biblioteca de clases de C# (.csproj), debe incluir la opción --build para generar el archivo .dll de biblioteca.For a C# class library project (.csproj), you must include the --build option to generate the library .dll.

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 autenticación para puntos de conexión HTTP.When running locally, authentication 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.The cURL tool is available by default on Linux-based systems. En Windows, primero debe descargar e instalar la herramienta cURL.On 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 el caso de todos los tipos de funciones distintas de los desencadenadores HTTP y HTTP webhooks, 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, 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. 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/QueueTriggerJS

Uso del comando func run en la versión 1.xUsing the func run command in version 1.x

Importante

El comando func run no se admite en la versión 2.x de las herramientas.The func run command is not supported in version 2.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.

También puede invocar una función directamente con func run <FunctionName> y proporcionar datos de entrada para la función.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 Contenido alineado.Inline content.
--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 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 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\"}'

Consulta de los archivos de registro en el entorno localViewing log files locally

Cuando el host de funciones se ejecuta localmente, escribe registros en la ruta de acceso siguiente:When the Functions host runs locally, it writes logs to the following path:

<DefaultTempDirectory>\LogFiles\Application\Functions

En Windows, <DefaultTempDirectory> es el primer valor que se encuentra de las variables de entorno TMP, TEMP, USERPROFILE o del directorio de Windows.On Windows, <DefaultTempDirectory> is the first found value of the TMP, TEMP, USERPROFILE environment variables, or the Windows directory. En Mac OS o Linux, <DefaultTempDirectory> es la variable de entorno TMPDIR.On MacOS or Linux, <DefaultTempDirectory> is the TMPDIR environment variable.

Nota

Cuando se inicia el host de funciones, este sobrescribirá la estructura de archivos existentes en el directorio.When the Functions host starts, it overwrites the existing file structure in the directory.

Publicación en AzurePublish to Azure

Core Tools admite dos tipos de implementación: implementar los archivos del proyecto de función directamente en la aplicación de función e implementar un contenedor Linux personalizado, lo que se admite únicamente en la versión 2.x.Core Tools supports two types of deployment, deploying function project files directly to your function app and deploying a custom Linux container, which is supported only in version 2.x. Previamente, debe haber creado una aplicación de función en la suscripción de Azure.You must have already created a function app in your Azure subscription.

En la versión 2.x, debe haber registrado las extensiones en el proyecto antes de la publicación.In version 2.x, you must have registered your extensions in your project before publishing. 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.

Implementación del archivo de proyectoProject file deployment

El método de implementación más común implica el uso de Core Tools para empaquetar el proyecto de aplicación de función e implementar el paquete en la aplicación de función.The most common deployment method involves using Core Tools to package your function app project and deploy the package to your function app. También puede ejecutar las funciones directamente desde el paquete de implementación.You can optionally run your functions directly from the deployment package.

Para publicar un proyecto de Functions en una aplicación de función en Azure, use el comando publish:To publish a Functions project to a function app in Azure, use the publish command:

func azure functionapp publish <FunctionAppName>

Este comando se publica en una aplicación de función existente en Azure.This command publishes to an existing function app in Azure. Se produce un error cuando <FunctionAppName> no existe en la suscripción.An error occurs when the <FunctionAppName> 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.

El comando publish carga el contenido del directorio del proyecto de Functions.The publish command uploads the contents of the Functions project directory. Si elimina archivos localmente, el comando publish no los eliminará de Azure.If you delete files locally, the publish command does not delete them from Azure. Puede eliminar archivos de Azure con la herramienta Kudu de Azure Portal.You can delete files in Azure by using the Kudu tool in the Azure portal.

Importante

Cuando se crea una aplicación de función en Azure Portal, se usa la versión 2.x del entorno de ejecución de Functions de forma predeterminada.When you create a function app in the Azure portal, it uses version 2.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.

Puede usar las siguientes opciones de publicación, que se aplican a las versiones 1.x y 2.x:You can use the following publish options, which apply for both versions, 1.x and 2.x:

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 Storage, cambie la configuración de la aplicación a una conexión de almacenamiento real.If you are using the storage emulator, you 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:The following publish options are only supported in version 2.x:

OpciónOption DESCRIPCIÓNDescription
--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.
--zip Publica un paquete Run-From-Zip.Publish in Run-From-Zip package. Se requiere que la aplicación tenga definido el valor AzureWebJobsStorage.Requires the app to have AzureWebJobsStorage setting defined.
--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 Omite la compilación de funciones de dotnet.Skip building dotnet functions.
--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.

Implementación en un contenedor personalizadoCustom container deployment

Functions permite implementar el proyecto de función en un contenedor Linux personalizado.Functions lets you deploy your function project in a custom Linux 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. La versión 2.x de Core Tools admite la implementación de un contenedor personalizado.Version 2.x of Core Tools supports deploying a custom container. Los contenedores personalizados deben tener un archivo Dockerfile.Custom containers must have a Dockerfile. Utilice la opción --dockerfile en func init.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.

Pasos siguientesNext steps

Azure Functions Core Tools es código abierto que se hospeda en GitHub.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.