Creación y ejecución de funciones de Azure Functions en local mediante Core Tools

Completado

Azure Functions Core Tools permite desarrollar y probar funciones en el equipo local desde la línea de comandos.

Quiere compilar su primera función, una calculadora de interés simple, localmente en su propio equipo y no en el editor de funciones de Azure Portal. No está seguro de si quiere usar un entorno de desarrollo como Visual Studio o Visual Studio Code, los cuales se pueden ampliar para admitir directamente Azure Functions. En última instancia, decide usar Core Tools desde la línea de comandos y un editor de texto básico.

En esta unidad aprenderá a usar Core Tools para crear y ejecutar funciones de forma local. Vamos a obtener más información sobre Core Tools antes de usarlo en el ejercicio de la próxima unidad, que le guiará por estos conceptos mediante Azure Cloud Shell.

¿Qué es Azure Functions Core Tools?

Azure Functions Core Tools es un runtime independiente junto con un conjunto de herramientas de línea de comandos que puede usar para desarrollar, ejecutar e implementar código de función desde el equipo local.

Core Tools admite varias funcionalidades relacionadas con las funciones, entre las que se incluyen:

  • Generar los archivos y las carpetas necesarios para desarrollar funciones localmente.
  • Proporcionar un runtime local para que pueda probar y depurar funciones en el equipo.
  • Publicar las funciones en Azure.

Con Core Tools, puede realizar estas tareas desde la línea de comandos. Use el editor de texto que prefiera para escribir código y modificar la configuración. También necesita la CLI de Azure o Azure PowerShell para iniciar sesión en Azure, crear recursos de Azure e implementar archivos de proyecto.

Core Tools se empaqueta como una única utilidad de línea de comandos denominada func. Si ejecuta func desde la línea de comandos sin ningún otro comando, muestra información de versión y una guía de uso. No es necesario leerlas ahora, pero su aspecto es el siguiente:

A portion of the help text output by func.

Tanto Visual Studio como Visual Studio Code usan Core Tools para proporcionar una experiencia de depuración local integrada.

A continuación se describen algunos conceptos fundamentales sobre las funciones.

Proyectos y aplicaciones de funciones de Functions

Al desarrollar funciones localmente, se trabaja dentro de un proyecto de funciones. El proyecto es una carpeta que contiene el código y los archivos de configuración que definen las funciones. Este proyecto de código se implementa en un recurso de aplicación de funciones en Azure. En una instancia de aplicación de funciones, todas las funciones comparten un conjunto común de valores de configuración y recursos.

Cada aplicación de funciones tiene como destino una pila de lenguaje específica y cada pila tiene sus propios requisitos de proyecto específicos del lenguaje. Afortunadamente, nunca necesita crear manualmente el proyecto de funciones. Puede usar Core Tools para generar funciones y proyectos de Functions desde cero en el lenguaje deseado.

Versiones de Core Tools

Dado que Core Tools incluye el runtime de Azure Functions, la versión principal de Core Tools que use siempre debe coincidir con la versión principal del runtime de Functions en Azure. Actualmente, la versión 4.x es la versión recomendada del runtime de Functions y la única versión que admite todos los lenguajes. Aunque en este tutorial se analiza y utiliza la versión 4.x de Core Tools, no es necesario que instale nada en su equipo. En este tutorial, usará Core Tools en un entorno de Azure Cloud Shell en el explorador. Cloud Shell ya tiene las versiones correctas de Core Tools, la CLI de Azure y Node.js, junto con un editor de código ya instalado.

Desarrollo local frente a desarrollo en Azure Portal

Aunque Azure Portal proporciona un editor integrado para el código de función, solo puede usarlo para pilas de lenguaje específicas. Tampoco puede usar el portal para editar funciones que desarrolle localmente e implemente en Azure. Al empezar a usar cualquier flujo de trabajo de desarrollo local, no puede usar Azure Portal para realizar cambios en el código de función.

Core Tools admite el desarrollo local para todas las pilas de lenguaje compatibles con Azure Functions.

Creación funciones localmente

A continuación se explica cómo crear funciones con Core Tools y ejecutarlas localmente. Obtenga información sobre cómo publicar en Azure más adelante en este tutorial.

Creación de un proyecto de Functions con func init

Para crear un proyecto de Functions, ejecute func init en la línea de comandos.

Output from func init creating a JavaScript function project.

func init le pregunta qué runtime de lenguaje va a usar para la aplicación. Adapta el contenido de la carpeta del proyecto de forma adecuada.

Al crear un nuevo proyecto de Functions, los archivos incluidos en la carpeta del proyecto dependen del runtime de lenguaje que se seleccione. Independientemente del runtime seleccionado, los dos archivos de proyecto más importantes siempre están presentes:

  • host.json almacena valores de configuración del runtime, como opciones de registro, para la aplicación de funciones. La configuración almacenada en este archivo se usa cuando se ejecutan funciones localmente y en Azure.
  • local.settings.json almacena valores de configuración que solo se aplican a la aplicación de funciones cuando se ejecuta localmente con Core Tools. Este archivo contiene dos tipos de configuración:
    • Configuración del runtime local: se usa para configurar el propio entorno de ejecución de funciones locales.
    • Configuración de la aplicación personalizada: puede agregarla y configurarla en función de las necesidades de la aplicación. Todas las funciones de la aplicación pueden acceder a ella y usarla.

Los proyectos de Functions que genera func init no tienen ninguna función incluida. En la siguiente sección, descubrirá cómo se añade.

Creación de una aplicación de funciones con func new

Cada función individual de un proyecto necesita código y configuración para definir su comportamiento. Al ejecutar func new en una carpeta de proyecto de funciones, se crea una nueva función y todos los archivos que necesita para empezar a desarrollar.

Output from func new creating a JavaScript function.

Después de preguntarle qué tipo de desencadenador de función quiere usar y qué nombre quiere darle a la función, func new genera una implementación de inicio completa lista para publicar en el lenguaje elegido del proyecto de Functions. El código de inicio muestra cómo usar el tipo de desencadenador seleccionado y está ahí para ayudarle a empezar a trabajar rápidamente. Reemplace el cuerpo de la función por su propia implementación y ya está listo para compilar, ejecutar, probar y publicar.

En la siguiente sección de este tutorial usará func new para crear una función desencadenada por HTTP y modificar la implementación de inicio a fin de realizar un cálculo de interés simple.

Ejecución local de funciones

Las funciones no son programas que se pueden ejecutar por sí solos. Deben hospedarse. El host de Azure Functions es lo que acciona todo fuera del código de la función: carga la configuración, escucha a los desencadenadores y las solicitudes HTTP, inicia el proceso de trabajo del lenguaje en el que se han escrito las funciones, escribe la salida del registro, etc. En Azure, las aplicaciones de funciones ejecutan automáticamente el host cuando se inician.

Puede usar Core Tools para ejecutar su propia instancia del host de Azure Functions y probar las funciones en local antes de publicarlas. Al ejecutar las funciones antes de publicarlas, puede asegurarse de que la configuración y el código se cargan correctamente y probar las funciones mediante llamadas HTTP reales sin necesidad de recursos de Azure.

Para iniciar el host de Functions en el entorno local, ejecute func start desde una carpeta de proyecto de Functions. Al final de la salida, Core Tools muestra las direcciones URL locales que puede usar para llamar a cada una de las funciones. Mientras el host está en ejecución, puede usar cualquier herramienta o biblioteca que realice llamadas HTTP, como curl, para interactuar con las funciones. Core Tools escribe cualquier salida de registro generada por el host en el terminal en tiempo real.

func start output showing a function invocation URL.