Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku szybkiego startu utworzysz aplikację odpowiadającą na zdarzenia w kontenerze Blob Storage za pomocą programu Visual Studio Code. Po przetestowaniu kodu lokalnie przy użyciu emulatora należy wdrożyć go w nowej aplikacji funkcji bezserwerowej uruchomionej w planie Flex Consumption w usłudze Azure Functions.
Projekt 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, a także 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.
Ten artykuł obsługuje wersję 4 modelu programowania Node.js dla usługi Azure Functions.
Ten artykuł obsługuje wersję 2 modelu programowania w języku Python dla usługi Azure Functions.
Wymagania wstępne
Konto Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Visual Studio Code na jednej z obsługiwanych platform.
Rozszerzenie obsługujące usługę Azure Functions dla programu Visual Studio Code. To rozszerzenie wymaga narzędzi Azure Functions Core Tools. Jeśli to narzędzie nie jest dostępne lokalnie, rozszerzenie próbuje go zainstalować przy użyciu instalatora opartego na pakietach. Pakiet Core Tools można również zainstalować lub zaktualizować, uruchamiając polecenie
Azure Functions: Install or Update Azure Functions Core Toolsz palety poleceń. Jeśli na komputerze lokalnym nie zainstalowano programu npm ani oprogramowania Homebrew, należy ręcznie zainstalować lub zaktualizować narzędzia Core Tools.
Rozszerzenie języka C# dla programu Visual Studio Code.
Zestaw Java Development Kit, wersja 8, 11, 17 lub 21 (Linux).
Narzędzie Apache Maven, wersja 3.0 lub nowsza.
Pakiet rozszerzenia Java
-
Node.js 18.x lub nowszym. Użyj polecenia
node --version, aby sprawdzić swoją wersję.
Wersje języka Python obsługiwane przez usługę Azure Functions. Aby uzyskać więcej informacji, zobacz How to install Python (Jak zainstalować język Python).
Rozszerzenie języka Python dla programu Visual Studio Code.
- Rozszerzenie interfejsu wiersza polecenia dla deweloperów platformy Azure dla programu Visual Studio Code.
Rozszerzenie klienta REST lub równoważne narzędzie REST używane do bezpiecznego wykonywania żądań HTTP.
Inicjowanie projektu
azd init Użyj polecenia z palety poleceń, aby utworzyć lokalny projekt kodu usługi Azure Functions na podstawie szablonu.
W programie Visual Studio Code otwórz folder lub obszar roboczy, w którym chcesz utworzyć projekt.
Naciśnij F1 , aby otworzyć paletę poleceń, wyszukaj i uruchom polecenie
Azure Developer CLI (azd): Initialize App (init), a następnie wybierz pozycję Wybierz szablon.Może wystąpić niewielkie opóźnienie podczas
azdinicjowania bieżącego folderu lub obszaru roboczego.
Po wyświetleniu monitu wybierz pozycję Wybierz szablon, a następnie wyszukaj i wybierz pozycję
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.Po wyświetleniu monitu w terminalu wprowadź unikatową nazwę środowiska, na przykład
blobevents-dotnet.To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym.
Po wyświetleniu monitu wybierz pozycję Wybierz szablon, a następnie wyszukaj i wybierz pozycję
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.Po wyświetleniu monitu w terminalu wprowadź unikatową nazwę środowiska, na przykład
blobevents-python.To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym.
Po wyświetleniu monitu wybierz pozycję Wybierz szablon, a następnie wyszukaj i wybierz pozycję
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.Po wyświetleniu monitu wprowadź unikatową nazwę środowiska, na przykład
blobevents-typescript.To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym.
Po wyświetleniu monitu wybierz pozycję Wybierz szablon, a następnie wyszukaj i wybierz pozycję
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.Po wyświetleniu monitu wprowadź unikatową nazwę środowiska, na przykład
blobevents-java.To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym.
Po wyświetleniu monitu wybierz pozycję Wybierz szablon, a następnie wyszukaj i wybierz pozycję
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.Po wyświetleniu monitu wprowadź unikatową nazwę środowiska, na przykład
blobevents-powershell.To polecenie ściąga pliki projektu z repozytorium szablonów i inicjuje projekt w bieżącym folderze lub obszarze roboczym.
W azd środowisko systemowe zapewnia unikatowy kontekst wdrażania dla twojej aplikacji i można zdefiniować więcej niż jeden z nich. Jest również częścią nazwy grupy zasobów utworzonej na platformie Azure.
Dodawanie pliku local.settings.json
Funkcje wymagają pliku local.settings.json do skonfigurowania hosta podczas uruchamiania lokalnego.
Uruchom to polecenie, aby przejść do
srcfolderu aplikacji:cd src
Utwórz plik o nazwie local.settings.json w
srcfolderze zawierającym te dane JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Utwórz plik o nazwie local.settings.json w
srcfolderze zawierającym te dane JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Utwórz plik o nazwie local.settings.json w
srcfolderze zawierającym te dane JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Utwórz plik o nazwie local.settings.json w
srcfolderze zawierającym te dane JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Utwórz plik o nazwie local.settings.json w
srcfolderze zawierającym te dane JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Tworzenie i aktywowanie środowiska wirtualnego
W folderze src uruchom następujące polecenia, aby utworzyć i aktywować środowisko wirtualne o nazwie .venv:
python3 -m venv .venv
source .venv/bin/activate
Jeśli język Python nie instaluje pakietu venv w dystrybucji systemu Linux, uruchom następujące polecenie:
sudo apt-get install python3-venv
Konfigurowanie lokalnego emulatora magazynu
Użyj emulatora usługi Azurite, aby uruchomić projekt kodu lokalnie przed utworzeniem i użyciem zasobów platformy Azure.
Jeśli jeszcze tego nie zrobiono, zainstaluj aplikację Azurite.
Naciśnij F1. W palecie komend wyszukaj i uruchom polecenie
Azurite: Start, aby uruchomić emulator magazynu lokalnego.W obszarze Platformy Azure rozwiń Obszar roboczy>Dołączone konta magazynu>Lokalny emulator, kliknij prawym przyciskiem myszy (na Macu użyj Ctrl i kliknij) Kontenery blobów, wybierz opcję Utwórz kontener blob... i utwórz te dwa kontenery przechowywania blobów w lokalnym emulatorze:
-
unprocessed-pdf: kontener monitorowany przez wyzwalacz pod względem zdarzeń przechowywania. -
processed-pdf: kontener, w którym funkcja wysyła przetworzone obiekty blob jako dane wyjściowe.
-
Rozwiń węzeł Kontenery obiektów blob, kliknij prawym przyciskiem myszy (kliknij na komputerze Mac) nieprzetworzony plik PDF, wybierz polecenie Przekaż pliki..., naciśnij Enter , aby zaakceptować katalog główny i przekazać pliki PDF z
datafolderu projektu.
W przypadku uruchamiania lokalnego można użyć interfejsu REST, aby wyzwolić funkcję, symulując funkcję odbierającą komunikat z subskrypcji zdarzeń.
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 przy użyciu emulatora Azurite. Zmienna PDFProcessorSTORAGE środowiskowa definiuje połączenie z kontem magazynu, które jest również ustawione jako "UseDevelopmentStorage=true" w pliku local.settings.json podczas uruchamiania lokalnie.
Uruchom to polecenie z folderu projektu w terminalu
srclub wierszu polecenia:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startPo uruchomieniu hosta usługi Functions zapisuje nazwę wyzwalacza i typ wyzwalacza do danych wyjściowych terminalu. W usłudze Functions folder główny projektu zawiera plik host.json.
Narzędzia Core Tools nadal działają w terminalu, otwórz
test.httpplik w projekcie, i wybierz pozycję Wyślij żądanie, aby wyzwolić funkcję poprzez wysłanie zdarzenia testowego obiektu blob do webhooka zdarzenia obiektu blob.Ten krok symuluje odbieranie zdarzenia z subskrypcji zdarzeń, gdy uruchamiane jest lokalnie, i prawdopodobnie zobaczysz żądanie oraz informacje o przetworzonych plikach zapisane w dziennikach. Jeśli nie używasz klienta REST, musisz użyć innego bezpiecznego narzędzia REST, aby wywołać punkt końcowy z ładunkiem w pliku
test.http.W obszarze roboczym kontenera obiektów blob rozwiń processed-pdf i sprawdź, czy funkcja przetworzyła plik PDF i skopiowała go z prefiksem
processed-.Po zakończeniu naciśnij Ctrl+C w oknie terminalu
func.exe, aby zatrzymać proces hosta.
Przejrzyj kod (opcjonalnie)
Możesz przejrzeć kod, który definiuje wyzwalacz typu blob usługi Event Grid w pliku projektu ProcessBlobUpload.cs. Funkcja pokazuje, jak:
- Użyj
BlobTriggerwraz zSource = BlobTriggerSource.EventGriddo przetwarzania niemal w czasie rzeczywistym - Powiąż z
BlobClientobiektem blob źródłowym iBlobContainerClientobiektem blob docelowym - Przetwarzanie zawartości obiektu blob i kopiowanie jej do innego kontenera przy użyciu strumieni
Możesz przejrzeć kod definiujący wyzwalacz obiektu blob usługi Event Grid w pliku projektu function_app.py. Funkcja pokazuje, jak:
- Użyj
@app.blob_triggerwraz zsource="EventGrid"do przetwarzania niemal w czasie rzeczywistym - Uzyskiwanie dostępu do zawartości obiektu blob przy użyciu parametru
InputStream - Kopiowanie przetworzonych plików do kontenera docelowego przy użyciu zestawu SDK usługi Azure Storage
Możesz przejrzeć kod definiujący wyzwalacz blob dla usługi Event Grid w pliku projektu processBlobUpload.ts. Funkcja pokazuje, jak:
- Użyj
app.storageBlob()wraz zsource: 'EventGrid'do przetwarzania niemal w czasie rzeczywistym - Uzyskiwanie dostępu do zawartości obiektu blob przy użyciu zestawu SDK usługi Node.js Azure Storage
- Przetwarzanie i kopiowanie plików do kontenera docelowego asynchronicznie
Możesz przejrzeć kod, który definiuje wyzwalacz blob dla usługi Event Grid w pliku projektu ProcessBlobUpload.java. Funkcja pokazuje, jak:
- Użyj
@BlobTriggerwraz zsource = "EventGrid"do przetwarzania niemal w czasie rzeczywistym - Uzyskiwanie dostępu do zawartości obiektu blob przy użyciu
BlobInputStreamparametru - Kopiowanie przetworzonych plików do kontenera docelowego przy użyciu zestawu SDK usługi Azure Storage dla języka Java
Możesz przejrzeć kod definiujący wyzwalacz obiektu blob w ramach Event Grid w pliku projektu ProcessBlobUpload/run.ps1 i odpowiadającym mu function.json. Funkcja pokazuje, jak:
- Konfiguracja wyzwalacza blob za pomocą
"source": "EventGrid"w pliku function.json do przetwarzania prawie w czasie rzeczywistym - Uzyskiwanie dostępu do zawartości obiektu blob za pomocą poleceń cmdlet Azure Storage w PowerShell
- Przetwarzanie i kopiowanie plików do kontenera docelowego przy użyciu modułów programu Azure PowerShell
Po przejrzeniu i zweryfikowaniu kodu funkcji lokalnie nadszedł czas na opublikowanie projektu na platformie Azure.
Tworzenie zasobów platformy Azure i wdrażanie
Użyj polecenia azd up, aby utworzyć aplikację funkcji w planie Flex Consumption wraz z innymi wymaganymi zasobami platformy Azure, w tym subskrypcją zdarzeń. Po przygotowaniu infrastruktury azd kod projektu zostaje wdrożony do nowej aplikacji funkcyjnej na platformie Azure.
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.W katalogu głównym projektu naciśnij F1 , aby otworzyć paletę poleceń. Wyszukaj i uruchom polecenie
Azure Developer CLI (azd): Provision and Deploy (up), aby utworzyć wymagane zasoby platformy Azure i wdrożyć kod.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. Nazwa środowiska Środowisko używane do obsługi unikatowego kontekstu wdrażania aplikacji. Lokalizacja platformy Azure 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. Polecenie
azd upużywa odpowiedzi do tych monitów z plikami konfiguracji Bicep w celu utworzenia i skonfigurowania tych wymaganych zasobów platformy Azure, zgodnie z najnowszymi najlepszymi rozwiązaniami:- Flex Consumption plan i aplikacja funkcji
- Konto magazynu Azure z kontenerami BLOB
- Application Insights (zalecane)
- Zasady dostępu i role dla twojego konta
- Subskrypcja usługi Event Grid dla zdarzeń blobów
- Połączenia między usługami przy użyciu tożsamości zarządzanych (zamiast przechowywanych parametrów połączenia)
Po pomyślnym wykonaniu polecenia Twoja aplikacja działa na platformie Azure, a subskrypcja zdarzeń jest skonfigurowana do wyzwalania funkcji po dodaniu obiektów blob do kontenera
unprocessed-pdf.Zanotuj wartości
AZURE_STORAGE_ACCOUNT_NAMEiAZURE_FUNCTION_APP_NAMEw danych wyjściowych. Te nazwy są unikatowe dla Twojego konta magazynowego i aplikacji funkcji w Azure.
Weryfikowanie wdrożonej funkcji
W programie Visual Studio Code naciśnij F1. W palecie poleceń wyszukaj i uruchom polecenie
Azure Storage: Upload Files.... Zaakceptuj katalog główny i tak jak wcześniej przekaż co najmniej jeden plik PDF zdatafolderu projektu.Po wyświetleniu się monitu wybierz nazwę nowego konta magazynowego (z
AZURE_STORAGE_ACCOUNT_NAME). Wybierz Kontenery Blob>unprocessed-pdf.Naciśnij F1. W palecie poleceń wyszukaj i uruchom polecenie
Azure Storage: Open in Explorer. Wybierz to samo konto magazynowe >Kontenery obiektów Blob>processed-pdf, a następnie Otwórz w nowym oknie.W Eksploratorze sprawdź, czy przekazane pliki PDF zostały przetworzone przez funkcję. Dane wyjściowe są zapisywane w kontenerze
processed-pdfz prefiksemprocessed-.
Wyzwalacz obiektu blob usługi Event Grid przetwarza pliki w ciągu kilku sekund od przekazania. Ta szybkość pokazuje niemal rzeczywiste zdolności czasowe tego podejścia w porównaniu z tradycyjnymi wyzwalaczami obiektów blob opartymi na odpytywaniu.
Ponowne wdrażanie kodu
azd up Uruchom polecenie tyle razy, ile potrzebujesz, aby aprowizować zasoby platformy Azure i wdrażać aktualizacje kodu w aplikacji funkcji.
Uwaga / Notatka
Wdrożone pliki kodu są zawsze zastępowane przez najnowszy pakiet wdrożeniowy.
Początkowe odpowiedzi na azd monity i wszystkie zmienne środowiskowe wygenerowane przez azd program są przechowywane lokalnie w nazwanym środowisku. Użyj polecenia , azd env get-values aby przejrzeć wszystkie zmienne w środowisku, które zostały użyte podczas tworzenia zasobów platformy Azure.
Uprzątnij zasoby
Po zakończeniu pracy z aplikacją funkcji i powiązanymi zasobami użyj tego polecenia, aby usunąć aplikację funkcji i powiązane z nią zasoby z platformy Azure. Ta akcja pomaga 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.
Treści powiązane
- Scenariusze usługi Azure Functions
- Elastyczny Plan Konsumpcji
- Samouczek: wyzwalanie usługi Azure Functions w kontenerach obiektów blob przy użyciu subskrypcji zdarzeń
- Interfejs wiersza polecenia dewelopera Azure (azd)
- azd — odwołanie
- Dokumentacja podstawowych narzędzi usługi Azure Functions
- Kodowanie i testowanie usługi Azure Functions lokalnie