Samouczek: funkcja języka Python z usługą Azure Table Storage jako danymi wyjściowymi

Z tego samouczka dowiesz się, jak skonfigurować funkcję języka Python przy użyciu tabeli usługi Storage jako dane wyjściowe, wykonując następujące zadania.

  • Tworzenie projektu funkcji języka Python przy użyciu programu Visual Studio Code.
  • Dodaj powiązanie funkcji wyjściowej tabeli magazynu.
  • Użyj programu Visual Studio Code, aby uruchomić funkcję lokalnie.
  • Użyj interfejsu wiersza polecenia platformy Azure, aby utworzyć połączenie między funkcją platformy Azure i tabelą usługi Storage przy użyciu Połączenie or usługi.
  • Wdrażanie funkcji za pomocą programu Visual Studio.

Omówienie składników projektu funkcji w tym samouczku:

Składnik projektu Wybór/rozwiązanie
Usługa źródłowa Funkcja platformy Azure
Usługa docelowa Tabela usługi Azure Storage
Powiązanie funkcji Wyzwalacz HTTP, tabela magazynu jako dane wyjściowe
Typ uwierzytelniania projektu lokalnego Parametry połączenia
Typ uwierzytelniania funkcji w chmurze Parametry połączenia

Wymagania wstępne

Tworzenie projektu funkcji języka Python

Postępuj zgodnie z samouczkiem , aby utworzyć lokalny projekt usługi Azure Functions i podać następujące informacje w monitach:

Monit Wybór
Wybieranie języka Wybierz plik Python. (model języka programowania w wersji 1)
Wybieranie interpretera języka Python w celu utworzenia środowiska wirtualnego Wybierz preferowany interpreter języka Python. Jeśli opcja nie jest wyświetlana, wpisz pełną ścieżkę do pliku binarnego języka Python.
Wybieranie szablonu dla pierwszej funkcji projektu Wybierz plik HTTP trigger.
Podaj nazwę funkcji Wprowadź TableStorageOutputFunc.
Poziom autoryzacji Wybierz pozycję Anonymous, która umożliwia każdemu wywoływanie punktu końcowego funkcji. 

Utworzono projekt funkcji języka Python z wyzwalaczem HTTP.

Dodawanie powiązania wyjściowego tabeli magazynu

Atrybuty powiązania są definiowane w pliku function.json dla danej funkcji. Aby utworzyć powiązanie, kliknij prawym przyciskiem myszy (Ctrl+kliknij w systemie macOS) function.json plik w folderze funkcji i wybierz polecenie Dodaj powiązanie... . Postępuj zgodnie z monitami, aby zdefiniować następujące właściwości powiązania dla nowego powiązania:

Monit Wartość Opis
Wybieranie kierunku powiązania out Powiązanie jest powiązaniem wyjściowym.
Wybierz powiązanie z kierunkiem... Azure Table Storage Powiązanie jest powiązaniem tabeli usługi Azure Storage.
Nazwa używana do identyfikowania tego powiązania w kodzie outMessage Nazwa identyfikująca parametr powiązania, do którego odwołuje się kod.
Nazwa tabeli na koncie magazynu, na którym będą zapisywane dane testTable Nazwa tabeli, która jest zapisywana przez funkcję jako dane wyjściowe. Utwórz tabelę o nazwie testTable na koncie magazynu, jeśli nie istnieje.
Wybierz ustawienie z pliku "local.setting.json" Create new local app settings Wybierz konto magazynu, które funkcja zapisuje jako dane wyjściowe. Program Visual Studio Code pobiera parametry połączenia dla lokalnego połączenia projektu.

Aby sprawdzić, czy powiązanie zostało pomyślnie dodane:

  1. TableStorageOutputFunc/function.json Otwórz plik, sprawdź, czy nowe powiązanie z elementem type: table i direction: out zostało dodane do tego pliku.
  2. local.settings.json Otwórz plik, sprawdź, czy do tego pliku została dodana nowa para <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> klucz-wartość zawierająca konto magazynu, parametry połączenia.

Po dodaniu powiązania zaktualizuj kody funkcji, aby korzystać z powiązania, zastępując TableStorageOutputFunc/__init__.py element plikiem języka Python tutaj.

import logging
import uuid
import json
import azure.functions as func

def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:

    rowKey = str(uuid.uuid4())
    data = {
        "Name": "Output binding message",
        "PartitionKey": "message",
        "RowKey": rowKey
    }

    outMessage.set(json.dumps(data))
    return func.HttpResponse(f"Message created with the rowKey: {rowKey}")

Lokalne uruchamianie funkcji

Postępuj zgodnie z samouczkiem, aby uruchomić funkcję lokalnie i zweryfikować dane wyjściowe tabeli.

  1. Wybierz konto magazynu wybrane podczas tworzenia zasobu funkcji platformy Azure, jeśli zostanie wyświetlony monit o nawiązanie połączenia z kontem magazynu. Ta wartość jest używana dla środowiska uruchomieniowego funkcji platformy Azure. Niekoniecznie jest to to samo konto magazynu, którego używasz dla danych wyjściowych.
  2. Aby uruchomić funkcję lokalnie, naciśnij klawisz <kbd>F5 </kbd> lub wybierz ikonę Uruchom i debuguj na pasku działań po lewej stronie.
  3. Aby sprawdzić, czy funkcja może zapisywać dane w tabeli, kliknij prawym przyciskiem myszy Execute Function Now... funkcję w widoku OBSZAR ROBOCZY programu Visual Studio Code i sprawdź odpowiedź funkcji. Komunikat odpowiedzi powinien zawierać rowKey tekst zapisany w tabeli.

Tworzenie połączenia przy użyciu usługi Połączenie or

W ostatnim kroku zweryfikowano projekt funkcji lokalnie. Teraz dowiesz się, jak skonfigurować połączenie między funkcją platformy Azure i tabelą usługi Azure Storage w chmurze, aby funkcja mogła zapisywać dane w obiekcie blob magazynu po wdrożeniu w chmurze.

  1. function.json Otwórz plik w projekcie lokalnym, zmień wartość connection właściwości bindingsAZURE_STORAGETABLE_CONNECTIONSTRINGna .
  2. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby utworzyć połączenie między funkcją platformy Azure i usługą Azure Storage.
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
  • --source-id Formacie: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id Formacie: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default

Utworzono zasób usługi Połączenie or, który konfiguruje zmienną AZURE_STORAGETABLE_CONNECTIONSTRING w Ustawienia aplikacji funkcji. To ustawienie aplikacji będzie następnie używane przez powiązanie funkcji w celu nawiązania połączenia z magazynem, aby funkcja mogła zapisywać dane w tabeli magazynu. Dowiedz się więcej o tym, jak usługa Połączenie or pomaga usłudze Azure Functions łączyć się z usługami.

Wdrażanie funkcji na platformie Azure

Teraz możesz wdrożyć funkcję na platformie Azure i sprawdzić, czy powiązanie wyjściowe tabeli magazynu działa.

  1. Postępuj zgodnie z tym samouczkiem dotyczącym usługi Azure Functions, aby wdrożyć funkcję na platformie Azure.
  2. Aby sprawdzić, czy funkcja może zapisywać dane w tabeli, kliknij prawym przyciskiem myszy Execute Function Now... funkcję w widoku ZASOBY programu Visual Studio Code i sprawdź odpowiedź funkcji. Komunikat odpowiedzi powinien zawierać rowKey funkcję, która właśnie napisała do tabeli.

Rozwiązywanie problemów

Jeśli występują błędy związane z hostem magazynu, takie jak No such host is known (<acount-name>.table.core.windows.net:443), należy sprawdzić, czy parametry połączenia używany do nawiązywania połączenia z usługą Azure Storage zawiera punkt końcowy tabeli, czy nie. Jeśli tak nie jest, przejdź do portalu usługi Azure Storage, skopiuj parametry połączenia z Access keys bloku i zastąp wartości.

Jeśli ten błąd wystąpi podczas lokalnego uruchamiania projektu, sprawdź local.settings.json plik.

Jeśli wystąpi to podczas wdrażania funkcji w chmurze (w tym przypadku wdrażanie funkcji zwykle kończy się niepowodzeniem Syncing triggers ), sprawdź Ustawienia aplikacji funkcji.

Czyszczenie zasobów

Jeśli nie zamierzasz nadal korzystać z tego projektu, usuń utworzony wcześniej zasób aplikacji funkcji.

  1. W witrynie Azure Portal otwórz zasób Aplikacja funkcji i wybierz pozycję Usuń.
  2. Wprowadź nazwę aplikacji i wybierz pozycję Usuń , aby potwierdzić.

Następne kroki

Przeczytaj poniższe artykuły, aby dowiedzieć się więcej na temat pojęć dotyczących usługi Połączenie or i sposobu, w jaki pomaga ona usłudze Azure Functions łączyć się z innymi usługami w chmurze.