Inicio rápido: Creación de la primera función de C# en Azure mediante Visual Studio

Azure Functions permite ejecutar el código de C# en un entorno sin servidor en Azure.

En este artículo aprenderá a:

  • Use Visual Studio para crear un proyecto de biblioteca de clases de C# (.NET Core 3.1).
  • Cree una función que responda a solicitudes HTTP.
  • Ejecute el código localmente para comprobar el comportamiento de la función.
  • Implemente el proyecto de código en Azure Functions.

Este inicio rápido supone un pequeño costo en su cuenta de Azure.

El proyecto creado se ejecuta en .NET Core 3.1. Si en su lugar desea crear un proyecto que se ejecute en .NET 5.0, consulte Desarrollo y publicación de funciones de .NET 5 mediante Azure Functions.

Prerrequisitos

Creación de un proyecto de aplicación de función

La plantilla del proyecto de Azure Functions de Visual Studio crea un proyecto de biblioteca de clases de C# que puede publicar en una aplicación de funciones en Azure. Una aplicación de funciones permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación, el escalado y el uso compartido de recursos.

  1. En el menú de Visual Studio, seleccione Archivo > Nuevo > Proyecto.

  2. En Crear un proyecto, escriba functions en el cuadro de búsqueda, elija la plantilla Azure Functions y seleccione Siguiente.

  3. En Configurar el nuevo proyecto, escriba un nombre de proyecto para el proyecto y, a continuación, seleccione Crear. El nombre de la aplicación de función debe ser válido como espacio de nombres de C#, por lo que no debe usar guiones bajos, guiones u otros caracteres no alfanuméricos.

  4. En la configuración de Crear aplicación de Azure Functions, use los valores de la tabla siguiente:

    Configuración Valor Descripción
    Versión de .NET .NET Core 3 (LTS) Este valor crea un proyecto de funciones que usa la versión 3.x del entorno de ejecución de Azure Functions, que es compatible con .NET Core 3.x. Azure Functions 1.x admite .NET Framework. Para más información, consulte Selección de un destino para versiones de runtime de Azure Functions.
    Plantilla de función desencadenador HTTP Este valor crea una función desencadenada por una solicitud HTTP.
    Cuenta de almacenamiento (AzureWebJobsStorage) Emulador de Storage Dado que una aplicación de funciones de Azure necesita una cuenta de almacenamiento, se asigna o se crea una cuando publica su proyecto en Azure. Un desencadenador HTTP no utiliza una cadena de conexión de cuenta de Azure Storage; todos los demás tipos de desencadenador requieren una cadena de conexión de cuenta de Azure Storage válida.
    Nivel de autorización Anónimo Cualquier cliente puede desencadenar una función creada sin tener que proporcionar una clave. Esta configuración de autorización facilita probar la función nueva. Para más información sobre las claves y la autorización, consulte Claves de autorización e Introducción a los enlaces y desencadenadores HTTP de Azure Functions.

    Configuración de un proyecto de Azure Functions

    Asegúrese de establecer el Nivel de autorización en Anónimo. Al elegir el nivel predeterminado de Función, tiene que presentar la tecla de función en las solicitudes para acceder al punto de conexión de la función.

  5. Seleccione Crear para crear el proyecto de función y la función con desencadenador HTTP.

Visual Studio crea un proyecto y una clase que contiene código reutilizable para el tipo de función de desencadenador HTTP. El código reutilizable envía una respuesta HTTP que incluye un valor del cuerpo de la solicitud o de la cadena de consulta. El atributo HttpTrigger especifica que la función es desencadenada por una solicitud HTTP.

Cambio del nombre de la función

