Przechowywanie danych niestrukturalnych przy użyciu usług Azure Functions i Azure Cosmos DB

Usługa Azure Cosmos DB to doskonały sposób przechowywania danych bez struktury i JSON. W połączeniu z Azure Functions usługa Azure Cosmos DB umożliwia szybkie i łatwe przechowywanie danych przy użyciu znacznie mniejszego kodu niż wymagany do przechowywania danych w relacyjnej bazie danych.

Uwaga

W tej chwili wyzwalacz usługi Azure Cosmos DB, powiązania danych wejściowych i powiązania danych wyjściowych współpracują tylko z kontami interfejsu API SQL i interfejsu API programu Graph.

W usłudze Azure Functions powiązania danych wejściowych i wyjściowych zapewniają deklaratywną metodę łączenia z danymi usług zewnętrznych z funkcji. W tym artykule opisano, jak zaktualizować istniejącą funkcję w celu dodania powiązania danych wyjściowych, które zapisuje dane bez struktury w dokumencie usługi Azure Cosmos DB.

Wymagania wstępne

W celu ukończenia tego samouczka:

Do wykonania czynności przedstawionych w tym temacie są wymagane zasoby utworzone w temacie Tworzenie pierwszej funkcji w witrynie Azure Portal. Jeśli jeszcze ich nie utworzono, wykonaj teraz te kroki, aby utworzyć aplikację funkcji.

Tworzenie konta usługi Azure Cosmos DB

Do utworzenia powiązania danych wyjściowych konieczne jest posiadanie konta usługi Azure Cosmos DB, które używa interfejsu API SQL.

  1. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób.

  2. Wyszukaj usługę Azure Cosmos DB. Wybierz pozycję Utwórz usługę>Azure Cosmos DB.

  3. Na stronie Tworzenie konta usługi Azure Cosmos DB wybierz opcję Utwórz w sekcji Azure Cosmos DB for NoSQL .

    Usługa Azure Cosmos DB udostępnia kilka interfejsów API:

    • NoSQL — dane dokumentu
    • PostgreSQL
    • Baza danych MongoDB dla danych dokumentów
    • Apache Cassandra
    • Tabela
    • Apache Gremlin dla danych grafu

    Aby dowiedzieć się więcej na temat interfejsu API dla noSQL, zobacz Witamy w usłudze Azure Cosmos DB.

  4. Na stronie Tworzenie konta usługi Azure Cosmos DB wprowadź podstawowe ustawienia nowego konta usługi Azure Cosmos DB.

    Ustawienie Wartość Opis
    Subskrypcja Nazwa subskrypcji Wybierz subskrypcję platformy Azure, której chcesz użyć dla tego konta usługi Azure Cosmos DB.
    Grupa zasobów Nazwa grupy zasobów Wybierz grupę zasobów lub wybierz pozycję Utwórz nową, a następnie wprowadź unikatową nazwę nowej grupy zasobów.
    Nazwa konta Unikatowa nazwa Wprowadź nazwę, aby zidentyfikować konto usługi Azure Cosmos DB. Ponieważ adres documents.azure.com jest dołączany do podanej nazwy w celu utworzenia identyfikatora URI, użyj unikatowej nazwy. Nazwa może zawierać tylko małe litery, cyfry i znak łącznika (-). Musi mieć od 3 do 44 znaków.
    Lokalizacja Region najbliżej Twoich użytkowników Wybierz lokalizację geograficzną, w której będzie hostowane konto usługi Azure Cosmos DB. Użyj lokalizacji znajdującej się najbliżej Twoich użytkowników, aby zapewnić im najszybszy dostęp do danych.
    Tryb wydajności Aprowizowana przepływność lub bezserwerowa Wybierz pozycję Aprowizowana przepływność , aby utworzyć konto w trybie aprowizowanej przepływności . Wybierz pozycję Bezserwerowa , aby utworzyć konto w trybie bezserwerowym .
    Stosowanie rabatu za bezpłatną warstwę usługi Azure Cosmos DB Zastosuj lub nie zastosuj W przypadku bezpłatnej warstwy usługi Azure Cosmos DB uzyskasz pierwsze 1000 RU/s i 25 GB miejsca do magazynowania bezpłatnie na koncie. Dowiedz się więcej o warstwie Bezpłatna.
    Ograniczanie całkowitej przepływności konta Wybrane lub nie Ogranicz łączną ilość przepływności, którą można aprowizować na tym koncie. Ten limit uniemożliwia nieoczekiwane opłaty związane z aprowizowaną przepływnością. Ten limit można zaktualizować lub usunąć po utworzeniu konta.

    Możesz mieć maksymalnie jedno konto usługi Azure Cosmos DB w warstwie Bezpłatna na subskrypcję platformy Azure i musi wyrazić zgodę podczas tworzenia konta. Jeśli nie widzisz opcji zastosowania rabatu w warstwie Bezpłatna, inne konto w subskrypcji zostało już włączone z warstwą Bezpłatna.

    Zrzut ekranu przedstawia stronę Tworzenie konta usługi Azure Cosmos DB.

    Uwaga

    Następujące opcje nie są dostępne, jeśli wybierzesz opcję Bezserwerowy jako tryb pojemności:

    • Zastosuj rabat na podstawie warstwy Bezpłatna
    • Ograniczanie całkowitej przepływności konta
  5. Na karcie Dystrybucja globalna skonfiguruj następujące szczegóły. Możesz pozostawić wartości domyślne dla tego przewodnika Szybki start:

    Ustawienie Wartość Opis
    Nadmiarowość geograficzna Wyłącz Włącz lub wyłącz dystrybucję globalną na koncie, łącząc region z regionem pary. Możesz dodać więcej regionów do konta później.
    Moduły zapisujące obsługujące wiele regionów Wyłącz Funkcja zapisu w wielu regionach umożliwia wykorzystanie aprowizowanej przepływności dla baz danych i kontenerów na całym świecie.
    Strefy dostępności Wyłącz Strefy dostępności pomóc w dalszym ulepszaniu dostępności i odporności aplikacji.

    Uwaga

    Następujące opcje nie są dostępne, jeśli wybierzesz pozycję Bezserwerowyjako tryb pojemności na poprzedniej stronie Podstawowe :

    • Nadmiarowość geograficzna
    • Moduły zapisujące obsługujące wiele regionów
  6. Opcjonalnie możesz skonfigurować więcej szczegółów na następujących kartach:

    • Sieć. Konfigurowanie dostępu z sieci wirtualnej.
    • Zasady tworzenia kopii zapasowych. Skonfiguruj okresowe lub ciągłe zasady tworzenia kopii zapasowych .
    • Szyfrowanie. Użyj klucza zarządzanego przez usługę lub klucza zarządzanego przez klienta.
    • Tagi. Tagi to pary nazw/wartości, które umożliwiają kategoryzowanie zasobów i wyświetlanie skonsolidowanego rozliczeń przez zastosowanie tego samego tagu do wielu zasobów i grup zasobów.
  7. Wybierz pozycję Przejrzyj i utwórz.

  8. Przejrzyj ustawienia konta, a następnie wybierz pozycję Utwórz. Utworzenie konta trwa kilka minut. Poczekaj na wyświetlenie komunikatu Wdrożenie zostało ukończone na stronie portalu.

    Zrzut ekranu pokazuje, że wdrożenie zostało ukończone.

  9. Wybierz pozycję Przejdź do zasobu, aby przejść do strony konta usługi Azure Cosmos DB.

    Zrzut ekranu przedstawiający stronę konta usługi Azure Cosmos DB.

