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

Importante

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

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

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

    npm install -g azure-functions-core-tools
    

    NPM puede tardar unos minutos en descargar e instalar el paquete de Core Tools.It may take a few minutes for npm to download and install the Core Tools package.

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

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 Homebrew, si aún no está instalado.Install Homebrew, if it's not already installed.

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

    brew tap azure/functions
    brew install azure-functions-core-tools
    
  3. Si no planea usar los conjuntos de extensión, instale el SDK de .NET Core 2.x para macOS.If you do not plan to use extension bundles, install .NET Core 2.x SDK for macOS.

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. 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
    
  2. 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.10Ubuntu 18.10 cosmic
    Ubuntu 18.04Ubuntu 18.04 bionic
    Ubuntu 17.04Ubuntu 17.04 zesty
    Ubuntu 16.04/Linux Mint 18Ubuntu 16.04/Linux Mint 18 xenial
  3. Instale el paquete de Core Tools:Install the Core Tools package:

    sudo apt-get install azure-functions-core-tools
    
  4. Si no planea usar los conjuntos de extensión, instale el SDK de .NET Core 2.x para Linux.If you do not plan to use extension bundles, install .NET Core 2.x SDK for Linux.

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), java y python.Supported values are dotnet, node (JavaScript), java, and python. 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

A excepción de los desencadenadores de HTTP y del temporizador, los enlaces de funciones en la versión 2.x de runtime se implementan como paquetes de extensión.With the exception of HTTP and timer triggers, Functions bindings in runtime version 2.x are implemented as extension packages. En la versión 2.x del runtime de Azure Functions, debe registrar explícitamente las extensiones de los tipos de enlace que use en sus funciones.In version 2.x of the Azure Functions runtime, you have to explicitly register the extensions for the binding types used in your functions. Las excepciones son los enlaces de HTTP y los desencadenadores de temporizador, que no requieren extensiones.The exceptions to this are HTTP bindings and timer triggers, which do not require extensions.

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.

Conjuntos de extensionesExtension 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 functions.json file.

Registrar extensiones individualesRegister individual extensions

Si necesita instalar extensiones que no están en un conjunto, puede registrar manualmente paquetes de extensiones individuales para enlaces específicos.If you need to install extensions that aren't in a bundle, you can manually register individual extension packages for specific bindings.

Nota

Para registrar manualmente las extensiones utilizando func extensions install, debe tener instalado el SDK de .NET Core 2.x.To manually register extensions by using func extensions install, you must have the .NET Core 2.x SDK installed.

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.

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>"
  },
  "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.
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.
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.
La versión 2.x del tiempo de ejecución de Functions requiere la configuración [FUNCTIONS_WORKER_RUNTIME] que Core Tools genera para su proyecto.Version 2.x of the Functions runtime requires the [FUNCTIONS_WORKER_RUNTIME] setting, which is generated for your project by Core Tools.
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.
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 (__). Estos caracteres están reservados para el entorno de ejecución.These characters are reserved by the runtime.
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 Corresponde a una 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.

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.

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 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
--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. Solo versión 2.x.Version 2.x 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-credentials Permitir solicitudes autenticadas de varios orígenes (es decir, cookies y el encabezado de autenticación) Solo versión 2.x.Allow cross-origin authenticated requests (i.e. cookies and the Authentication header) 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.
--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 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 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\"}'

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.

Implementación (archivos del proyecto)Deployment (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>

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 implementa la aplicación para que se ejecute desde el paquete de implementación.By default, this command 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 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.

Las siguientes opciones de publicación se aplican a ambas versiones, 1.x y 2.x:The following publish options 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, 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: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.
--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.
--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 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 (contenedor personalizado)Deployment (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. De forma predeterminada, cuando crea una aplicación de función en Azure Portal, esta integración se realiza automáticamente.When you create a function app in the Azure portal, this integration is done for you by default. Sin embargo, al crear la aplicación de función mediante la CLI de Azure, no se lleva a cabo su integración en Azure.However, when you create your function app by using the Azure CLI, the integration in your function app in Azure isn't done.

Functions simplifica el proceso de agregar la integración de Application Insights a una aplicación de función desde Azure Portal.Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. En el portal, seleccione Todos los servicios> Aplicaciones de función, seleccione su aplicación de función y, luego, elija el banner Application Insights de la parte superior de la ventanaIn the portal, select All services > Function Apps, select your function app, and then select the Application Insights banner at the top of the window

    Habilitación de Application Insights desde el portal

  2. Cree un recurso de Application Insights mediante la configuración especificada en la tabla que hay debajo de la imagen.Create an Application Insights resource by using the settings specified in the table below the image.

    Creación de recursos en Application Insights

    ConfiguraciónSetting Valor sugeridoSuggested value DescripciónDescription
    NombreName Nombre de aplicación únicoUnique app name Lo más fácil es usar el mismo nombre que usa para la aplicación de función, que debe ser único en su suscripción.It's easiest to use the same name as your function app, which must be unique in your subscription.
    UbicaciónLocation Europa occidentalWest Europe Si es posible, use la misma región que la aplicación de función o una que esté cerca de esa región.If possible, use the same region as your function app, or one that's close to that region.
  3. Seleccione Aceptar.Select OK. El recurso de Application Insights se crea en el mismo grupo de recursos y suscripción que su aplicación de función.The Application Insights resource is created in the same resource group and subscription as your function app. Después de crear el recurso, cierre la ventana Application Insights.After the resource is created, close the Application Insights window.

  4. De vuelta en la aplicación de función, seleccione Configuración de la aplicacióny desplácese hacia abajo hasta Configuración de la aplicación.Back in your function app, select Application settings, and then scroll down to Application settings. Si ve una configuración denominada APPINSIGHTS_INSTRUMENTATIONKEY, significa que la integración de Application Insights está habilitada para la aplicación de función que se ejecuta en Azure.If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

Para más información, consulte Supervisión de Azure Functions.To learn more, see Monitor Azure Functions.

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.