El atributo del método FunctionName establece el nombre de la función que, de forma predeterminada, se genera como Function1. Como las herramientas no le permiten reemplazar el nombre de la función predeterminada al crear un proyecto, dedique un minuto a crear un nombre mejor para la clase, el archivo y los metadatos de la función.

  1. En el Explorador de archivos, haga clic con el botón derecho en el archivo Function1.cs y cambie su nombre a HttpExample.cs.

  2. En el código, cambie el nombre de la clase Function1 a HttpExample.

  3. En el método HttpTrigger denominado Run, cambie el nombre del atributo del método FunctionName a HttpExample.

La definición de la función ahora debe parecerse al código siguiente:

public static class HttpExample
{
    [FunctionName("HttpExample")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)

Ahora que ha cambiado el nombre de la función, puede probarla en el equipo local.

Ejecución local de la función

Visual Studio se integra con Azure Functions Core Tools; de este modo puede probar las funciones localmente mediante el sistema en tiempo de ejecución completo de Azure Functions.

  1. Para ejecutar la función, presione F5 en Visual Studio. Es preciso habilitar una excepción de firewall para que las herramientas para controlen las solicitudes de HTTP. Los niveles de autorización nunca se aplican cuando se ejecuta una función localmente.

  2. Copie la dirección URL de la función de los resultados del runtime de Azure Functions.

    Runtime local de Azure

  3. Pegue la dirección URL de la solicitud HTTP en la barra de direcciones del explorador. Agregue la cadena de consulta ?name=<YOUR_NAME> a esta dirección URL y ejecute la solicitud. La siguiente imagen muestra la respuesta en el explorador para la solicitud GET local devuelta por la función:

    Respuesta de localhost de la función en el explorador

  4. Para detener la depuración, presione Mayús+F5 en Visual Studio.

Después de comprobar que la función se ejecuta correctamente en el equipo local es el momento de publicar el proyecto en Azure.

Publicar el proyecto en Azure

Para poder publicar el proyecto, debe tener una aplicación de funciones en la suscripción de Azure. La publicación de Visual Studio crea una aplicación de funciones la primera vez que se publica el proyecto.

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Publicar, en Destino, seleccione Azure y, a continuación, seleccione Siguiente.

  2. Para Destino específico, elija Aplicación de funciones de Azure (Windows) , que crea una aplicación de funciones que se ejecuta en Windows.

  3. En Instancia de la función, seleccione Crear una nueva función de Azure...

    Creación de una nueva instancia de aplicación de funciones

  4. Crear una nueva instancia con los valores especificados en la tabla siguiente:

    Configuración Valor Descripción
    Nombre Nombre único globalmente Nombre que identifica de forma única la nueva aplicación de función. Acepte este nombre o escriba uno nuevo. Los caracteres válidos son a-z, 0-9 y -.
    Suscripción Su suscripción La suscripción de Azure que se va a usar. Acepte esta suscripción o seleccione una nueva en la lista desplegable.
    Grupo de recursos Nombre del grupo de recursos Nombre del grupo de recursos en el que se va a crear la aplicación de función. Seleccione un grupo de recursos existente en la lista desplegable o elija la opción Nuevo para crear un nuevo grupo de recursos.
    Tipo de plan Consumo Cuando publique el proyecto en una aplicación de funciones que se ejecute en un plan Consumo, solo pagará por las ejecuciones de la aplicación. Otros planes de hospedaje suponen costos más elevados.
    Ubicación Ubicación de la instancia de App Service Elija una ubicación en una región próxima a usted o a otros servicios a los que las funciones accedan.
    Azure Storage Cuenta de almacenamiento de uso general El entorno de ejecución de Functions necesita una cuenta de Azure Storage. Seleccione Nueva para configurar una cuenta de almacenamiento de uso general. También puede elegir una cuenta existente que cumpla los requisitos de la cuenta de almacenamiento.

    Cuadro de diálogo Crear servicio de aplicaciones

  5. Seleccione Crear para crear una aplicación de funciones y sus recursos relacionados en Azure. El estado de la creación del recurso se muestra en la parte inferior izquierda de la ventana.

