Share via


Almacenamiento de datos no estructurados mediante Azure Functions y Cosmos DB

Azure Cosmos DB es una excelente manera de almacenar datos no estructurados y JSON. En combinación con Azure Functions, Azure Cosmos DB facilita y agiliza el almacenamiento de datos con mucho menos código que el necesario para almacenar datos en una base de datos relacional.

Nota

En este momento, el desencadenador de Azure Cosmos DB y los enlaces de entrada y de salida solo funcionan con cuentas de SQL API y Graph API.

En Azure Functions, los enlaces de entrada y salida proporcionan una manera declarativa de conectarse a los datos de servicio externos desde su función. En este artículo, aprenda a actualizar una función existente para agregar un enlace de salida que almacene datos no estructurados en un documento de Azure Cosmos DB.

Prerrequisitos

Para realizar este tutorial:

Este tema usa como punto de inicio los recursos creados en Creación de su primera función desde Azure Portal. Si aún no lo hecho, lleve a cabo estos pasos ahora para crear la aplicación de función.

Creación de una cuenta de Azure Cosmos DB

Debe tener una cuenta de Azure Cosmos DB que use la API de SQL para poder crear el enlace de salida.

  1. En el menú de Azure Portal o en la página principal, seleccione Crear un recurso.

  2. Busque Azure Cosmos DB. Seleccione Crear>Azure Cosmos DB.

  3. En la página Crear una cuenta de Azure Cosmos DB, seleccione la opción Crear en la sección Azure Cosmos DB for NoSQL.

    Azure Cosmos DB proporciona varias API:

    • NoSQL, para datos de documento
    • PostgreSQL
    • MongoDB, para datos de documento
    • Apache Cassandra
    • Tabla
    • Apache Gremlin, para datos de grafo

    Para obtener más información sobre la API para NoSQL, consulte Bienvenido a Azure Cosmos DB.

  4. En la página Crear una cuenta de Azure Cosmos DB, especifique la configuración básica de la nueva cuenta de Azure Cosmos DB.

    Configuración valor Descripción
    Subscription Nombre de suscripción Seleccione la suscripción de Azure que quiere usar para esta cuenta de Azure Cosmos DB.
    Grupo de recursos Definición de un nombre de grupo de recursos Seleccione un grupo de recursos o seleccione Crear nuevo y escriba un nombre único para el grupo de recursos nuevo.
    Nombre de cuenta Un nombre único Escriba un nombre para identificar la cuenta de Azure Cosmos DB. Dado que documents.azure.com se anexa al nombre que se proporciona para crear el identificador URI, debe usar un nombre único. El nombre solo puede contener letras minúsculas, números y el carácter de guion (-). Debe tener entre 3 y 44 caracteres.
    Location Región más cercana a los usuarios Seleccione una ubicación geográfica para hospedar la cuenta de Azure Cosmos DB. Use la ubicación más cercana a los usuarios para que puedan acceder de la forma más rápida posible a los datos.
    Capacity mode (Modo de capacidad) Rendimiento aprovisionado o Sin servidor Seleccione Provisioned throughput (Rendimiento aprovisionado) para crear una cuenta en modo de rendimiento aprovisionado. Seleccione Serverless (Sin servidor) para crear una cuenta en modo sin servidor.
    Aplicar el descuento del nivel Gratis de Azure Cosmos DB Aplicar o No aplicar Con el nivel Gratis de Azure Cosmos DB, recibe los primeros 1000 RU/s y 25 GB de almacenamiento gratis en una cuenta. Más información acerca del nivel Gratis.
    Límite del rendimiento total de la cuenta Seleccionado o no Limite la cantidad total de rendimiento que se puede aprovisionar en esta cuenta. Este límite evita cargos inesperados relacionados con el rendimiento aprovisionado. Puede actualizar o quitar este límite después de crear la cuenta.

    Puede tener una cuenta de Azure Cosmos DB de nivel gratis por cada suscripción de Azure y debe optar por recibirla al crear la cuenta. Si no ve la opción para aplicar el descuento por nivel Gratis, significa que el nivel Gratis ya se habilitó en otra cuenta de la suscripción.

    Screenshot shows the Create Azure Cosmos DB Account page.

    Nota:

    Las siguientes opciones no están disponibles si selecciona Serverless (Sin servidor) en Capacity mode (Modo de capacidad):

    • Aplicación de descuento por nivel Gratis
    • Límite del rendimiento total de la cuenta
  5. En la pestaña Distribución global, configure los detalles siguientes. Puede dejar los valores predeterminados para este inicio rápido:

    Configuración valor Descripción
    Redundancia geográfica Deshabilitar Habilite o deshabilite la distribución global en su cuenta. Para ello, debe emparejar su región con una región de par. Puede agregar más regiones a su cuenta más adelante.
    Escrituras en varias regiones Deshabilitar La funcionalidad de escrituras en varias regiones le permite aprovechar el rendimiento aprovisionado para sus bases de datos y contenedores de todo el mundo.
    Zonas de disponibilidad Deshabilitar Las zonas de disponibilidad le ayudan a mejorar aún más la disponibilidad y la resistencia de una aplicación.

    Nota

    Las siguientes opciones no están disponibles si selecciona Sin servidor en Modo de capacidad en la página anterior Básico:

    • Redundancia geográfica
    • Escrituras en varias regiones
  6. De manera opcional, puede configurar más detalles en las pestañas siguientes:

    • Funciones de red. Configure el acceso desde una red virtual.
    • Directiva de copia de seguridad. Configure una directiva de copia de seguridad periódica o continua.
    • Cifrado. Use una clave administrada por el servicio o una clave administrada por el cliente.
    • Etiquetas. Las etiquetas son pares nombre-valor que permiten categorizar los recursos y ver una facturación consolidada mediante la aplicación de la misma etiqueta en varios recursos y grupos de recursos.
  7. Seleccione Revisar + crear.

  8. Revise la configuración de la cuenta y seleccione Crear. La operación de creación de la cuenta tarda unos minutos. Espere hasta que la página del portal muestre Se completó la implementación .

    Screenshot shows that your deployment is complete.

  9. Seleccione Ir al recurso para ir a la página de la cuenta de Azure Cosmos DB.

    Screenshot shows the Azure Cosmos DB account page.

