Compartir a través de


Inicio rápido: Respuesta a los cambios de base de datos en Azure Cosmos DB mediante Azure Functions

En este inicio rápido, usará Visual Studio Code para compilar una aplicación que responda a los cambios de base de datos en una base de datos No SQL en Azure Cosmos DB. Después de probar el código localmente, se implementa en una nueva aplicación de funciones sin servidor que se crea en ejecución en un plan de consumo flexible en Azure Functions.

El origen del proyecto usa la extensión de la CLI para desarrolladores de Azure (azd) con Visual Studio Code para simplificar la inicialización y comprobación del código del proyecto localmente, así como la implementación del código en Azure. Esta implementación sigue los procedimientos recomendados actuales para implementaciones seguras y escalables de Azure Functions.

Importante

Aunque se admiten respuestas a cambios en una base de datos No SQL de Azure Cosmos DB para todos los lenguajes, este escenario de inicio rápido solo tiene actualmente ejemplos para C#, Python y TypeScript. Para completar este inicio rápido, seleccione uno de estos idiomas admitidos en la parte superior del artículo.

Prerrequisitos

  • Node.js 18.x o superior. Use el comando node --version para comprobar la versión.

Inicialización del proyecto

Puede usar el azd init comando de la paleta de comandos para crear un proyecto de código local de Azure Functions a partir de una plantilla.

  1. En Visual Studio Code, abra una carpeta o un área de trabajo en la que desea crear el proyecto.

  2. Presione F1 para abrir la paleta de comandos, busque y ejecute el comando Azure Developer CLI (azd): Initialize App (init)y elija Seleccionar una plantilla.

    Es posible que haya un ligero retraso al azd inicializar la carpeta o el área de trabajo actuales.

  1. Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione Azure Functions with Cosmos DB Bindings (.NET).

  2. Cuando se le solicite, escriba un nombre de entorno único, como cosmosdbchanges-dotnet.

    Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual. En azd, el entorno se usa para mantener un contexto de implementación único para la aplicación y puede definir más de uno. También forma parte del nombre del grupo de recursos que crea en Azure.

  1. Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione Azure Functions TypeScript CosmosDB trigger.

  2. Cuando se le solicite, escriba un nombre de entorno único, como cosmosdbchanges-ts.

    Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual. En azd, el entorno se usa para mantener un contexto de implementación único para la aplicación y puede definir más de uno. También forma parte del nombre del grupo de recursos que crea en Azure.

  1. Cuando se le solicite, elija Seleccionar una plantilla y busque y seleccione Azure Functions Python with CosmosDB triggers and bindings....

  2. Cuando se le solicite, escriba un nombre de entorno único, como cosmosdbchanges-py.

    Este comando extrae los archivos de proyecto del repositorio de plantillas e inicializa el proyecto en la carpeta o área de trabajo actual. En azd, el entorno se usa para mantener un contexto de implementación único para la aplicación y puede definir más de uno. También forma parte del nombre del grupo de recursos que crea en Azure.

  1. Ejecute este comando, en función del sistema operativo local, para conceder a los scripts de configuración los permisos necesarios:

    Ejecute este comando con privilegios suficientes:

    chmod +x ./infra/scripts/*.sh
    

Para poder ejecutar la aplicación localmente, debe crear los recursos en Azure. Este proyecto no usa la emulación local para Azure Cosmos DB.

Creación de recursos de Azure

Este proyecto está configurado para usar el azd provision comando para crear una aplicación de funciones en un plan de consumo flexible, junto con otros recursos de Azure necesarios que siguen los procedimientos recomendados actuales.

  1. En Visual Studio Code, presione F1 para abrir la paleta de comandos, busque y ejecute el comando Azure Developer CLI (azd): Sign In with Azure Developer CLIy, a continuación, inicie sesión con su cuenta de Azure.

  2. Presione F1 para abrir la paleta de comandos, busque y ejecute el comando Azure Developer CLI (azd): Provision Azure resources (provision) para crear los recursos de Azure necesarios:

  3. Cuando se le solicite en la ventana Terminal, proporcione estos parámetros de implementación necesarios:

    Pronto Description
    Selección de una suscripción de Azure que se va a usar Elija la suscripción en la que desea que se creen los recursos.
    parámetro de implementación de ubicación Región de Azure en la que se va a crear el grupo de recursos que contiene los nuevos recursos de Azure. Solo se muestran las regiones que admiten actualmente el Plan de consumo flexible.
    Parámetro de implementación vnetEnabled Aunque la plantilla admite la creación de recursos dentro de una red virtual, para simplificar la implementación y las pruebas, elija False.

    El azd provision comando usa la respuesta a estos mensajes con los archivos de configuración de Bicep para crear y configurar estos recursos de Azure necesarios, siguiendo los procedimientos recomendados más recientes:

    • Plan de consumo flexible y aplicación de funciones
    • Cuenta de Azure Cosmos DB
    • Azure Storage (obligatorio) y Application Insights (recomendado)
    • Directivas y roles de acceso para la cuenta
    • Conexiones de servicio a servicio mediante identidades administradas (en lugar de cadenas de conexión almacenadas)

    Los enlaces posteriores al aprovisionamiento también generan el archivo local.settings.json necesario al ejecutarse localmente. Este archivo también contiene la configuración necesaria para conectarse a la base de datos de Azure Cosmos DB en Azure.

    Sugerencia

    Si se produce un error en los pasos durante el aprovisionamiento, puede volver a ejecutar el azd provision comando después de resolver los problemas.

    Una vez completado correctamente el comando, puede ejecutar el código del proyecto localmente y desencadenarlo en la base de datos de Azure Cosmos DB en Azure.

Ejecución local de la función

Visual Studio Code se integra con azure Functions Core Tools para permitirle ejecutar este proyecto en el equipo de desarrollo local antes de publicar en la nueva aplicación de funciones en Azure.

  1. Presione F1 y, en la paleta de comandos, busque y ejecute el comando Azurite: Start.

  2. Para iniciar la función localmente, presione F5 o el icono Ejecutar y depurar en la barra de actividad del lado izquierdo. El panel Terminal muestra la salida de Core Tools. La aplicación se inicia en el panel Terminal y puede ver el nombre de la función que se ejecuta localmente.

    Si tiene problemas para ejecutarlo en Windows, asegúrese de que el terminal predeterminado de Visual Studio Code no esté establecido en WSL Bash.

  3. Con Core Tools todavía ejecutándose en Terminal, presione F1 y, en la paleta de comandos, busque y ejecute el comando NoSQL: Create Item... y seleccione la document-db base de datos y el documents contenedor.

  4. Reemplace el contenido del nuevo archivo Item.json por estos datos JSON y seleccione Guardar:

    {
        "id": "doc1", 
        "title": "Sample document", 
        "content": "This is a sample document for testing my Azure Cosmos DB trigger in Azure Functions."
    } 
    

    Después de seleccionar Guardar, verá la ejecución de la función en el terminal y el documento local se actualiza para incluir los metadatos agregados por el servicio.

  5. Cuando haya terminado, presione Ctrl+C en la ventana del terminal para detener el proceso de host de func.exe.

Revisión del código (opcional)

La función se desencadena en función de la fuente de cambios en una base de datos NoSQL de Azure Cosmos DB. Estas variables de entorno configuran cómo el desencadenador supervisa la fuente de cambios:

  • COSMOS_CONNECTION__accountEndpoint: el punto de conexión de la cuenta de Cosmos DB
  • COSMOS_DATABASE_NAME: el nombre de la base de datos que se va a supervisar.
  • COSMOS_CONTAINER_NAME: el nombre del contenedor que se va a supervisar.

Estas variables de entorno se crean automáticamente en Azure (configuración de la aplicación de funciones) y localmente (local.settings.json) durante la azd provision operación.

Puede revisar el código que define el desencadenador de Azure Cosmos DB en el archivo de proyecto de CosmosTrigger.cs.

Puede revisar el código que define el desencadenador de Azure Cosmos DB en el archivo de proyecto de cosmos_trigger.ts.

Puede revisar el código que define el desencadenador de Azure Cosmos DB en el archivo de proyecto de function_app.py.

Después de revisar y comprobar el código de función localmente, es el momento de publicar el proyecto en Azure.

Implementación en Azure

Puede ejecutar el azd deploy comando desde Visual Studio Code para implementar el código del proyecto en los recursos ya aprovisionados en Azure.

  • Presione F1 para abrir la paleta de comandos, busque y ejecute el comando Azure Developer CLI (azd): Deploy to Azure (deploy).

    El azd deploy comando empaqueta e implementa el código en el contenedor de implementación. A continuación, la aplicación se inicia y se ejecuta en el paquete implementado.

    Una vez completado correctamente el comando, la aplicación se ejecuta en Azure.

Invocación de la función en Azure

  1. En Visual Studio Code, presione F1 y, en la paleta de comandos, busque y ejecute el comando Azure: Open in portal, seleccione Function appy elija la nueva aplicación. Inicie sesión con su cuenta de Azure, si es necesario.

    Este comando abre la nueva aplicación de funciones en Azure Portal.

  2. En la pestaña Información general de la página principal, seleccione el nombre de la aplicación de funciones y, a continuación, la pestaña Registros .

  3. Use el NoSQL: Create Item comando en Visual Studio Code para agregar de nuevo un documento al contenedor como antes.

  4. Compruebe de nuevo que la función se desencadene mediante una actualización en el contenedor supervisado.

Reimplementación del código

Puede ejecutar el azd deploy comando tantas veces como necesite para implementar actualizaciones de código en la aplicación de funciones.

Nota:

El paquete de implementación más reciente siempre sobrescribe los archivos de código implementados.

Las respuestas iniciales a azd mensajes y las variables de entorno generadas por azd se almacenan localmente en el entorno con nombre. Use el comando azd env get-values para revisar todas las variables del entorno que se usaron al crear recursos de Azure.

Limpieza de recursos

Cuando haya terminado de trabajar con la aplicación de funciones y los recursos relacionados, puede usar este comando para eliminar la aplicación de funciones y sus recursos relacionados de Azure y evitar incurrir en costos adicionales:

azd down --no-prompt

Nota:

La --no-prompt opción indica azd que elimine el grupo de recursos sin una confirmación de usted.

Este comando no afecta al proyecto de código local.