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


Быстрый старт: Реагирование на изменения базы данных в Azure Cosmos DB с помощью Azure Functions

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

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

Это важно

Реагирование на изменения в базе данных Azure Cosmos DB NoSQL поддерживается для всех языков, однако, в этом сценарии быстрого старта в настоящее время содержатся примеры только для 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), а затем выберите шаблон.

    При инициализации azd текущей папки или рабочей области может возникнуть небольшая задержка.

  1. При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите Azure Functions with Cosmos DB Bindings (.NET).

  2. При появлении запроса введите уникальное имя среды, например cosmosdbchanges-dotnet.

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

  1. При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите Azure Functions TypeScript CosmosDB trigger.

  2. При появлении запроса введите уникальное имя среды, например cosmosdbchanges-ts.

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

  1. При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите Azure Functions Python with CosmosDB triggers and bindings....

  2. При появлении запроса введите уникальное имя среды, например cosmosdbchanges-py.

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

  1. Выполните эту команду в зависимости от локальной операционной системы, чтобы предоставить скрипты конфигурации необходимым разрешениям:

    Выполните следующую команду с достаточными привилегиями:

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

Прежде чем запускать приложение локально, необходимо создать ресурсы в Azure. Этот проект не использует локальную эмуляцию для Azure Cosmos DB.

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

Этот проект настроен для использования команды azd provision для создания приложения-функции в Flex Consumption плане, а также других необходимых ресурсов 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
    • Учетная запись Azure Cosmos DB
    • служба хранилища Azure (обязательно) и Application Insights (рекомендуется)
    • Политики и роли доступа для учетной записи
    • Подключения между службами с помощью управляемых удостоверений (вместо хранимых строка подключения)

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

    Подсказка

    Если какой-либо шаг завершился сбоем во время подготовки, вы можете снова запустить команду azd provision после устранения возникших проблем.

    После успешного выполнения команды можно запустить код проекта локально и активировать его в базе данных Azure Cosmos DB в Azure.

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

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

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

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

    При возникновении проблем с запуском в Windows убедитесь, что в качестве терминала по умолчанию для Visual Studio Code не используется WSL Bash.

  3. При работе с основными инструментами в Терминале, нажмите F1 и в палитре команд найдите и выполните команду NoSQL: Create Item..., выберите как document-db базу данных, так и documents контейнер.

  4. Замените содержимое файла New Item.json данными JSON и нажмите кнопку "Сохранить".

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

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

  5. По завершении нажмите клавиши CTRL+C в окне терминала, чтобы остановить func.exe процесс узла.

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

Функция активируется на основе канала изменений в базе данных NoSQL Azure Cosmos DB. Эти переменные среды настраивают, как триггер отслеживает канал изменений:

  • COSMOS_CONNECTION__accountEndpoint: конечная точка учетной записи Cosmos DB
  • COSMOS_DATABASE_NAME: имя базы данных для мониторинга
  • COSMOS_CONTAINER_NAME: имя контейнера для мониторинга

Эти переменные среды создаются как в Azure (параметры приложения-функции), так и локально (local.settings.json) во время azd provision операции.

Вы можете просмотреть код, определяющий триггер Azure Cosmos DB в файле проекта CosmosTrigger.cs.

Вы можете просмотреть код, определяющий триггер Azure Cosmos DB в файле проекта cosmos_trigger.ts.

Вы можете просмотреть код, определяющий триггер Azure Cosmos DB в файле проекта function_app.py.

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

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

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

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

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

    После успешного выполнения команды приложение запущено в Azure.

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

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

    Эта команда открывает новое приложение-функцию на портале Azure.

  2. На вкладке "Обзор" на главной странице выберите имя вашего функционального приложения, а затем вкладку "Журналы".

  3. NoSQL: Create Item Используйте команду в Visual Studio Code, чтобы снова добавить документ в контейнер, как и раньше.

  4. Убедитесь, что функция активируется обновлением в отслеживаемом контейнере.

Повторное развертывание кода

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

Замечание

Развернутые файлы кода всегда перезаписываются последним пакетом развертывания.

Исходные ответы на azd запросы и любые переменные среды, созданные с помощью azd , хранятся локально в именованной среде. azd env get-values Используйте команду, чтобы просмотреть все переменные в вашей среде, которые использовались при создании ресурсов Azure.

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

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

azd down --no-prompt

Замечание

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

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