Dodawanie powiązania danych wyjściowych

  1. W Azure Portal przejdź do i wybierz utworzoną wcześniej aplikację funkcji.

  2. Wybierz pozycję Funkcje, a następnie wybierz funkcję HttpTrigger.

    Wybierz funkcję Http w Azure Portal.

  3. Wybierz pozycję Integracja i + Dodaj dane wyjściowe.

    Dodaj powiązanie wyjściowe usługi Azure Cosmos DB.

  4. Użyj ustawień Tworzenia danych wyjściowych określonych w tabeli:

    Konfigurowanie powiązania wyjściowego usługi Azure Cosmos DB.

    Ustawienie Sugerowana wartość Opis
    Typ powiązania Azure Cosmos DB Nazwa typu powiązania do wybrania w celu utworzenia powiązania wyjściowego z usługą Azure Cosmos DB.
    Nazwa parametru dokumentu taskDocument Nazwa, która odwołuje się do obiektu usługi Azure Cosmos DB w kodzie.
    Nazwa bazy danych taskDatabase Nazwa bazy danych do zapisywania dokumentów.
    Nazwa kolekcji taskCollection Nazwa bazy kolekcji bazy danych.
    Jeśli ma wartość true, tworzy bazę danych i kolekcję usługi Azure Cosmos DB Tak Kolekcja jeszcze nie istnieje, więc należy ją utworzyć.
    Połączenie konta usługi Azure Cosmos DB Nowe ustawienie Wybierz pozycję Nowy, wybierz pozycję Konto usługi Azure Cosmos DB i utworzone wcześniej konto bazy danych , a następnie wybierz przycisk OK. Spowoduje to utworzenie ustawienia aplikacji na potrzeby połączenia konta. To ustawienie jest używane przez powiązanie do nawiązywania połączenia z bazą danych.
  5. Wybierz przycisk OK , aby utworzyć powiązanie.

Aktualizacja kodu funkcji

Zastąp istniejący kod funkcji w następującym kodem w wybranym języku:

Zastąp istniejącą funkcję w języku C# następującym kodem:

#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();
    }
}

Ten przykładowy kod odczytuje ciągi zapytań żądania HTTP i przypisuje je do pól w obiekcie taskDocument. Powiązanie taskDocument wysyła dane obiektu z tego parametru powiązania do przechowywania w powiązanej bazie danych dokumentów. Baza danych zostanie utworzona przy pierwszym uruchomieniu funkcji.

Testowanie funkcji i bazy danych

  1. Wybierz pozycję Testuj/uruchom. W obszarze Zapytanie wybierz pozycję + Dodaj parametr i dodaj następujące parametry do ciągu zapytania:

    • name
    • task
    • duedate

    Przetestuj funkcję.

  2. Wybierz pozycję Uruchom i sprawdź, czy jest zwracany stan 200.

    Zrzut ekranu przedstawia stan odpowiedzi HTTP 200 wyróżniony po wybraniu pozycji Uruchom.

  3. W Azure Portal wyszukaj i wybierz pozycję Azure Cosmos DB.

    Wyszukaj usługę Azure Cosmos DB.

  4. Wybierz konto usługi Azure Cosmos DB, a następnie wybierz pozycję Data Explorer.

  5. Rozwiń węzły TaskCollection , wybierz nowy dokument i upewnij się, że dokument zawiera wartości ciągu zapytania wraz z dodatkowymi metadanymi.

    Sprawdź wartości ciągu w dokumencie.

Pomyślnie dodano powiązanie do wyzwalacza HTTP w celu przechowywania danych bez struktury w wystąpieniu usługi Azure Cosmos DB.

Czyszczenie zasobów

W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli nie będziesz już potrzebować tych zasobów w przyszłości, możesz je usunąć przez usunięcie grupy zasobów.

W menu Azure Portal lub na stronie głównej wybierz pozycję Grupy zasobów. Następnie na stronie Grupy zasobów wybierz pozycję myResourceGroup.

Na stronie myResourceGroup upewnij się, że wymienione zasoby są tymi, które chcesz usunąć.

Wybierz pozycję Usuń grupę zasobów, wpisz myResourceGroup w polu tekstowym, aby potwierdzić, a następnie wybierz pozycję Usuń.

Następne kroki

Aby uzyskać więcej informacji na temat tworzenia powiązań z wystąpieniem usługi Azure Cosmos DB, zobacz Azure Functions powiązania usługi Azure Cosmos DB.