  6. En Instancia de Functions, asegúrese de que la opción Ejecutar desde archivo de paquete esté activada. La aplicación de funciones se implementa con la implementación de un archivo zip y con el modo de ejecución desde el paquete habilitado. Este es el método de implementación recomendado para el proyecto de Functions, ya que se obtiene un mejor rendimiento.

    Finalizar la creación del perfil

  7. Seleccione Finalizar y, en la página Publicar, seleccione Publicar para implementar el paquete que contiene los archivos de proyecto en la nueva aplicación de funciones en Azure.

    Una vez finalizada la implementación, la dirección URL raíz de la aplicación de funciones en Azure se muestra en la pestaña Publicar.

  8. En la pestaña Publicar, elija Administrar en Cloud Explorer. El nuevo recurso de Azure de la aplicación de funciones se abrirá en Cloud Explorer.

    Publicación de un mensaje de operación correcta

    Cloud Explorer le permite usar Visual Studio para ver el contenido del sitio, iniciar y detener la aplicación de funciones, y desplazarse directamente a los recursos de la aplicación de funciones en Azure y en Azure Portal.

Prueba de una función en Azure

  1. En Cloud Explorer, se debe seleccionar la nueva aplicación de funciones. Si no es así, expanda su suscripción > App Services y seleccione la nueva aplicación de funciones.

  2. Haga clic con el botón derecho en la aplicación de funciones y elija Abrir en explorador. Se abre la raíz de su aplicación de funciones en el explorador web predeterminado y muestra la página que indica que su aplicación de funciones se está ejecutando.

    Aplicación de funciones en ejecución

  3. En la barra de direcciones del explorador, anexe la cadena /api/HttpExample?name=Functions a la URL base y ejecute la solicitud.

    La dirección URL que llama a la función de desencadenador HTTP tiene el formato siguiente:

    http://<APP_NAME>.azurewebsites.net/api/HttpExample?name=Functions

  4. Vaya a esta dirección URL y verá una respuesta en el explorador para la solicitud GET remota devuelta por la función, que es similar a la del siguiente ejemplo:

    Respuesta de la función en el explorador

Limpieza de recursos

Otras guías de inicio rápido de esta colección se basan en los valores de esta. Si tiene previsto trabajar con las siguientes guías de inicio rápido, tutoriales o con cualquiera de los servicios que haya creado en esta guía de inicio rápido, no elimine los recursos.

En Azure, los recursos son aplicaciones de función, funciones o cuentas de almacenamiento, entre otros. Se agrupan en grupos de recursos y se puede eliminar todo el contenido de un grupo si este se elimina.

Ha creado recursos para completar estas guías de inicio rápido. Se le pueden facturar por estos recursos, dependiendo del estado de la cuentade los y precios de los servicios. Si ya no necesita los recursos, aquí se indica cómo eliminarlos:

  1. En Cloud Explorer, expanda su suscripción > App Services, haga clic con el botón derecho en su aplicación de funciones y elija Abrir en el portal.

  2. En la página de la aplicación de funciones, seleccione la pestaña Información general y, después, seleccione el vínculo situado bajo Grupo de recursos.

    Seleccione el grupo de recursos que se va a eliminar de la página de la aplicación de funciones

  3. En la página Grupo de recursos, revise la lista de recursos incluidos y compruebe que son los que desea eliminar.

  4. Seleccione Eliminar grupo de recursos y siga las instrucciones.

    El proceso de eliminación tardará un par de minutos. Cuando termine, aparece una notificación durante unos segundos. También puede seleccionar el icono de campana en la parte superior de la página para ver la notificación.

Pasos siguientes

En este inicio rápido, ha usado Visual Studio para crear y publicar una aplicación de funciones en C# en Azure con una función de desencadenador HTTP sencilla.

Prosiga en el siguiente artículo para aprender a agregar un enlace de cola de Azure Storage a la función: