Samouczek: funkcja języka Python z usługą Azure Queue Storage jako wyzwalaczem

Z tego samouczka dowiesz się, jak skonfigurować funkcję języka Python przy użyciu kolejki magazynu jako wyzwalacz, wykonując następujące zadania.

  • Tworzenie projektu funkcji języka Python przy użyciu programu Visual Studio Code.
  • 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 kolejką 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 Kolejka usługi Azure Storage
Powiązanie funkcji Kolejka magazynu jako wyzwalacz
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 Azure Queue Storage trigger.
Podaj nazwę funkcji Wprowadź QueueStorageTriggerFunc.
Wybierz ustawienie z pliku "local.settings.json" Wybierz Create new local app settingspozycję , która umożliwia wybranie konta magazynu i podanie nazwy kolejki, która działa jako wyzwalacz.

Utworzono projekt funkcji języka Python z kolejką usługi Azure Storage jako wyzwalaczem. Projekt lokalny łączy się z usługą Azure Storage przy użyciu parametry połączenia zapisanych local.settings.json w pliku. main Na koniec funkcja w __init__.py pliku funkcji może korzystać z parametry połączenia za pomocą powiązania funkcji zdefiniowanego function.json w pliku.

Lokalne uruchamianie funkcji

Postępuj zgodnie z samouczkiem, aby uruchomić funkcję lokalnie i zweryfikować wyzwalacz.

  1. Wybierz konto magazynu wybrane podczas tworzenia zasobu funkcji platformy Azure, jeśli zostanie wyświetlony monit o nawiązanie połączenia z magazynem. Ta wartość jest używana dla środowiska uruchomieniowego funkcji platformy Azure i nie musi być taka sama jak konto magazynu używane dla wyzwalacza.
  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 wyzwalacz działa prawidłowo, zachowaj działanie funkcji lokalnie i otwórz blok Kolejka magazynu w witrynie Azure Portal, wybierz pozycję Dodaj komunikat i podaj komunikat testowy. Funkcja powinna zostać wyzwolona i przetworzona jako element kolejki w terminalu programu Visual Studio Code.

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 kolejką usługi Azure Storage w chmurze, aby funkcja mogła zostać wyzwolona przez kolejkę magazynu po wdrożeniu w chmurze.

  1. function.json Otwórz plik w projekcie lokalnym, zmień wartość connection właściwości bindingsAZURE_STORAGEQUEUE_CONNECTIONSTRINGna .
  2. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby utworzyć połączenie między funkcją platformy Azure i kontem usługi Azure Storage.
az functionapp connection create storage-queue --source-id "<your-function-resource-id>" --target-id "<your-storage-queue-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}/queueServices/default

Ten krok tworzy zasób usługi Połączenie or, który konfiguruje zmienną AZURE_STORAGEQUEUE_CONNECTIONSTRING w Ustawienia aplikacji funkcji. Środowisko uruchomieniowe powiązania funkcji używa go do nawiązywania połączenia z magazynem, dzięki czemu funkcja może akceptować wyzwalacze z kolejki magazynu. Aby uzyskać więcej informacji, zobacz how Service 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 wyzwalacz kolejki magazynu działa.

  1. Postępuj zgodnie z tym samouczkiem dotyczącym usługi Azure Functions, aby wdrożyć funkcję na platformie Azure.
  2. Otwórz blok Kolejka magazynu w witrynie Azure Portal, wybierz pozycję Dodaj komunikat i podaj komunikat testowy. Funkcja powinna zostać wyzwolona i przetworzona jako element kolejki w dziennikach funkcji.

Rozwiązywanie problemów

Jeśli występują jakiekolwiek błędy związane z hostem magazynu, takie jak No such host is known (<acount-name>.queue.core.windows.net:443), sprawdź, czy parametry połączenia używany do nawiązywania połączenia z usługą Azure Storage zawiera punkt końcowy kolejki, czy nie. Jeśli tak nie jest, przejdź do usługi Azure Storage w witrynie Azure Portal, 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 ten błąd występuje 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ęć związanych z usługą Service Połączenie or i sposobu, w jaki pomaga ona w połączeniu usługi Azure Functions z usługami.