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 w usłudze Azure Blob 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 usługą Storage Blob z łącznikiem 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 |
Ostrzeżenie
Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze wymaga bardzo wysokiego poziomu zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Tego przepływu należy używać tylko wtedy, gdy inne bezpieczniejsze przepływy, takie jak tożsamości zarządzane, nie są opłacalne.
Wymagania wstępne
- Zainstaluj program Visual Studio Code na jednej z obsługiwanych platform.
- Interfejs wiersza polecenia platformy Azure. Można go użyć w usłudze Azure Cloud Shell lub zainstalować lokalnie.
- Konto usługi Azure Storage i obiekt blob usługi Storage. Jeśli nie masz konta usługi Azure Storage, utwórz je.
- W tym przewodniku założono, że znasz pojęcia przedstawione w przewodniku dla deweloperów usługi Functions i sposób nawiązywania połączenia z usługami w usłudze Functions.
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 "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,
BlobStorageInputFunc/function.json
Otwórz plik, sprawdź, czy nowe powiązanie z elementemtype: blob
idirection: in
zostało dodane do tego pliku.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.
- 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.
- Aby uruchomić funkcję lokalnie, naciśnij
<kbd>
F5</kbd>
lub wybierz ikonę Uruchom i debuguj na pasku działań po lewej stronie. - Aby sprawdzić, czy funkcja może odczytać obiekt blob, kliknij prawym przyciskiem myszy
Execute 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 łącznika usługi
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.
function.json
Otwórz plik w projekcie lokalnym, zmień wartośćconnection
właściwościbindings
MyBlobInputConnection
na .- 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
format:/subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
--target-id
format:/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 łącznika usługi z tożsamością zarządzaną przypisaną przez system.
Łącznik usługi skonfigurował 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. Aby dowiedzieć się więcej na temat sposobu, w jaki łącznik usług 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.
- Postępuj zgodnie z samouczkiem, aby wdrożyć funkcję na platformie Azure.
- Aby sprawdzić, czy funkcja może odczytać obiekt blob, kliknij prawym przyciskiem myszy
Execute 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 (<account-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.
- W witrynie Azure Portal otwórz zasób Aplikacja funkcji i wybierz pozycję Usuń.
- 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 łącznika usług i sposobu, w jaki pomaga ona usłudze Azure Functions łączyć się z innymi usługami w chmurze.