Creación de una función desencadenada por Azure Cosmos DBCreate a function triggered by Azure Cosmos DB

Aprenda a crear una función que se desencadena cuando se agregan o se cambian datos en Azure Cosmos DB.Learn how to create a function triggered when data is added to or changed in 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.To learn more about Azure Cosmos DB, see Azure Cosmos DB: Serverless database computing using Azure Functions.

Código de Azure Cosmos DB

Requisitos previosPrerequisites

Para completar este tutorial:To complete this tutorial:

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

Nota

Solo se admiten enlaces de Azure Cosmos DB para su uso con la API de SQL.Azure Cosmos DB bindings are only supported for use with the SQL API. Para todas las demás API de Azure Cosmos DB, debe acceder a la base de datos de la función mediante el cliente estático de la API, lo que incluye la API de Azure Cosmos DB para MongoDB, Cassandra API, Gremlin API y Table API.For all other Azure Cosmos DB APIs, you should access the database from your function by using the static client for your API, including Azure Cosmos DB's API for MongoDB, Cassandra API, Gremlin API, and Table API.

Inicio de sesión en AzureSign in to Azure

Inicie sesión en Azure Portal con su cuenta de Azure.Sign in to the Azure portal with your Azure account.

Creación de una cuenta de Azure Cosmos DBCreate an Azure Cosmos DB account

Debe tener una cuenta de Azure Cosmos DB que use la API de SQL para poder crear el desencadenador.You must have an Azure Cosmos DB account that uses the SQL API before you create the trigger.

  1. En el menú de Azure Portal o en la página principal, seleccione Crear un recurso.From the Azure portal menu or the Home page, select Create a resource.

  2. En la página Nuevos, busque y seleccione Azure Cosmos DB.On the New page, search for and select Azure Cosmos DB.

  3. En la página Azure Cosmos DB, seleccione Crear.On the Azure Cosmos DB page, select Create.

  4. En la página Creación de una cuenta de Azure Cosmos DB , especifique la configuración básica de la nueva cuenta de Azure Cosmos.On the Create Azure Cosmos DB Account page, enter the basic settings for the new Azure Cosmos account.

    ConfiguraciónSetting ValueValue DescripciónDescription
    SuscripciónSubscription Nombre de suscripciónSubscription name Seleccione la suscripción de Azure que desea usar para esta cuenta de Azure Cosmos.Select the Azure subscription that you want to use for this Azure Cosmos account.
    Grupo de recursosResource Group Definición de un nombre de grupo de recursosResource group name Seleccione un grupo de recursos o seleccione Crear nuevo y escriba un nombre único para el grupo de recursos nuevo.Select a resource group, or select Create new, then enter a unique name for the new resource group.
    Nombre de cuentaAccount Name Un nombre únicoA unique name Escriba un nombre para identificar la cuenta de Azure Cosmos.Enter a name to identify your Azure Cosmos account. Dado que documents.azure.com se anexa al nombre que se proporciona para crear el identificador URI, debe usar un nombre único.Because documents.azure.com is appended to the name that you provide to create your URI, use a unique name.

    El nombre solo puede contener letras minúsculas, números y el carácter de guion (-).The name can only contain lowercase letters, numbers, and the hyphen (-) character. Debe tener una longitud de entre 3 y 44 caracteres.It must be between 3-44 characters in length.
    APIAPI El tipo de cuenta que se va a crearThe type of account to create Seleccione Core(SQL) para crear una base de datos de documentos y consultarla mediante la sintaxis SQL.Select Core (SQL) to create a document database and query by using SQL syntax.

    La API determina el tipo de cuenta que se va a crear.The API determines the type of account to create. Azure Cosmos DB proporciona cinco API: Core (SQL) y MongoDB para datos de documento, Gremlin para datos de gráfico, Azure Table y Cassandra.Azure Cosmos DB provides five APIs: Core (SQL) and MongoDB for document data, Gremlin for graph data, Azure Table, and Cassandra. Actualmente, debe crear una cuenta independiente para cada API.Currently, you must create a separate account for each API.
    Aplicación de descuento por nivel GratisApply Free Tier Discount Aplicar o no aplicarApply or Do not apply Con el nivel Gratis de Azure Cosmos DB, obtendrá los primeros 400 RU/s y 5 GB de almacenamiento gratis en una cuenta.With Azure Cosmos DB free tier, you will get the first 400 RU/s and 5 GB of storage for free in an account. Más información acerca del nivel Gratis.Learn more about free tier.
    LocationLocation Región más cercana a los usuariosThe region closest to your users Seleccione una ubicación geográfica para hospedar la cuenta de Azure Cosmos DB.Select a geographic location to host your Azure Cosmos DB account. 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.Use the location that is closest to your users to give them the fastest access to the data.
    Tipo de cuentaAccount Type Producción o no producciónProduction or Non-Production Seleccione Producción si la cuenta se va a usar para una carga de trabajo de producción.Select Production if the account will be used for a production workload. Seleccione No producción si la cuenta se va a usar para entornos que no son de producción, como desarrollo, pruebas, control de calidad o almacenamiento provisional.Select Non-Production if the account will be used for non-production, e.g. development, testing, QA, or staging. Se trata de una configuración de etiquetas de recursos de Azure que ajusta la experiencia del portal, pero no afecta a la cuenta de Azure Cosmos DB subyacente.This is an Azure resource tag setting that tunes the Portal experience but does not affect the underlying Azure Cosmos DB account. Este valor se puede cambiar en cualquier momento.You can change this value anytime.

    Nota

    Puede tener una cuenta de Azure Cosmos DB de nivel Gratis por cada suscripción de Azure y debe optar por tenerla al crear la cuenta.You can have up to one free tier Azure Cosmos DB account per Azure subscription and must opt-in when creating the account. Si no ve la opción para aplicar el descuento por nivel Gratis, significará que en otra cuenta de la suscripción ya se ha habilitado el nivel Gratis.If you do not see the option to apply the free tier discount, this means another account in the subscription has already been enabled with free tier.

    Página de la nueva cuenta de Azure Cosmos DB

  5. Seleccione Revisar + crear.Select Review + create. Puede omitir las secciones Red y Etiquetas.You can skip the Network and Tags sections.

  6. Revise la configuración de la cuenta y seleccione Crear.Review the account settings, and then select Create. La operación de creación de la cuenta tarda unos minutos.It takes a few minutes to create the account. Espere hasta que la página del portal muestre Se completó la implementación .Wait for the portal page to display Your deployment is complete.

    Panel de notificaciones de Azure Portal

  7. Seleccione Ir al recurso para ir a la página de la cuenta de Azure Cosmos DB.Select Go to resource to go to the Azure Cosmos DB account page.

    Página de la cuenta de Azure Cosmos DB

