Хранение неструктурированных данных с помощью Azure Cosmos DB и службы "Функции Azure"

Azure Cosmos DB — это отличный способ хранения неструктурированных данных и данных в формате JSON. В сочетании с функциями Azure Cosmos DB позволяет быстро и просто сохранять данные, используя код гораздо меньшего объема, чем требуется для хранения данных в реляционной базе данных.

Примечание

Сейчас триггер, входные и выходные привязки Azure Cosmos DB работают только с учетными записями API SQL и API Graph.

В Функциях Azure входные и выходные привязки предоставляют декларативный способ подключения данных внешних служб к функции. В этой статье вы узнаете, как обновить имеющуюся функцию, чтобы добавить выходную привязку, которая сохраняет неструктурированные данные в документе Azure Cosmos DB.

Предварительные требования

Для работы с этим руководством сделайте следующее:

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

создание учетной записи Azure Cosmos DB;

Перед созданием выходной привязки необходимо получить учетную запись Azure Cosmos DB с API SQL.

  1. From the Azure portal menu or the Home page, select Create a resource.

  2. On the New page, search for and select Azure Cosmos DB.

  3. On the Azure Cosmos DB page, select Create.

  4. In the Create Azure Cosmos DB Account page, enter the basic settings for the new Azure Cosmos account.

    Setting Value Description
    Subscription Subscription name Select the Azure subscription that you want to use for this Azure Cosmos account.
    Resource Group Resource group name Select a resource group, or select Create new, then enter a unique name for the new resource group.
    Account Name A unique name Enter a name to identify your Azure Cosmos account. Because documents.azure.com is appended to the name that you provide to create your URI, use a unique name.

    The name can only contain lowercase letters, numbers, and the hyphen (-) character. It must be between 3-31 characters in length.
    API The type of account to create Select Core (SQL) to create a document database and query by using SQL syntax.

    The API determines the type of account to create. Azure Cosmos DB provides five APIs: Core (SQL) and MongoDB for document data, Gremlin for graph data, Azure Table, and Cassandra. Currently, you must create a separate account for each API.

    Learn more about the SQL API.
    Location The region closest to your users Select a geographic location to host your Azure Cosmos DB account. Use the location that is closest to your users to give them the fastest access to the data.
    Capacity mode Provisioned throughput or Serverless Select Provisioned throughput to create an account in provisioned throughput mode. Select Serverless to create an account in serverless mode.
    Apply Azure Cosmos DB free tier discount Apply or Do not apply With Azure Cosmos DB free tier, you will get the first 1000 RU/s and 25 GB of storage for free in an account. Learn more about free tier.

    Примечание

    You can have up to one free tier Azure Cosmos DB account per Azure subscription and must opt-in when creating the account. 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.

    The new account page for Azure Cosmos DB

  5. In the Global Distribution tab, configure the following details. You can leave the default values for the purpose of this quickstart:

    Setting Value Description
    Geo-Redundancy Disable Enable or disable global distribution on your account by pairing your region with a pair region. You can add more regions to your account later.
    Multi-region Writes Disable Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe.

    Примечание

    The following options are not available if you select Serverless as the Capacity mode:

    • Apply Free Tier Discount
    • Geo-redundancy
    • Multi-region Writes
  6. Optionally you can configure additional details in the following tabs:

    • Networking - Configure access from a virtual network.
    • Backup Policy - Configure either periodic or continuous backup policy.
    • Encryption - Use either service-managed key or a customer-managed key.
    • Tags - Tags are name/value pairs that enable you to categorize resources and view consolidated billing by applying the same tag to multiple resources and resource groups.
  7. Select Review + create.

  8. Review the account settings, and then select Create. It takes a few minutes to create the account. Wait for the portal page to display Your deployment is complete.

    The Azure portal Notifications pane

  9. Select Go to resource to go to the Azure Cosmos DB account page.

    The Azure Cosmos DB account page

Добавление выходной привязки

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

  2. Выберите Функции, а затем выберите функцию HttpTrigger.

    Выберите нужную функцию на портале Azure.

  3. Последовательно выберите Интеграция и Добавить вывод.

    Добавление выходной привязки к Azure Cosmos DB.

  4. Укажите приведенные в таблице значение в области Добавить вывод.

    Настройка выходной привязки к Azure Cosmos B.

    Параметр Рекомендуемое значение Описание
    Тип привязки Azure Cosmos DB Имя типа привязки, которое нужно выбрать для создания выходной привязки к Azure Cosmos DB.
    Имя параметра документа taskDocument Имя, которое ссылается на объект Cosmos DB в коде.
    Имя базы данных taskDatabase Имя базы данных для сохранения документов.
    Имя коллекции taskCollection Имя коллекции базы данных.
    If true, creates the Cosmos DB database and collection (Если значение равно true, создается база данных Cosmos DB и коллекция) Да Коллекция не существует, создайте ее.
    Подключение к учетной записи Cosmos DB Новый параметр Щелкните Создать, выберите вариант Учетная запись Azure Cosmos DB и созданную ранее учетную запись базы данных, а затем щелкните OK. Создает параметр приложения для подключения к учетной записи. Этот параметр используется в привязке для подключения к базе данных.
  5. Нажмите ОК, чтобы создать привязку.

Обновление кода функции

Замените имеющийся код функции следующим кодом для выбранного языка:

Замените имеющуюся функцию C# следующим кодом:

#r "Newtonsoft.Json"

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

public static IActionResult Run(HttpRequest req, out object taskDocument, ILogger log)
{
    string name = req.Query["name"];
    string task = req.Query["task"];
    string duedate = req.Query["duedate"];

    // We need both name and task parameters.
    if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(task))
    {
        taskDocument = new
        {
            name,
            duedate,
            task
        };

        return (ActionResult)new OkResult();
    }
    else
    {
        taskDocument = null;
        return (ActionResult)new BadRequestResult();
    }
}

Этот пример кода считывает строки HTTP-запроса и назначает их в качестве полей объекта taskDocument. Привязка taskDocument отправляет данные объекта из этого параметра привязки для их сохранения в связанной базе данных документов. База данных создается при первом запуске функции.

Тестирование функции и базы данных

  1. Выберите Тест и "Выполнить". В разделе Запрос щелкните Добавить параметр и добавьте в строку запроса следующие параметры.

    • name
    • task
    • duedate

    Тестирование функции.

  2. Щелкните Выполнить и убедитесь, что возвращается состояние 200.

    Снимок экрана: код HTTP-отклика с состоянием 200, выделенный после выбора пункта "Выполнить".

  3. На портале Azure найдите и выберите Azure Cosmos DB.

    Поиск службы Cosmos DB.

  4. Выберите нужную учетную запись Azure Cosmos DB, а затем щелкните Обозреватель данных.

  5. Разверните узлы TaskCollection, выберите новый документ и убедитесь, что этот документ содержит ваши значения для строки запроса, а также некоторые дополнительные метаданные.

    Проверка строковых значений в документе.

Вы успешно добавили привязку к триггеру HTTP, которая сохраняет неструктурированные данные в Azure Cosmos DB.

Очистка ресурсов

На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы считаете, что в будущем эти ресурсы вам не понадобятся, их можно удалить, удалив группу ресурсов.

В меню или на странице Главная портала Azure выберите Группы ресурсов. Затем на странице Группы ресурсов выберите myResourceGroup.

На странице myResourceGroup убедитесь, что перечислены те ресурсы, которые нужно удалить.

Выберите Удалить группу ресурсов, введите myResourceGroup в текстовое поле для подтверждения и щелкните Удалить.

Дальнейшие действия

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