Поделиться через


Краткое руководство: Отвечайте на изменения базы данных SQL Azure с помощью функций Azure

В этом кратком руководстве вы используете Visual Studio Code для создания приложения, которое отвечает на изменения в таблице базы данных SQL Azure. После локального тестирования кода вы развернете его в новом бессерверном приложении-функции, работающем в плане потребления Flex в Функциях Azure.

Источник проекта использует расширение Azure Developer CLI (azd) с Visual Studio Code для упрощения инициализации и проверки кода проекта локально и развертывания кода в Azure. Это развертывание следует текущим рекомендациям по безопасным и масштабируемым Функции Azure развертываниям.

Это важно

Поддержка реагирования на изменения в базе данных SQL Azure предоставляется для всех языков, но в этом сценарии быстрого старта в настоящее время есть примеры только для C#, Python и TypeScript. Чтобы завершить работу с этим кратким руководством, выберите один из этих поддерживаемых языков в верхней части статьи.

Предпосылки

  • Node.js 18.x или более поздней версии. Используйте команду node --version, чтобы проверить установленную версию.

Инициализируйте проект

Вы можете использовать azd init команду из палитры команд для создания локального проекта кода Функций Azure на основе шаблона.

  1. В Visual Studio Code откройте папку или рабочую область, в которой вы хотите создать проект.

  2. Нажмите клавишу F1 , чтобы открыть палитру команд, найдите и выполните команду Azure Developer CLI (azd): Initialize App (init), а затем выберите шаблон.

  3. При появлении запроса найдите и выберите Azure Functions with SQL Triggers and Bindings.

  4. При появлении запроса введите уникальное имя среды, например sqldbchanges.

Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области. В azdсреде используется для поддержания уникального контекста развертывания для приложения, и вы можете определить несколько. Это также часть имени группы ресурсов, создаваемой в Azure.

Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области. В azdсреде используется для поддержания уникального контекста развертывания для приложения, и вы можете определить несколько. Это также часть имени группы ресурсов, создаваемой в Azure.

Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области. В azdсреде используется для поддержания уникального контекста развертывания для приложения, и вы можете определить несколько. Это также часть имени группы ресурсов, создаваемой в Azure.

Прежде чем запускать приложение локально, необходимо создать ресурсы в Azure.

Создание ресурсов Azure

Этот проект настроен так, чтобы использовать команду azd provision для создания функционального приложения в плане потребления Flex, а также других необходимых ресурсов Azure, которые соответствуют текущим рекомендациям.

  1. В Visual Studio Code нажмите клавишу F1 , чтобы открыть палитру команд, найдите и выполните команду Azure Developer CLI (azd): Sign In with Azure Developer CLI, а затем войдите с помощью учетной записи Azure.

  2. Нажмите клавишу F1 , чтобы открыть палитру команд, выполните поиск и выполните команду Azure Developer CLI (azd): Provision Azure resources (provision) , чтобы создать необходимые ресурсы Azure.

  3. При появлении запроса в окне терминала укажите следующие необходимые параметры развертывания:

    Подсказка Description
    Выбор подписки Azure для использования Выберите подписку, в которой нужно создать ресурсы.
    Параметр развертывания расположения Регион Azure, в котором создается группа ресурсов, содержащая новые ресурсы Azure. Отображаются только регионы, поддерживающие план потребления Flex.
    Параметр развертывания vnetEnabled Хотя шаблон поддерживает создание ресурсов в виртуальной сети, чтобы упростить развертывание и тестирование, выберите False.

Команда azd provision использует ваш ответ на данные запросы с файлами конфигурации Bicep для создания и настройки этих необходимых ресурсов Azure, следуя последним наилучшим практикам.

  • План потребления и приложение-функция Flex
  • База данных SQL Azure (имя по умолчанию: ToDo)
  • служба хранилища Azure (обязательно) и Application Insights (рекомендуется)
  • Политики и роли доступа для учетной записи
  • Подключения между службами с помощью управляемых удостоверений (вместо хранимых строка подключения)

