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.
En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Publicar.
En la pestaña Publicar en Hospedaje, expanda los puntos suspensivos ( ... ) y seleccione Administrar la configuración de Azure App Service.
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.
En el menú Herramientas, seleccione Administrador de paquetes NuGet>Consola del Administrador de paquetes.
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
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.
Copie la dirección URL de la función de los resultados del runtime de Azure Functions.
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:
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.
Ejecute la herramienta Explorador de Azure Storage, y seleccione el icono de conexión de la izquierda y Agregar una cuenta.
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...
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
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).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
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.
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.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:
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.
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.
En la página Grupo de recursos, revise la lista de recursos incluidos y compruebe que son los que desea eliminar.
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: