Udostępnij za pomocą


Szybki start: reagowanie na zmiany w usłudze Azure SQL Database przy użyciu usługi Azure Functions

W tym przewodniku Szybkiego startu użyjesz Visual Studio Code do stworzenia aplikacji, która reaguje na zmiany w tabeli Azure SQL Database. Po przetestowaniu kodu lokalnie należy wdrożyć go w nowej aplikacji funkcji bezserwerowej uruchomionej w planie Flex Consumption w usłudze Azure Functions.

Źródło projektu używa rozszerzenia interfejsu wiersza polecenia dla deweloperów platformy Azure (azd) z programem Visual Studio Code, aby uprościć inicjowanie i weryfikowanie kodu projektu lokalnie oraz wdrażanie kodu na platformie Azure. To wdrożenie jest zgodne z bieżącymi najlepszymi rozwiązaniami dotyczącymi bezpiecznych i skalowalnych wdrożeń usługi Azure Functions.

Ważne

Chociaż reagowanie na zmiany w bazie danych Azure SQL Database jest obsługiwane we wszystkich językach, ten scenariusz szybkiego startu zawiera obecnie tylko przykłady języków C#, Python i TypeScript. Aby ukończyć ten szybki start, wybierz jeden z tych obsługiwanych języków u góry artykułu.

Wymagania wstępne

  • Node.js 18.x lub nowszym. Użyj polecenia node --version, aby sprawdzić swoją wersję.

Inicjowanie projektu

Możesz użyć azd init polecenia z palety poleceń, aby utworzyć lokalny projekt kodu usługi Azure Functions na podstawie szablonu.

  1. W programie Visual Studio Code otwórz folder lub obszar roboczy, w którym chcesz utworzyć projekt.

  2. Naciśnij F1 , aby otworzyć paletę poleceń, wyszukać i uruchomić polecenie Azure Developer CLI (azd): Initialize App (init), a następnie wybierz pozycję Wybierz szablon.

  3. Po wyświetleniu monitu wyszukaj i wybierz pozycję Azure Functions with SQL Triggers and Bindings.

  4. Po wyświetleniu monitu wprowadź unikatową nazwę środowiska, na przykład sqldbchanges.

To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym. W azdsystemie środowisko jest używane do obsługi unikatowego kontekstu wdrażania dla aplikacji i można zdefiniować więcej niż jeden. Jest również częścią nazwy grupy zasobów utworzonej na platformie Azure.

To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym. W azdsystemie środowisko jest używane do obsługi unikatowego kontekstu wdrażania dla aplikacji i można zdefiniować więcej niż jeden. Jest również częścią nazwy grupy zasobów utworzonej na platformie Azure.

To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym. W azdsystemie środowisko jest używane do obsługi unikatowego kontekstu wdrażania dla aplikacji i można zdefiniować więcej niż jeden. Jest również częścią nazwy grupy zasobów utworzonej na platformie Azure.

Aby można było uruchomić aplikację lokalnie, należy utworzyć zasoby na platformie Azure.

Tworzenie zasobów platformy Azure

Ten projekt jest skonfigurowany do używania polecenia azd provision w celu utworzenia aplikacji funkcyjnej w planie elastycznego zużycia wraz z innymi wymaganymi zasobami platformy Azure, które są zgodne z bieżącymi najlepszymi praktykami.

  1. W programie Visual Studio Code naciśnij F1 , aby otworzyć paletę poleceń, wyszukaj i uruchom polecenie Azure Developer CLI (azd): Sign In with Azure Developer CLI, a następnie zaloguj się przy użyciu konta platformy Azure.

  2. Naciśnij F1 , aby otworzyć paletę poleceń, wyszukaj i uruchom polecenie Azure Developer CLI (azd): Provision Azure resources (provision) , aby utworzyć wymagane zasoby platformy Azure.

  3. Po wyświetleniu monitu w oknie Terminal podaj następujące wymagane parametry wdrożenia:

    Podpowiedź Description
    Wybieranie subskrypcji platformy Azure do użycia Wybierz subskrypcję, w której chcesz utworzyć zasoby.
    parametr lokalizacji wdrożenia Region platformy Azure, w którym ma zostać utworzona grupa zasobów zawierająca nowe zasoby platformy Azure. Wyświetlane są tylko regiony, które obecnie obsługują plan Flex Consumption.
    vnetEnabled parametr wdrożenia Szablon obsługuje tworzenie zasobów wewnątrz sieci wirtualnej, aby uprościć wdrażanie i testowanie, wybierz pozycję False.

Polecenie azd provision używa odpowiedzi na te wezwania z plikami konfiguracji Bicep w celu utworzenia i skonfigurowania tych wymaganych zasobów platformy Azure, zgodnie z najnowszymi najlepszymi praktykami.

  • Flex Consumption plan i aplikacja funkcji
  • Azure SQL Database (domyślna nazwa: ToDo)
  • Azure Storage (wymagane) i Application Insights (zalecane)
  • Zasady dostępu i role dla twojego konta
  • Połączenia między usługami przy użyciu tożsamości zarządzanych (zamiast przechowywanych parametry połączenia)

Po aprowizacji haki generują również plik local.settings.json , który jest wymagany do uruchamiania lokalnie. Ten plik zawiera ustawienia wymagane do nawiązania połączenia z bazą danych na platformie Azure.

Przejrzyj kod (opcjonalnie)

Przykład definiuje dwie funkcje:

Nazwa funkcji Plik kodu Typ wyzwalacza Description
httptrigger-sql-output sql_output_http_trigger.cs Wyzwalacz HTTP Akceptuje poprawnie sformatowany ładunek JSON i używa powiązania danych wyjściowych SQL, aby wstawić obiekt jako wiersz w ToDo tabeli.
ToDoTrigger sql_trigger.cs Wyzwalacz SQL Nasłuchuje zmian na poziomie wiersza w ToDo tabeli i zwraca obiekt reprezentujący zmieniony wiersz.

Typ ToDoItem jest zdefiniowany w ToDoItem.cs.

Nazwa funkcji Plik kodu Typ wyzwalacza Description
http_trigger_sql_output function_app.py Wyzwalacz HTTP Akceptuje poprawnie sformatowany ładunek JSON i używa powiązania danych wyjściowych SQL, aby wstawić obiekt jako wiersz w ToDo tabeli.
httptrigger-sql-output sql_trigger_todo Wyzwalacz SQL Nasłuchuje zmian na poziomie wiersza w ToDo tabeli i zwraca obiekt reprezentujący zmieniony wiersz.

Typ ToDoItem jest zdefiniowany w todo_item.py.

Nazwa funkcji Plik kodu Typ wyzwalacza Description
httpTriggerSqlOutput sql_output_http_trigger.ts Wyzwalacz HTTP Akceptuje poprawnie sformatowany ładunek JSON i używa powiązania danych wyjściowych SQL, aby wstawić obiekt jako wiersz w ToDo tabeli.
sqlTriggerToDo sql_trigger.ts Wyzwalacz SQL Nasłuchuje zmian na poziomie wiersza w ToDo tabeli i zwraca obiekt reprezentujący zmieniony wiersz.

Typ ToDoItem jest zdefiniowany w ToDoItem.ts.

Obie funkcje używają zmiennych środowiskowych na poziomie AZURE_SQL_CONNECTION_STRING_KEY_* aplikacji, które definiują połączenie oparte na tożsamości z wystąpieniem usługi Azure SQL Database przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft. Te zmienne środowiskowe są tworzone zarówno na platformie Azure (ustawienia aplikacji funkcji), jak i lokalnie (local.settings.json) podczas azd provision operacji.

Nawiązywanie połączenia z bazą danych SQL

Do nawiązania połączenia z nową bazą danych można użyć rozszerzenia programu SQL Server (mssql) dla programu Visual Studio Code. To rozszerzenie ułatwia wprowadzanie aktualizacji w ToDo tabeli w celu uruchomienia funkcji wyzwalacza SQL.

  1. Naciśnij F1 i w palecie poleceń wyszukaj i uruchom polecenie MS SQL: Add Connection.

  2. W oknie dialogowym Połączenie zmień typ danych wejściowych na Przeglądaj platformę Azure , a następnie ustaw następujące pozostałe opcje:

    Option Wybierać Description
    Server Wystąpienie programu SQL Server Domyślnie są wyświetlane wszystkie serwery dostępne dla konta platformy Azure. Użyj pozycji Subskrypcja, Grupa zasobów i Lokalizacja , aby ułatwić filtrowanie listy serwerów.
    Baza danych ToDo Baza danych utworzona podczas procesu aprowizacji.
    Authentication type (Typ uwierzytelniania) Microsoft Entra ID Jeśli jeszcze nie zalogowałeś się, wybierz pozycję Zaloguj się i zaloguj się do swojego konta platformy Azure.
    Identyfikator najemcy Konkretny dzierżawca konta. Jeśli Twoje konto ma więcej niż jedną dzierżawę, wybierz odpowiednią dzierżawę dla subskrypcji.
  3. Wybierz pozycję Połącz, aby nawiązać połączenie z bazą danych. Połączenie korzysta z konta lokalnego użytkownika, które ma przyznane uprawnienia administratora na serwerze hostującym i jest zmapowane na dbo w bazie danych.

  4. W widoku programu SQL Server znajdź i rozwiń Połączenia, a następnie nowy serwer w Eksploratorze SQL Server. Rozwiń Tabele i sprawdź, czy tabela istnieje. Jeśli nie istnieje, może być konieczne ponowne uruchomienie azd provision i sprawdzenie błędów.

Lokalne uruchamianie funkcji

Program Visual Studio Code integruje się z narzędziami Azure Functions Core , aby umożliwić uruchamianie tego projektu na lokalnym komputerze deweloperów przed opublikowaniem w nowej aplikacji funkcji na platformie Azure.

  1. Naciśnij F1 i w palecie poleceń wyszukaj i uruchom polecenie Azurite: Start.

  2. Aby uruchomić funkcję lokalnie, naciśnij F5 lub ikonę Uruchom i debuguj na pasku działań po lewej stronie.

    Na panelu Terminal są wyświetlane dane wyjściowe z narzędzi Core Tools. Aplikacja zostanie uruchomiona na panelu Terminal i będzie widoczna nazwa funkcji uruchomionej lokalnie.

Po uruchomieniu aplikacji możesz zweryfikować i debugować oba wyzwalacze funkcji.

Aby sprawdzić funkcję wyzwalacza HTTP, która zapisuje w powiązaniu wyjściowym SQL:

  1. Skopiuj ten obiekt JSON, który można również znaleźć w test.http pliku projektu:

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

    Te dane reprezentują wiersz wstawiony w bazie danych SQL podczas wywoływania punktu końcowego HTTP. Powiązanie wyjściowe tłumaczy obiekt danych na operację INSERT w bazie danych.

  2. Po uruchomieniu aplikacji w widoku platformy Azure w obszarze Obszar roboczy rozwiń Projekt lokalny>Funkcje.

  3. Wybierz prawym przyciskiem myszy funkcję HTTP (lub naciśnij Ctrl+kliknij w systemie macOS), wybierz polecenie Wykonaj funkcję teraz, wklej skopiowane dane JSON i naciśnij Enter.

    Funkcja obsługuje żądanie HTTP i zapisuje element w połączonej bazie danych SQL i zwraca utworzony obiekt.

  4. Wróć do Eksploratora programu SQL Server, wybierz prawym przyciskiem myszy tabelę ToDo (lub Naciśnij Ctrl+kliknij w systemie macOS), a następnie wybierz pozycję Wybierz 1000 pierwszych. Gdy zapytanie zostanie wykonane, zwraca wstawiony lub zaktualizowany wiersz.

  5. Powtórz krok 3 i wyślij ponownie ten sam obiekt danych o tym samym identyfikatorze. Tym razem, powiązanie wyjściowe wykonuje operację UPDATE zamiast INSERT, co modyfikuje istniejący wiersz w bazie danych.

Po zakończeniu wpisz ctrl+C w terminalu, aby zatrzymać proces Core Tools.

Wdrażanie na platformie Azure

Możesz uruchomić azd deploy polecenie z poziomu programu Visual Studio Code, aby wdrożyć kod projektu w już zaaprowizowanych zasobach na platformie Azure.

  1. Naciśnij F1 , aby otworzyć paletę poleceń, wyszukaj i uruchom polecenie Azure Developer CLI (azd): Deploy to Azure (deploy).

    Polecenie azd deploy pakuje i wdraża kod w kontenerze wdrażania. Aplikacja jest następnie uruchamiana i uruchamiana w wdrożonym pakiecie.

  2. Po pomyślnym zakończeniu działania polecenia aplikacja jest uruchomiona na platformie Azure. Zanotuj wartość Endpoint, która jest adresem URL aplikacji funkcji uruchomionej w Azure.

Wywoływanie funkcji na platformie Azure

  1. W programie Visual Studio Code naciśnij F1 , a następnie w palecie poleceń wyszukaj i uruchom polecenie Azure: Open in portal, wybierz pozycję Function app, a następnie wybierz nową aplikację. W razie potrzeby zaloguj się przy użyciu konta platformy Azure.

  2. Wybierz Strumień dziennika w lewym panelu, który łączy się z dziennikami usługi Application Insights dla Twojej aplikacji.

  3. Wróć do programu Visual Studio Code, aby uruchomić obie funkcje na platformie Azure.

  1. Naciśnij F1 , aby otworzyć paletę poleceń, wyszukaj i uruchom polecenie Azure Functions: Execute Function Now....

  2. Wyszukaj i wybierz aplikację funkcji zdalnej z listy, a następnie wybierz funkcję wyzwalacza HTTP.

  3. Tak jak poprzednio, wklej dane obiektu JSON w treści ładunku Enter i naciśnij Enter.

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

    Aby wykonać element INSERT zamiast UPDATE, zastąp element id nową wartością identyfikatora GUID.

  4. Wróć do portalu i wyświetl dane wyjściowe wykonania w oknie dziennika.

Uprzątnij zasoby

Po zakończeniu pracy z aplikacją funkcji i powiązanymi zasobami możesz użyć tego polecenia, aby usunąć aplikację funkcji i powiązane z nią zasoby z platformy Azure i uniknąć ponoszenia dodatkowych kosztów:

azd down --no-prompt

Uwaga / Notatka

Opcja --no-prompt powoduje azd usunięcie grupy zasobów bez potwierdzenia.

To polecenie nie ma wpływu na lokalny projekt kodu.