Перехватчики после подготовки также генерируют файл local.settings.json, который требуется для локального запуска. Этот файл содержит параметры, необходимые для подключения к базе данных в Azure.

Просмотр кода (необязательно)

В примере определяются две функции:

Имя функции Файл кода Тип триггера Description
httptrigger-sql-output sql_output_http_trigger.cs Триггер HTTP Принимает правильно отформатированные полезные данные JSON и использует выходную привязку SQL для вставки объекта в качестве строки в ToDo таблице.
ToDoTrigger sql_trigger.cs Триггер SQL Прослушивает таблицу ToDo для изменений на уровне строк и возвращает объект, представляющий измененную строку.

Тип ToDoItem определен в ToDoItem.cs.

Имя функции Файл кода Тип триггера Description
http_trigger_sql_output function_app.py Триггер HTTP Принимает правильно отформатированные полезные данные JSON и использует выходную привязку SQL для вставки объекта в качестве строки в ToDo таблице.
httptrigger-sql-output sql_trigger_todo Триггер SQL Прослушивает таблицу ToDo для изменений на уровне строк и возвращает объект, представляющий измененную строку.

Тип ToDoItem определен в todo_item.py.

Имя функции Файл кода Тип триггера Description
httpTriggerSqlOutput sql_output_http_trigger.ts Триггер HTTP Принимает правильно отформатированные полезные данные JSON и использует выходную привязку SQL для вставки объекта в качестве строки в ToDo таблице.
sqlTriggerToDo sql_trigger.ts Триггер SQL Прослушивает таблицу ToDo для изменений на уровне строк и возвращает объект, представляющий измененную строку.

Тип ToDoItem определен в ToDoItem.ts.

Обе функции используют переменные среды уровня AZURE_SQL_CONNECTION_STRING_KEY_* приложения, которые определяют подключение на основе удостоверения к экземпляру Azure SQL Database с аутентификацией через Microsoft Entra ID. Эти переменные среды создаются как в Azure (параметры приложения-функции), так и локально (local.settings.json) во время azd provision операции.

Подключение к базе данных SQL

Вы можете использовать расширение SQL Server (mssql) для Visual Studio Code для подключения к новой базе данных. Это расширение помогает вносить обновления в ToDo таблицу для запуска функции триггера SQL.

  1. Нажмите клавишу F1 и в палитре команд выполните поиск и выполните команду MS SQL: Add Connection.

  2. В диалоговом окне "Подключение" измените тип входных данных на "Обзор Azure ", а затем задайте следующие остальные параметры:

    Вариант Choose Description
    Сервер Экземпляр SQL Server По умолчанию отображаются все серверы, доступные вашей учетной записи Azure. Используйте подписку, группу ресурсов и расположение для фильтрации списка серверов.
    База данных ToDo База данных, созданная во время процесса подготовки.
    Тип проверки подлинности Идентификатор Microsoft Entra Если вы еще не вошли, выберите вход и войдите в учетную запись Azure.
    Идентификатор клиента Арендатор конкретной учетной записи. Если у вашей учетной записи несколько арендаторов, выберите подходящего арендатора для вашей подписки.
  3. Выберите "Подключиться", чтобы подключиться к базе данных. Подключение использует учетную запись локального пользователя, которая имеет права администратора на сервере размещения и сопоставляется с dbo в базе данных.

  4. В представлении SQL Server найдите и разверните Подключения, а затем новый сервер в обозревателе SQL Server. Разверните таблицы и убедитесь, что таблица ToDo существует. Если он не существует, может потребоваться выполнить azd provision повторно и проверить наличие ошибок.

Локальное выполнение функции