Creación de una Function App de AzureCreate an Azure Function app

  1. En el menú de Azure Portal o en la página Principal, seleccione Crear un recurso.From the Azure portal menu or the Home page, select Create a resource.

  2. En la página Nuevo, seleccione Compute > Function App.In the New page, select Compute > Function App.

  3. En la página Básico, utilice la configuración de la aplicación de funciones que se especifica en la tabla siguiente.On the Basics page, use the function app settings as specified in the following table.

    ConfiguraciónSetting Valor sugeridoSuggested value DescripciónDescription
    SuscripciónSubscription Su suscripciónYour subscription Suscripción en la que se creará esta nueva aplicación de función.The subscription under which this new function app is created.
    Grupo de recursosResource Group myResourceGroupmyResourceGroup Nombre para el nuevo grupo de recursos en el que se va a crear la Function App.Name for the new resource group in which to create your function app.
    Nombre de la aplicación de funciónFunction App name Nombre único globalmenteGlobally unique name Nombre que identifica la nueva Function App.Name that identifies your new function app. Los caracteres válidos son a-z (no distingue mayúsculas de minúsculas), 0-9 y -.Valid characters are a-z (case insensitive), 0-9, and -.
    PublicarPublish CódigoCode Opción para publicar archivos de código o un contenedor de Docker.Option to publish code files or a Docker container.
    Pila en tiempo de ejecuciónRuntime stack Lenguaje preferidoPreferred language Elija un tiempo de ejecución que admita su lenguaje de programación de funciones preferido.Choose a runtime that supports your favorite function programming language. Elija .NET Core para las funciones de C# y F#.Choose .NET Core for C# and F# functions.
    VersiónVersion Número de la versiónVersion number Elija la versión del entorno de ejecución instalado.Choose the version of your installed runtime.
    RegiónRegion Región preferidaPreferred region Elija una región cerca de usted o cerca de otros servicios a los que tendrán acceso las funciones.Choose a region near you or near other services your functions access.

    Aspectos básicos

  4. Seleccione Siguiente: Hospedaje.Select Next : Hosting. En la página Hospedaje, escriba la siguiente configuración.On the Hosting page, enter the following settings.

    ConfiguraciónSetting Valor sugeridoSuggested value DescripciónDescription
    Cuenta de almacenamientoStorage account Nombre único globalmenteGlobally unique name Cree una cuenta de almacenamiento que use la aplicación de función.Create a storage account used by your function app. Los nombres de las cuentas de almacenamiento deben tener entre 3 y 24 caracteres y solo pueden incluir números y letras en minúscula.Storage account names must be between 3 and 24 characters in length and can contain numbers and lowercase letters only. También puede usar una cuenta existente que debe cumplir los requisitos de la cuenta de almacenamiento.You can also use an existing account, which must meet the storage account requirements.
    Sistema operativoOperating system Sistema operativo preferidoPreferred operating system Se preselecciona un sistema operativo en función de la selección de pila en tiempo de ejecución, pero puede cambiar esta configuración si es necesario.An operating system is pre-selected for you based on your runtime stack selection, but you can change the setting if necessary.
    PlanPlan Consumo (sin servidor)Consumption (Serverless) Plan de hospedaje que define cómo se asignan los recursos a la Function App.Hosting plan that defines how resources are allocated to your function app. En el plan de Consumo predeterminado, los recursos se agregan dinámicamente según lo requieran sus funciones.In the default Consumption plan, resources are added dynamically as required by your functions. En este hospedaje sin servidor, solo paga por el tiempo durante el cual se ejecutan las funciones.In this serverless hosting, you pay only for the time your functions run. Si ejecuta un plan de App Service, debe administrar el escalado de la aplicación de función.When you run in an App Service plan, you must manage the scaling of your function app.

    Hosting

  5. Seleccione Siguiente: Supervisión.Select Next : Monitoring. En la página Supervisión, escriba la siguiente configuración.On the Monitoring page, enter the following settings.

    ConfiguraciónSetting Valor sugeridoSuggested value DescripciónDescription
    Application InsightsApplication Insights Valor predeterminadoDefault Crea un recurso de Application Insights con el mismo nombre de aplicación en la región más cercana que lo admita.Creates an Application Insights resource of the same App name in the nearest supported region. Si expande esta configuración o selecciona Crear nuevo puede cambiar el nombre de Application Insights o elegir otra región de una geografía de Azure en la que quiera almacenar los datos.By expanding this setting or selecting Create new, you can change the Application Insights name or choose a different region in an Azure geography where you want to store your data.

    Supervisión

  6. Seleccione Revisar y crear para revisar las selecciones de configuración de la aplicación.Select Review + create to review the app configuration selections.

  7. En la página Revisar y crear, revise la configuración y, a continuación, seleccione Crear para aprovisionar e implementar la aplicación de función.On the Review + create page, review your settings, and then select Create to provision and deploy the function app.

  8. Seleccione el icono Notificaciones de la esquina superior derecha del portal y observe el mensaje Implementación correcta.Select the Notifications icon in the upper-right corner of the portal and watch for the Deployment succeeded message.

  9. Seleccione Ir al recurso para ver la nueva aplicación de función.Select Go to resource to view your new function app. También puede seleccionar Anclar al panel.You can also select Pin to dashboard. Dicho anclaje facilita la vuelta a este recurso de aplicación de función desde el panel.Pinning makes it easier to return to this function app resource from your dashboard.

    Notificación de implementación

Después, cree una función en la nueva Function App.Next, you create a function in the new function app.

Creación de un desencadenador de Azure Cosmos DBCreate Azure Cosmos DB trigger

  1. En la aplicación de funciones, seleccione Funciones en el menú de la izquierda y, a continuación, seleccione Agregar en el menú superior.In your function app, select Functions from the left menu, and then select Add from the top menu.

  2. En la página Nueva función, escriba cosmos en el campo de búsqueda y, después, elija la plantilla Desencadenador de Azure Cosmos DB.On the New Function page, enter cosmos in the search field and then choose the Azure Cosmos DB trigger template.

    Página Funciones en Azure Portal

  3. Configure el nuevo desencadenador según la configuración especificada en la tabla siguiente:Configure the new trigger with the settings as specified in the following table:

    ConfiguraciónSetting Valor sugeridoSuggested value DescripciónDescription
    Nueva funciónNew Function Aceptar el nombre predeterminadoAccept the default name El nombre de la función.The name of the function.
    Conexión de la cuenta de Cosmos DBCosmos DB account connection Aceptar el nuevo nombre predeterminadoAccept the default new name Seleccione Nuevo, a continuación, la cuenta de la base de datos que creó anteriormente y, después, Aceptar.Select New, the Database Account you created earlier, and then OK. Con esta acción se crea una configuración de la aplicación para la conexión de la cuenta.This action creates an application setting for your account connection. Esta configuración la usa el enlace para establecer la conexión a la base de datos.This setting is used by the binding to connection to the database.
    Nombre de la base de datosDatabase name TareasTasks Nombre de la base de datos que incluye la colección que se va a supervisar.Name of the database that includes the collection to be monitored.
    Nombre de colecciónCollection name ElementosItems Nombre de la colección que se va a supervisar.Name of the collection to be monitored.
    Nombre de la colección de concesionesCollection name for leases concesionesleases Nombre de la colección para almacenar las concesiones.Name of the collection to store the leases.
    Crear colección de concesiones si no existeCreate lease collection if it does not exist Yes Comprueba si existe la colección de concesiones y la crea automáticamente.Checks for existence of the lease collection and automatically creates it.

    Creación de la función de desencadenador de Azure Cosmos DB

  4. Seleccione Crear función.Select Create Function.

    Azure crea la función de desencadenador de Cosmos DB.Azure creates the Cosmos DB trigger function.

  5. Para mostrar el código de función basado en plantilla, seleccione Código y prueba.To display the template-based function code, select Code + Test.

    Plantilla de función de Cosmos DB en C#

    Esta plantilla de función escribe el número de documentos y el identificador del primer documento en los registros.This function template writes the number of documents and the first document ID to the logs.

A continuación, se conectará a la cuenta de Azure Cosmos DB y creará el contenedor Items en la base de datos Tasks.Next, you connect to your Azure Cosmos DB account and create the Items container in the Tasks database.

Creación del contenedor de elementosCreate the Items container

  1. Abra una segunda instancia de Azure Portal en una nueva pestaña del explorador.Open a second instance of the Azure portal in a new tab in the browser.

  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.On the left side of the portal, expand the icon bar, type cosmos in the search field, and select 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.Choose your Azure Cosmos DB account, then select the Data Explorer.

  4. En SQL API, elija la base de datos Tasks y seleccione Nuevo contenedor.Under SQL API, choose Tasks database and select New Container.

    Crear un contenedor

  5. En Agregar contenedor, use la configuración que se muestra en la tabla situada debajo de la imagen.In Add Container, use the settings shown in the table below the image.

    Definición del contenedor Tasks

    ConfiguraciónSetting Valor sugeridoSuggested value DescripciónDescription
    Identificador de base de datosDatabase ID TareasTasks Nombre de la nueva base de datos.The name for your new database. Debe coincidir con el nombre definido en el enlace de función.This must match the name defined in your function binding.
    ID de contenedorContainer ID ElementosItems El nombre del nuevo contenedor.The name for the new container. Debe coincidir con el nombre definido en el enlace de función.This must match the name defined in your function binding.
    Clave de particiónPartition key /categoría/category Una clave de partición que distribuye los datos uniformemente a cada partición.A partition key that distributes data evenly to each partition. La selección de la clave de partición correcta es importante al crear un contenedor con rendimiento.Selecting the correct partition key is important in creating a performant container.
    RendimientoThroughput 400 RU400 RU Use el valor predeterminado.Use the default value. Si quiere reducir la latencia, puede escalar verticalmente el rendimiento más adelante.If you want to reduce latency, you can scale up the throughput later.
  6. Haga clic en Aceptar para crear el contenedor Items.Click OK to create the Items container. Puede que el contenedor tarde un poco en crearse.It may take a short time for the container to get created.

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.After the container specified in the function binding exists, you can test the function by adding items to this new container.