Adición de un enlace de salida

  1. En Azure Portal, vaya a la aplicación de funciones que se ha creado anteriormente y selecciónela.

  2. Seleccione Funciones y, después, seleccione la función HttpTrigger.

    Select your Http function in the Azure portal.

  3. Seleccione Integración y + Agregar salida.

    Add an Azure Cosmos DB output binding.

  4. Use la configuración de Crear salida, como se especifica en la tabla:

    Configure Azure Cosmos DB output binding.

    Configuración Valor sugerido Descripción
    Tipo de enlace Azure Cosmos DB Nombre del tipo de enlace que se selecciona para crear el enlace de salida a Azure Cosmos DB.
    Nombre del parámetro de documento taskDocument Nombre que hace referencia al objeto de Azure Cosmos DB en el código.
    Nombre de la base de datos taskDatabase Nombre de la base de datos para guardar documentos.
    Nombre de colección taskCollection Nombre de la colección de la base de datos.
    Si es true, crea la base de datos y la colección de Azure Cosmos DB La colección no existe, por lo que se crea.
    Conexión de la cuenta de Azure Cosmos DB Nueva configuración Seleccione Nuevo, luego, Cuenta de Azure Cosmos DB y la cuenta de la base de datos que creó anteriormente y, después, seleccione Aceptar. Con esto se crea una configuración de la aplicación para la conexión de la cuenta. Esta configuración la usa el enlace para establecer la conexión a la base de datos.
  5. Seleccione Aceptar para crear el enlace.

Actualización del código de la función

Reemplace el código existente de la función por el código siguiente, en el lenguaje de su elección:

Reemplace la función de C# existente por el código siguiente:

#r "Newtonsoft.Json"

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

public static IActionResult Run(HttpRequest req, out object taskDocument, ILogger log)
{
    string name = req.Query["name"];
    string task = req.Query["task"];
    string duedate = req.Query["duedate"];

    // We need both name and task parameters.
    if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(task))
    {
        taskDocument = new
        {
            name,
            duedate,
            task
        };

        return (ActionResult)new OkResult();
    }
    else
    {
        taskDocument = null;
        return (ActionResult)new BadRequestResult();
    }
}

Este ejemplo de código lee las cadenas de consulta de la solicitud HTTP y las asigna a los campos del objeto taskDocument. El enlace taskDocument envía los datos del objeto desde este parámetro de enlace para almacenarlos en la base de datos de documentos enlazada. La base de datos se crea la primera vez que se ejecuta la función.

Prueba de la función y la base de datos

  1. Seleccione Probar/Ejecutar. En Consulta, seleccione + Agregar parámetro y agregue los siguientes parámetros a la cadena de consulta:

    • name
    • task
    • duedate

    Test the function.

  2. Seleccione Ejecutar y compruebe que se devuelve un estado 200.

    Screenshot shows the HTTP response code 200 status highlighted after selecting Run.

  3. En Azure Portal, busque y seleccione Azure Cosmos DB.

    Search for the Azure Cosmos DB service.

  4. Elija la cuenta de Azure Cosmos DB y luego seleccione Explorador de datos.

  5. Expanda los nodos de TaskCollection, seleccione el nuevo documento y confirme que el documento contiene los valores de la cadena de consulta, junto con metadatos adicionales.

    Verify the string values in your document.

Ha agregado correctamente un enlace al desencadenador HTTP que almacena datos no estructurados en una instancia de Azure Cosmos DB.

Limpieza de recursos

En los pasos anteriores, creó recursos de Azure en un grupo de recursos. Si no cree que vaya a necesitar estos recursos en el futuro, puede eliminarlos mediante la eliminación del grupo de recursos.

En el menú de Azure Portal o la página Inicio, seleccione Grupos de recursos. En la página Grupos de recursos, seleccione myResourceGroup.

En la página myResourceGroup, asegúrese de que los recursos enumerados sean los que desea eliminar.

Seleccione Eliminar grupo de recursos, escriba myResourceGroup en el cuadro de texto para confirmar y, después, seleccione Eliminar.

Pasos siguientes

Para más información sobre el enlace a una instancia de Azure Cosmos DB, consulte Enlaces de Azure Cosmos DB en Azure Functions.