Compartir vía


Inicio rápido: Respuesta a los cambios de Azure SQL Database mediante Azure Functions

En este inicio rápido, usará Visual Studio Code para compilar una aplicación que responda a los cambios en una tabla de Azure SQL Database. Después de probar el código localmente, se implementa en una nueva aplicación de funciones sin servidor que se ejecuta 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 e implementar el 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 de Azure SQL 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.

  3. Cuando se le solicite, busque y seleccione Azure Functions with SQL Triggers and Bindings.

  4. Cuando se le solicite, escriba un nombre de entorno único, como sqldbchanges.

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.

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.

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.

Para poder ejecutar la aplicación localmente, debe crear los recursos en Azure.

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 Seleccione 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
  • Azure SQL Database (nombre predeterminado: ToDo)
  • 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, que se necesita para su ejecución local. Este archivo contiene la configuración necesaria para conectarse a la base de datos en Azure.

Revisión del código (opcional)

En el ejemplo se definen dos funciones:

Nombre de la función Archivo de código Tipo de desencadenador Description
httptrigger-sql-output sql_output_http_trigger.cs Desencadenador HTTP Acepta una carga JSON con el formato correcto y usa el enlace de salida de SQL para insertar el objeto como una fila en la ToDo tabla.
ToDoTrigger sql_trigger.cs Desencadenador de SQL Escucha en la ToDo tabla los cambios de nivel de fila y devuelve un objeto que representa la fila modificada.

El ToDoItem tipo se define en ToDoItem.cs.

Nombre de la función Archivo de código Tipo de desencadenador Description
http_trigger_sql_output function_app.py Desencadenador HTTP Acepta una carga JSON con el formato correcto y usa el enlace de salida de SQL para insertar el objeto como una fila en la ToDo tabla.
httptrigger-sql-output sql_trigger_todo Desencadenador de SQL Escucha en la ToDo tabla los cambios de nivel de fila y devuelve un objeto que representa la fila modificada.

El ToDoItem tipo se define en todo_item.py.

Nombre de la función Archivo de código Tipo de desencadenador Description
httpTriggerSqlOutput sql_output_http_trigger.ts Desencadenador HTTP Acepta una carga JSON con el formato correcto y usa el enlace de salida de SQL para insertar el objeto como una fila en la ToDo tabla.
sqlTriggerToDo sql_trigger.ts Desencadenador de SQL Escucha en la ToDo tabla los cambios de nivel de fila y devuelve un objeto que representa la fila modificada.

El ToDoItem tipo se define en ToDoItem.ts.

Ambas funciones usan las variables de entorno a nivel de aplicación AZURE_SQL_CONNECTION_STRING_KEY_* que definen una conexión basada en identidades a la instancia de Azure SQL Database utilizando la autenticación de Microsoft Entra ID. 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.

Conexión a la base de datos SQL

Puede usar la extensión de SQL Server (mssql) para Visual Studio Code para conectarse a la nueva base de datos. Esta extensión le ayuda a realizar actualizaciones en la ToDo tabla para ejecutar la función desencadenador de SQL.

  1. Presione F1 y, en la paleta de comandos, busque y ejecute el comando MS SQL: Add Connection.

  2. En el cuadro de diálogo Conexión, cambie Tipo de entrada a Examinar Azure y, a continuación, establezca estas opciones restantes:

    Opción Choose Description
    Servidor La instancia de SQL Server De forma predeterminada, se muestran todos los servidores accesibles para su cuenta de Azure. Use suscripción, grupo de recursos y ubicación para ayudar a filtrar la lista de servidores.
    Base de datos ToDo La base de datos creada durante el proceso de aprovisionamiento.
    Tipo de autenticación Microsoft Entra ID Si aún no ha iniciado sesión, seleccione Iniciar sesión e iniciar sesión en su cuenta de Azure.
    Id. de inquilino Inquilino de cuenta específico. Si la cuenta tiene más de un inquilino, elija el inquilino correcto para la suscripción.
  3. Seleccione Conectar para conectarse a la base de datos. La conexión usa la cuenta de usuario local, a la que se conceden permisos de administrador en el servidor de hospedaje y se asigna a dbo en la base de datos.

  4. En la vista de SQL Server , busque y expanda Conexiones y, a continuación, el nuevo servidor en el Explorador de SQL Server. Expanda Tablas y compruebe que la ToDo tabla existe. Si no existe, es posible que necesite volver a ejecutarse azd provision y comprobar si hay errores.

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.

Con la aplicación en ejecución, puede comprobar y depurar ambos desencadenadores de función.

Para comprobar la función de desencadenador HTTP que escribe en una vinculación de salida de SQL:

  1. Copie este objeto JSON, que también puede encontrar en el archivo del test.http proyecto:

    {
      "id": "11111111-1111-1111-1111-111111111111",
      "order": 1,
      "title": "Test Todo Item",
      "url": "https://example.com",
      "completed": false
    }
    

    Estos datos representan una fila que se inserta en la base de datos SQL al llamar al punto de conexión HTTP. El enlace de salida convierte el objeto de datos en una operación INSERT de la base de datos.

  2. Con la aplicación en ejecución, en la vista Azure, en Workspace expanda proyecto local>Funciones.

  3. Seleccione con el botón derecho la función HTTP (o Ctrl+clic en macOS), seleccione Ejecutar función ahora, pegue los datos JSON copiados y presione Entrar.

    La función controla la solicitud HTTP y escribe el elemento en la base de datos SQL conectada y devuelve el objeto creado.

  4. De nuevo en el Explorador de SQL Server, seleccione la tabla ToDo (o Ctrl+clic en macOS) y elija Seleccionar Top 1000. Cuando se ejecuta la consulta, devuelve la fila insertada o actualizada.

  5. Repita el paso 3 y vuelva a enviar el mismo objeto de datos con el mismo identificador. Esta vez, el enlace de salida realiza una operación de UPDATE en lugar de INSERT, y modifica la fila existente en la base de datos.

Cuando haya terminado, escriba Ctrl+C en el terminal para detener el proceso de Core Tools.

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.

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

  2. Una vez completado correctamente el comando, la aplicación se ejecuta en Azure. Anote el valor Endpoint, que es la dirección URL de la aplicación de función que 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.

  2. Seleccione Transmisión de registros en el panel izquierdo, que se conecta a los registros de Application Insights de tu aplicación.

  3. Vuelva a Visual Studio Code para ejecutar ambas funciones en Azure.

  1. Presione F1 para abrir la paleta de comandos, busque y ejecute el comando Azure Functions: Execute Function Now....

  2. Busque y seleccione la aplicación de funciones remotas en la lista y, a continuación, seleccione la función desencadenador HTTP.

  3. Como antes, inserte los datos del objeto JSON en Ingrese cuerpo de carga y presione Entrar.

    {
      "id": "11111111-1111-1111-1111-111111111111",
      "order": 1,
      "title": "Test Todo Item",
      "url": "https://example.com",
      "completed": false
    }
    

    Para realizar un INSERT en lugar de un UPDATE, reemplace el id con un nuevo valor GUID.

  4. Vuelva al portal y vea la salida de ejecución en la ventana de registro.

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.