Conexión de las funciones a Azure Storage mediante Visual Studio

Azure Functions le permite conectar servicios de Azure y otros recursos a funciones sin tener que escribir su propio código de integración. Estos enlaces, que representan la entrada y la salida, se declaran dentro de la definición de función. Los datos de los enlaces se proporcionan a la función como parámetros. Un desencadenador es un tipo especial de enlace de entrada. Si bien una función tiene un único desencadenador, puede tener varios enlaces de entrada y salida. Para más información, consulte Conceptos básicos sobre los enlaces y desencadenadores de Azure Functions.

En este artículo se muestra cómo conectar la función que creó en el artículo de inicio rápido anterior a Azure Storage mediante Visual Studio. El enlace de salida que se agrega a esta función escribe datos de la solicitud HTTP en un mensaje de la cola de Azure Queue Storage.

La mayoría de los enlaces requieren una cadena de conexión almacenada que se usa en Functions para acceder al servicio enlazado. Para que sea más fácil, usará la cuenta de almacenamiento que creó con la aplicación de función. La conexión a esta cuenta ya está almacenada en una configuración de aplicación llamada AzureWebJobsStorage.

Prerrequisitos

Antes de empezar este artículo, debe realizar lo siguiente:

  • Complete la parte 1 del inicio rápido de Visual Studio.
  • Instale el Explorador de Azure Storage. El Explorador de Storage es una herramienta que utilizará para examinar los mensajes en cola que genere el enlace de salida. El Explorador de Storage se admite en sistemas operativos basados en Linux, Windows y macOS.
  • Inicio de sesión en la suscripción de Azure desde Visual Studio.

Descarga de la configuración de la aplicación de función

En el artículo de inicio rápido anterior creó una aplicación de funciones en Azure junto con una cuenta de Storage. La cadena de conexión de esta cuenta se almacena de forma segura en la configuración de la aplicación en Azure. En este artículo, escribirá mensajes en una cola de almacenamiento de la misma cuenta. Para conectarse a su cuenta de Azure Storage cuando se ejecuta la función localmente, debe descargar la configuración de la aplicación en el archivo local.settings.json.

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

  2. En la pestaña Publicar en Hospedaje, expanda los puntos suspensivos ( ... ) y seleccione Administrar la configuración de Azure App Service.

    Edición de la configuración de la aplicación

  3. En AzureWebJobsStorage, copie el valor de la cadena Remote en Local y seleccione Aceptar.

El enlace de almacenamiento, que utiliza el valor AzureWebJobsStorage para la conexión, puede conectarse ahora a Queue Storage cuando se ejecuta localmente.

Registro de extensiones de enlace

Dado que está utilizando un enlace de salida de Queue Storage, debe tener la extensión de enlaces de Storage instalada antes de ejecutar el proyecto. Excepto los desencadenadores HTTP y del temporizador, los enlaces se implementan como paquetes de extensión.

  1. En el menú Herramientas, seleccione Administrador de paquetes NuGet>Consola del Administrador de paquetes.

  2. En la consola de, ejecute el siguiente comando Install-Package para instalar las extensiones de Azure Storage:

    Install-Package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
    

Ahora podrá agregar el enlace de salida de almacenamiento al proyecto.

Adición de un enlace de salida

En un proyecto de C#, los enlaces se definen como atributos de enlace en el método de función. Las definiciones específicas dependen de si la aplicación se ejecuta en proceso (biblioteca de clases de C#) o en un proceso de trabajo aislado.

Abra el archivo de proyecto HttpExample.cs y agregue la siguiente clase MultiResponse:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

La clase MultiResponse le permite escribir en una cola de almacenamiento denominada outqueue y en un mensaje HTTP de operación correcta. Como el atributo QueueOutput se aplica a una matriz de cadenas, se podrían enviar varios mensajes a la cola.

La propiedad Connection le permite establecer una cadena de conexión para la cuenta de almacenamiento. En este caso, puede omitir Connection, puesto que ya está usando la cuenta de almacenamiento predeterminada.

Adición de código que utilice el enlace de salida

