Creación de una función desencadenada por Azure Cosmos DB

Aprenda a crear una función en Azure Portal que se desencadene cuando se agregan o cambian datos en Azure Cosmos DB. Para más información acerca de Azure Cosmos DB, consulte Azure Cosmos DB: Informática de base de datos sin servidor con Azure Cosmos DB y Azure Functions.

Nota:

La edición en el portal solo se admite para las funciones JavaScript, PowerShell y Script de C#. La edición en el portal de Python solo se admite cuando se ejecuta en el plan de consumo. Para crear una aplicación de script de C# que admita la edición en el portal, debe elegir una versión en runtime que admita el modelo en proceso.

Siempre que sea posible, debe desarrollar las funciones localmente.

Para más información sobre las limitaciones del código de función de edición en Azure Portal, consulte Limitaciones de desarrollo en Azure Portal.

Requisitos previos

Para completar este tutorial:

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Nota

Solo se admiten enlaces de Azure Cosmos DB para su uso con Azure Cosmos DB for NoSQL. La compatibilidad con Azure Cosmos DB for Table se proporciona mediante los enlaces de almacenamiento de Table, empezando por la extensión 5.x. Para el resto de API de Azure Cosmos DB, debe acceder a la base de datos desde la función mediante el cliente estático de la API, por ejemplo Azure Cosmos DB for MongoDB, Azure Cosmos DB for Cassandra y Azure Cosmos DB for Apache Gremlin.

Inicio de sesión en Azure

Inicie sesión en Azure Portal con su cuenta de Azure.

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

  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.

    Captura de pantalla que muestra la página Crear cuenta de Azure Cosmos DB.

    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 .

    Captura de pantalla que muestra que se completó la implementación.

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

    Captura de pantalla que muestra la página de la cuenta de Azure Cosmos DB.

Creación de una aplicación de función en Azure

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

  2. En la página Nuevo, seleccione Compute>Function App.

  3. En Seleccionar una opción de hospedaje, seleccione Consumo>Seleccione para crear la aplicación en el plan de consumo predeterminado. En esta opción de hospedaje sin servidor, solo paga por el tiempo durante el cual se ejecutan las funciones. El plan Premium también ofrece escalado dinámico. Si ejecuta un plan de App Service, debe administrar el escalado de la aplicación de función.

  4. En la página Básico, utilice la configuración de la aplicación de funciones como se especifica en la tabla siguiente:

    Configuración Valor sugerido Descripción
    Suscripción Su suscripción Suscripción en la que creará la nueva aplicación de funciones.
    Grupo de recursos myResourceGroup Nombre del nuevo grupo de recursos en el que crea la aplicación de funciones. Debe crear un nuevo grupo de recursos, ya que existen limitaciones conocidas a la hora de crear nuevas aplicaciones de funciones en un grupo de recursos existente.
    Nombre de la aplicación de función Nombre único globalmente Nombre que identifica la nueva Function App. Los caracteres válidos son a-z (no distingue mayúsculas de minúsculas), 0-9 y -.
    Pila en tiempo de ejecución Lenguaje preferido Elija un tiempo de ejecución que admita su lenguaje de programación de funciones preferido. La edición en el portal solo está disponible para JavaScript, PowerShell, Python, TypeScript y el script de C#.
    Para crear una aplicación de script de C# que admita la edición en el portal, debe elegir una versión en runtime que admita el modelo en proceso.
    Las funciones de la biblioteca de clases de C# y Java deben estar desarrolladas en el entorno local.
    Versión Número de la versión Elija la versión del entorno de ejecución instalado.
    Región Región preferida Seleccione una región próxima a usted o a otros servicios a los que accedan las funciones.
    Sistema operativo Windows Se preselecciona un sistema operativo en función de la selección de pila en tiempo de ejecución, pero es posible cambiar esta configuración si fuera necesario. La edición en el portal solo se admite en Windows.
  5. Acepte las opciones predeterminadas en las pestañas restantes, incluido el comportamiento predeterminado para crear una nueva cuenta de almacenamiento en la pestaña Almacenamiento y una nueva instancia de Application Insights en la pestaña Supervisión. También puede optar por usar una cuenta de almacenamiento existente o una instancia de Application Insights.

  6. Seleccione Revisar y crear para revisar la configuración de la aplicación que ha elegido y, después, seleccione Crear para aprovisionar e implementar la aplicación de funciones.

  7. Seleccione el icono Notificaciones de la esquina superior derecha del portal y observe el mensaje Implementación correcta.

  8. Seleccione Ir al recurso para ver la nueva aplicación de función. También puede seleccionar Anclar al panel. Dicho anclaje facilita la vuelta a este recurso de aplicación de función desde el panel.

    Captura de pantalla de la notificación de implementación.

