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

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

  • Tworzenie projektu funkcji języka Python przy użyciu programu Visual Studio Code.
  • Zmień kody, aby dodać powiązanie funkcji wejściowej obiektu blob 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 obiektem blob 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 Azure Storage Blob
Powiązanie funkcji Wyzwalacz HTTP, obiekt blob usługi Storage jako dane wejściowe
Typ uwierzytelniania projektu lokalnego Parametry połączenia
Typ uwierzytelniania funkcji w chmurze Tożsamość zarządzana przypisana przez system

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ź BlobStorageInputFunc.
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 wejściowego usługi Blob Storage

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 in Powiązanie jest powiązaniem wejściowym.
Wybierz powiązanie z kierunkiem... Azure Blob Storage Powiązanie to powiązanie obiektu blob usługi Azure Storage.
Nazwa używana do identyfikowania tego powiązania w kodzie inputBlob Nazwa identyfikująca parametr powiązania, do którego odwołuje się kod.
Ścieżka na koncie magazynu, z którego będzie odczytywany obiekt blob testcontainer/test.txt Ścieżka obiektu blob, którą funkcja odczytuje jako dane wejściowe. Przygotuj plik o nazwie test.txt, z plikiem Hello, World! jako zawartością pliku. Utwórz kontener o nazwie testcontainer i przekaż plik do kontenera.
Wybierz ustawienie z pliku "local.setting.json" Create new local app settings Wybierz konto magazynu, które funkcja odczytuje jako dane wejś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. BlobStorageInputFunc/function.json Otwórz plik, sprawdź, czy nowe powiązanie z elementem type: blob i direction: in 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 BlobStorageInputFunc/__init__.py element plikiem języka Python tutaj.

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

Lokalne uruchamianie funkcji

Postępuj zgodnie z samouczkiem, aby uruchomić funkcję lokalnie i zweryfikować dane wejściowe obiektu blob.

  1. Wybierz konto magazynu użyte podczas tworzenia zasobu funkcji platformy Azure, jeśli zostanie wyświetlony monit o nawiązanie połączenia z usługą Storage. Jest przeznaczony do użytku wewnętrznego środowiska uruchomieniowego funkcji platformy Azure i nie musi być taki sam, jak w przypadku danych wejś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 odczytać obiekt blob, kliknij prawym przyciskiem myszy Exucute Function Now... funkcję w obszarze roboczym programu Visual Studio Code i sprawdź odpowiedź funkcji. Komunikat odpowiedzi powinien zawierać zawartość w pliku obiektu blob.

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

Właśnie uruchomiono projekt i zweryfikowano funkcję lokalnie, a lokalny projekt łączy się z obiektem blob magazynu przy użyciu parametry połączenia.

Teraz dowiesz się, jak skonfigurować połączenie między funkcją platformy Azure i usługą Azure Blob Storage, aby funkcja mogła odczytywać obiekt blob po wdrożeniu w chmurze. W środowisku chmury pokazujemy, jak uwierzytelniać się przy użyciu tożsamości zarządzanej przypisanej przez system.

  1. function.json Otwórz plik w projekcie lokalnym, zmień wartość connection właściwości bindingsMyBlobInputConnectionna .
  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-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • --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}/blobServices/default

Utworzono połączenie między funkcją platformy Azure i usługą Azure Blob Storage przy użyciu Połączenie or usługi z tożsamością zarządzaną przypisaną przez system.

Usługa Połączenie or skonfigurowała zmienną MyBlobInputConnection__serviceUri w ustawieniach aplikacji funkcji używanych przez środowisko uruchomieniowe powiązania funkcji w celu nawiązania połączenia z magazynem, aby funkcja mogła odczytywać dane z magazynu obiektów blob. 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 wejściowe obiektu blob magazynu działa.

  1. Postępuj zgodnie z samouczkiem, aby wdrożyć funkcję na platformie Azure.
  2. Aby sprawdzić, czy funkcja może odczytać obiekt blob, kliknij prawym przyciskiem myszy Exucute Function Now... funkcję w widoku ZASOBY programu Visual Studio Code i sprawdź odpowiedź funkcji. Komunikat odpowiedzi powinien zawierać zawartość w pliku obiektu blob.

Rozwiązywanie problemów

Jeśli występują błędy związane z hostem magazynu, takie jak No such host is known (<acount-name>.blob.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 obiektu blob, 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 błąd wystąpi podczas lokalnego uruchamiania projektu, sprawdź local.settings.json plik.

Jeśli 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ęć 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.