Visual Studio Code интегрируется с инструментами Azure Functions Core для запуска этого проекта на локальном компьютере разработки перед публикацией в новом приложении функций в Azure.

  1. Нажмите клавишу F1 и в палитре команд выполните поиск и выполните команду Azurite: Start.

  2. Чтобы запустить функцию локально, нажмите клавишу F5 или значок запуска и отладки на панели действий слева.

    На панели терминала отображаются выходные данные основных инструментов. Приложение запускается на панели терминала , и вы увидите имя функции, которая выполняется локально.

При запуске приложения можно проверить и отладить оба триггера функции.

Чтобы проверить функцию триггера HTTP, которая записывается в выходную привязку SQL:

  1. Скопируйте этот объект JSON, который также можно найти в test.http файле проекта:

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

    Эти данные представляют строку, вставленную в базу данных SQL при вызове конечной точки HTTP. Выходная привязка преобразует объект данных в INSERT операцию в базе данных.

  2. При запуске приложения в представлении Azure в разделе "Рабочая область" разверните функции локального проекта>.

  3. Щелкните правой кнопкой мыши функцию HTTP (или ctrl+щелкните macOS), выберите "Выполнить функцию", вставьте скопированные данные JSON и нажмите клавишу ВВОД.

    Функция обрабатывает HTTP-запрос и записывает элемент в подключенную базу данных SQL и возвращает созданный объект.

  4. Вернитесь в обозреватель SQL Server, щелкните таблицу правой кнопкой ToDo мыши (или Ctrl+щелчок на macOS) и выберите Выбрать первые 1000. При выполнении запроса возвращает вставленную или обновленную строку.

  5. Повторите шаг 3 и повторно отправьте один и тот же объект данных с тем же идентификатором. На этот раз выходное связывание выполняет операцию UPDATE вместо INSERT и изменяет существующую строку в базе данных.

По завершении введите CTRL+C в терминале, чтобы остановить процесс основных инструментов.

Развертывание в Azure

Вы можете выполнить команду azd deploy из Visual Studio Code, чтобы развернуть код проекта на уже созданных ресурсах в Azure.

  1. Нажмите клавишу F1 , чтобы открыть палитру команд, выполните поиск и выполните команду Azure Developer CLI (azd): Deploy to Azure (deploy).

    Команда azd deploy упаковывает и развёртывает ваш код в контейнер для развёртывания. Затем приложение запускается и запускается в развернутом пакете.

  2. После успешного выполнения команды приложение запущено в Azure. Запишите значение Endpoint, которое является URL-адресом вашего функционального приложения, запущенного в Azure.

Вызов функции в Azure

  1. В Visual Studio Code нажмите клавишу F1 и в палитре команд найдите и выполните команду Azure: Open in portal, выберите Function appи выберите новое приложение. При необходимости войдите с помощью учетной записи Azure.

  2. Выберите поток журнала в левой панели, которая подключается к журналам Application Insights для вашего приложения.

  3. Вернитесь в Visual Studio Code, чтобы запустить обе функции в Azure.

  1. Нажмите клавишу F1 , чтобы открыть палитру команд, выполните поиск и выполните команду Azure Functions: Execute Function Now....

  2. Найдите и выберите приложение удаленной функции из списка, а затем выберите функцию триггера HTTP.

  3. Как и раньше, вставьте данные объекта JSON в поле ввода полезной нагрузки Введите тело полезной нагрузки и нажмите клавишу ВВОД.

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

    Чтобы выполнить INSERT вместо UPDATE, замените id на новое значение GUID.

  4. Вернитесь на портал и просмотрите выходные данные выполнения в окне журнала.

Очистите ресурсы

Когда вы закончите работу с приложением-функцией и связанными ресурсами, эту команду можно использовать для удаления приложения-функции и связанных ресурсов из Azure и предотвращения дополнительных затрат:

azd down --no-prompt

Замечание

Параметр --no-prompt указывает azd удалить группу ресурсов без подтверждения.

Эта команда не влияет на локальный проект кода.