Después, cree una función en la nueva Function App.

Creación de un desencadenador de Azure Cosmos DB

  1. En la aplicación de funciones, seleccione Información general y, después, seleccione + Crear en Funciones.

  2. En Seleccione una plantilla, desplácese hacia abajo y elija la plantilla desencadenador de Azure Cosmos DB.

  3. En Detalles de plantilla, configure el nuevo desencadenador con los valores especificados en esta tabla y luego seleccione Crear:

    Configuración Valor sugerido Descripción
    Nueva función Aceptar el nombre predeterminado El nombre de la función.
    Conexión de la cuenta de Azure Cosmos DB Aceptar el nuevo nombre predeterminado Seleccione Nuevo, a continuación, la cuenta de la base de datos que creó anteriormente y, después, Aceptar. Con esta acción 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.
    Nombre de la base de datos Tareas Nombre de la base de datos que incluye la colección que se va a supervisar.
    Nombre de colección Elementos Nombre de la colección que se va a supervisar.
    Nombre de la colección de concesiones concesiones Nombre de la colección para almacenar las concesiones.
    Crear colección de concesiones si no existe Comprueba si existe la colección de concesiones y la crea automáticamente.

    Azure crea la función desencadenada de Azure Cosmos DB en función de los valores proporcionados.

  4. Para mostrar el código de función basado en plantilla, seleccione Código y prueba.

    Plantilla de función de Azure Cosmos DB en C#

    Esta plantilla de función escribe el número de documentos y el identificador del primer documento en los registros.

A continuación, se conectará a la cuenta de Azure Cosmos DB y creará el contenedor Items en la base de datos Tasks.

Creación del contenedor de elementos

  1. Abra una segunda instancia de Azure Portal en una nueva pestaña del explorador.

  2. En el lado izquierdo del portal, expanda la barra de iconos, escriba cosmos en el campo de búsqueda y seleccione Azure Cosmos DB.

    Búsqueda del servicio Azure Cosmos DB

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

  4. En SQL API, elija la base de datos Tasks y seleccione Nuevo contenedor.

    Crear un contenedor

  5. En Agregar contenedor, use la configuración que se muestra en la tabla situada debajo de la imagen.

    Definición del contenedor Tasks

    Configuración Valor sugerido Descripción
    Identificador de base de datos Tareas Nombre de la nueva base de datos. Debe coincidir con el nombre definido en el enlace de función.
    ID de contenedor Elementos El nombre del nuevo contenedor. Debe coincidir con el nombre definido en el enlace de función.
    Clave de partición /categoría Una clave de partición que distribuye los datos uniformemente a cada partición. La selección de la clave de partición correcta es importante al crear un contenedor con rendimiento.
    Rendimiento 400 RU Use el valor predeterminado. Si quiere reducir la latencia, puede escalar verticalmente el rendimiento más adelante.
  6. Haga clic en Aceptar para crear el contenedor Items. Puede que el contenedor tarde un poco en crearse.

Una vez que el contenedor especificado en el enlace de función existe, puede probar la función mediante la adición de elementos a este nuevo contenedor.

Prueba de la función

  1. Expanda el nuevo contenedor Items en Data Explorer, elija Elementos y, a continuación, seleccione Nuevo elemento.

    Creación de un elemento en el contenedor Items

  2. Reemplace el contenido del nuevo elemento por el siguiente contenido, y luego elija Guardar.

    {
        "id": "task1",
        "category": "general",
        "description": "some task"
    }
    
  3. Cambie a la primera pestaña del explorador que contiene la función del portal. Expanda los registros de función y compruebe que el nuevo documento ha desencadenado la función. Compruebe que el valor de identificador de documento task1 se escribe en los registros.

    Vea el mensaje en los registros.

  4. (Opcional) Vuelva a su documento, realice un cambio y haga clic en Actualizar. A continuación, vuelva a los registros de función y compruebe que la actualización también ha desencadenado la función.

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 creado una función que se ejecuta cuando se agrega o modifica un documento en su instancia de Azure Cosmos DB. Para más información sobre los desencadenadores de Azure Cosmos DB, consulte Enlaces de Azure Cosmos DB para Azure Functions.

Ahora que ha creado su primera función, vamos a agregar un enlace de salida a la función que escribe un mensaje en una cola de Storage.