Prueba de la funciónTest the function

  1. Expanda el nuevo contenedor Items en Data Explorer, elija Elementos y, a continuación, seleccione Nuevo elemento.Expand the new Items container in Data Explorer, choose Items, then select New Item.

    Creación de un elemento en el contenedor Items

  2. Reemplace el contenido del nuevo elemento por el siguiente contenido, y luego elija Guardar.Replace the contents of the new item with the following content, then choose Save.

    {
        "id": "task1",
        "category": "general",
        "description": "some task"
    }
    
  3. Cambie a la primera pestaña del explorador que contiene la función del portal.Switch to the first browser tab that contains your function in the portal. Expanda los registros de función y compruebe que el nuevo documento ha desencadenado la función.Expand the function logs and verify that the new document has triggered the function. Compruebe que el valor de identificador de documento task1 se escribe en los registros.See that the task1 document ID value is written to the logs.

    Vea el mensaje en los registros.

  4. (Opcional) Vuelva a su documento, realice un cambio y haga clic en Actualizar.(Optional) Go back to your document, make a change, and click Update. A continuación, vuelva a los registros de función y compruebe que la actualización también ha desencadenado la función.Then, go back to the function logs and verify that the update has also triggered the function.

Limpieza de recursosClean up resources

Otras guías de inicio rápido de esta colección se basan en los valores de esta.Other quickstarts in this collection build upon this quickstart. 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.If you plan to work with subsequent quickstarts, tutorials, or with any of the services you have created in this quickstart, do not clean up the resources.

En Azure, los recursos son aplicaciones de función, funciones o cuentas de almacenamiento, entre otros.Resources in Azure refer to function apps, functions, storage accounts, and so forth. Se agrupan en grupos de recursos y se puede eliminar todo el contenido de un grupo si este se elimina.They're grouped into resource groups, and you can delete everything in a group by deleting the group.

Ha creado recursos para completar estas guías de inicio rápido.You created resources to complete these quickstarts. Se le pueden facturar por estos recursos, dependiendo del estado de la cuentade los y precios de los servicios.You may be billed for these resources, depending on your account status and service pricing. Si ya no necesita los recursos, aquí se indica cómo eliminarlos:If you don't need the resources anymore, here's how to delete them:

  1. En Azure Portal, vaya a la página Grupo de recursos.In the Azure portal, go to the Resource group page.

    Para llegar a esa página desde la página de aplicación de función, seleccione la pestaña Información general y, después, seleccione el vínculo situado bajo Grupo de recursos.To get to that page from the function app page, select the Overview tab and then select the link under Resource group.

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

    Para llegar a esa página desde el panel, seleccione Grupos de recursos y, después, seleccione el grupo que ha utilizado para esta guía de inicio rápido.To get to that page from the dashboard, select Resource groups, and then select the resource group that you used for this quickstart.

  2. En la página Grupo de recursos, revise la lista de recursos incluidos y compruebe que son los que desea eliminar.In the Resource group page, review the list of included resources, and verify that they're the ones you want to delete.

  3. Seleccione Eliminar grupo de recursos y siga las instrucciones.Select Delete resource group, and follow the instructions.

    El proceso de eliminación tardará un par de minutos.Deletion may take a couple of minutes. Cuando termine, aparece una notificación durante unos segundos.When it's done, a notification appears for a few seconds. También puede seleccionar el icono de campana en la parte superior de la página para ver la notificación.You can also select the bell icon at the top of the page to view the notification.

Pasos siguientesNext steps

Ha creado una función que se ejecuta cuando se agrega o modifica un documento en su instancia de Azure Cosmos DB.You have created a function that runs when a document is added or modified in your Azure Cosmos DB. Para más información sobre los desencadenadores de Azure Cosmos DB, consulte Enlaces de Azure Cosmos DB para Azure Functions.For more information about Azure Cosmos DB triggers, see Azure Cosmos DB bindings for 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.Now that you've created your first function, let's add an output binding to the function that writes a message to a Storage queue.