Una vez definido el enlace, podrá usar el valor de name de este para acceder a él como atributo en la firma de función. Con un enlace de salida, no tiene que usar el código del SDK de Azure Storage para autenticarse, obtener una referencia de cola o escribir datos. El sistema en tiempo de ejecución de Functions y el enlace de salida de cola realizan esas tareas automáticamente.

Reemplace la clase HttpExample existente por el código siguiente:

    [Function("HttpExample")]
    public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
        FunctionContext executionContext)
    {
        var logger = executionContext.GetLogger("HttpExample");
        logger.LogInformation("C# HTTP trigger function processed a request.");

        var message = "Welcome to Azure Functions!";

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
        response.WriteString(message);

        // Return a response to both HTTP trigger and storage output binding.
        return new MultiResponse()
        {
            // Write a single message.
            Messages = new string[] { message },
            HttpResponse = response
        };
    }
}

Ejecución local de la función

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

Se crea una nueva cola denominada outqueue en su cuenta de Storage mediante el entorno de ejecución de Functions cuando el enlace de salida se usa por primera vez. Usará el Explorador de Storage para comprobar que se han creado la cola y un mensaje.

Conexión del Explorador de Storage con la cuenta

Omita esta sección si ya instaló el Explorador de Azure Storage y lo conectó a su cuenta de Azure.

  1. Ejecute la herramienta Explorador de Azure Storage, y seleccione el icono de conexión de la izquierda y Agregar una cuenta.

    Captura de pantalla de cómo agregar una cuenta de Azure al Explorador de Microsoft Azure Storage.

  2. En el cuadro de diálogo Conectar, seleccione Agregar una cuenta de Azure y, a continuación, elija el entorno de Azure que quiera usar y seleccione Iniciar sesión...

    Captura de pantalla de la ventana de inicio de sesión en la cuenta de Azure.

Después de iniciar sesión correctamente en su cuenta, verá todas las suscripciones de Azure asociadas con ella. Elija la suscripción y selección Abrir Explorer.

Examen de la cola de salida

  1. En el Explorador de Storage, expanda el nodo Colas y, después, seleccione la cola con el nombre outqueue.

    La cola contiene el mensaje que creó el enlace de salida de la cola al ejecutar la función desencadenada por HTTP. Si se invoca la función con el valor predeterminado name de Azure, el mensaje de cola es Name passed to the function: Azure (Nombre pasado a la función: Azure).

    Captura de pantalla del mensaje de la cola que se muestra en el Explorador de Azure Storage.

  2. Vuelva a ejecutar la función y envíe otra solicitud. A continuación, verá que hay un nuevo mensaje en la cola.

Ahora, es el momento de volver a publicar la aplicación de función actualizada en Azure.

Reimplementación y comprobación de la aplicación actualizada

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Publicar y, a continuación, elija Publicar para volver a publicar el proyecto en Azure.

  2. Una vez finalizada la implementación, puede usar nuevamente el explorador para probar la función que ha vuelto a implementar. Como anteriormente, anexe la cadena de consulta &name=<yourname> a la dirección URL.

  3. De nuevo, consulte el mensaje de la cola de almacenamiento para comprobar que el enlace de salida genera otra vez un nuevo mensaje en la cola.

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 los siguientes inicios rápidos, tutoriales o con cualquiera de los servicios que haya creado en este 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.

Para completar estas guías de inicio rápido, ha creado varios recursos. Se le podría facturar por el consumo de estos recursos en función del estado de la cuenta y los precios de los servicios. Si ya no necesita los recursos, aquí se indica cómo eliminarlos:

  1. En Azure Portal, vaya a la página Grupo de recursos.

    Para llegar a esa página desde la página de aplicación de funciones, seleccione la pestaña Información general y el vínculo situado bajo Grupo de recursos.

    Captura de pantalla que muestra la selección del grupo de recursos que se va a eliminar de la página de la aplicación de funciones.

    Para llegar a esa página desde el panel, seleccione Grupos de recursos y, después, seleccione el grupo que ha utilizado para este artículo.

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

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

    La eliminación puede 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

Ha actualizado la función desencadenada por HTTP para escribir datos en una cola de almacenamiento. Para más información sobre el desarrollo de funciones, consulte Desarrollo de Azure Functions con Visual Studio.

A continuación, debe habilitar la supervisión de Application Insights para su aplicación de función: