Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak tworzyć aplikacje funkcji hostowane w planie Flex Consumption w usłudze Azure Functions. Pokazano również, jak zarządzać niektórymi funkcjami aplikacji hostowanej w planie Flex Consumption.
Zasoby aplikacji funkcji są specyficzne dla języka. Pamiętaj, aby wybrać preferowany język programowania kodu na początku artykułu.
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją. Jeśli jeszcze go nie masz, możesz bezpłatnie utworzyć konto.
Interfejs wiersza polecenia platformy Azure: służy do tworzenia zasobów i zarządzania nimi na platformie Azure. W przypadku korzystania z interfejsu wiersza polecenia platformy Azure na komputerze lokalnym upewnij się, że używasz wersji 2.60.0 lub nowszej. Możesz również użyć usługi Azure Cloud Shell, która ma poprawną wersję interfejsu wiersza polecenia platformy Azure.
Visual Studio Code: służy do tworzenia i tworzenia aplikacji, tworzenia zasobów platformy Azure i wdrażania projektów kodu na platformie Azure. W przypadku korzystania z programu Visual Studio Code upewnij się, że zainstalowano również najnowsze rozszerzenie usługi Azure Functions. Można również zainstalować pakiet rozszerzeń narzędzi platformy Azure.
Chociaż nie jest to wymagane do utworzenia aplikacji planu Flex Consumption, potrzebny jest projekt kodu, aby móc wdrażać i weryfikować nową aplikację funkcji. Ukończ pierwszą część jednego z tych artykułów szybkiego startu, w której utworzysz projekt kodu z funkcją wyzwalaną przez protokół HTTP:
- Tworzenie projektu usługi Azure Functions z poziomu wiersza polecenia
- Tworzenie projektu usługi Azure Functions przy użyciu programu Visual Studio Code
Aby utworzyć aplikację w nowym planie Flex Consumption podczas wdrażania narzędzia Maven, musisz utworzyć projekt aplikacji lokalnej, a następnie zaktualizować plik pom.xml projektu. Aby uzyskać więcej informacji, zobacz Create a Java Flex Consumption app using Maven (Tworzenie aplikacji Java Flex Consumption przy użyciu narzędzia Maven)
Wróć do tego artykułu po utworzeniu i uruchomieniu projektu lokalnego, ale zanim zostanie wyświetlony monit o utworzenie zasobów platformy Azure. W następnej sekcji utworzysz aplikację funkcji i inne zasoby platformy Azure.
Tworzenie aplikacji Flex Consumption
W tej sekcji pokazano, jak utworzyć aplikację funkcji w planie Flex Consumption przy użyciu interfejsu wiersza polecenia platformy Azure, witryny Azure Portal lub programu Visual Studio Code. Aby zapoznać się z przykładem tworzenia aplikacji w planie Flex Consumption przy użyciu szablonów Bicep/ARM, zobacz repozytorium Flex Consumption.
Jeśli zdecydujesz się utworzyć i wdrożyć aplikację przy użyciu narzędzia Maven, możesz pominąć tę sekcję.
Aby obsługiwać kod funkcji, należy utworzyć trzy zasoby:
- Grupa zasobów, która jest kontenerem logicznym dla powiązanych zasobów.
- Konto magazynu, które służy do obsługi stanu i innych informacji o funkcjach.
- Aplikacja funkcji w planie Flex Consumption, która udostępnia środowisko do wykonywania kodu funkcji. Aplikacja funkcji mapuje na lokalny projekt funkcji i umożliwia grupowanie funkcji jako jednostki logicznej w celu łatwiejszego zarządzania, wdrażania i udostępniania zasobów w planie Flex Consumption.
Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:
az loginPolecenie
az loginpowoduje zalogowanie cię do konta platformy Azure.Użyj polecenia
az functionapp list-flexconsumption-locationsaby przejrzeć listę regionów, które obecnie obsługują konsumpcję Flex w kolejności alfabetycznej.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Utwórz grupę zasobów w jednym z aktualnie obsługiwanych regionów wymienionych w poleceniu w poprzednim kroku.
az group create --name <RESOURCE_GROUP> --location <REGION>W poprzednim poleceniu zastąp
<RESOURCE_GROUP>na wartość unikatową w subskrypcji, a<REGION>na jeden z aktualnie obsługiwanych regionów. Polecenie az group create tworzy grupę zasobów.Utwórz konto magazynu ogólnego przeznaczenia w grupie zasobów i regionie:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access falseW poprzednim przykładzie zastąp
<STORAGE_NAME>nazwą odpowiednią dla Ciebie i unikatową w Azure Storage. Nazwy muszą zawierać od trzech do 24 znaków składających się tylko z cyfr i małych liter.Standard_LRSokreśla konto ogólnego przeznaczenia obsługiwane przez usługę Azure Functions zgodnie z wymaganiami dotyczącymi konta magazynu. Polecenie az storage account create tworzy konto magazynu.Ważne
Konto magazynu służy do przechowywania ważnych danych aplikacji, czasami w tym samego kodu aplikacji. Należy ograniczyć dostęp z innych aplikacji i użytkowników do konta magazynu.
Utwórz aplikację funkcji na platformie Azure:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0Aplikacje języka C# uruchamiane w procesie nie są obecnie obsługiwane podczas uruchamiania w planie Flex Consumption.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17W przypadku aplikacji Java język Java 11 jest również obecnie obsługiwany.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11W przypadku aplikacji języka Python język Python 3.10 jest również obecnie obsługiwany.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4W tym przykładzie zastąp wartości i
<RESOURCE_GROUP><STORAGE_NAME>grupą zasobów oraz nazwą konta użytego w poprzednim kroku. Zastąp<APP_NAME>również globalnie unikatową nazwą odpowiednią dla Ciebie. Jest<APP_NAME>to również domyślna domena serwera nazw domen (DNS) dla aplikacji funkcji. Polecenieaz functionapp createtworzy aplikację funkcji na platformie Azure.To polecenie tworzy aplikację funkcji uruchomioną w planie Flex Consumption.
Ponieważ aplikacja została utworzona bez określania zawsze gotowych wystąpień, aplikacja ponosi koszty tylko podczas aktywnego wykonywania funkcji. Polecenie tworzy również skojarzone wystąpienie usługi aplikacja systemu Azure Insights w tej samej grupie zasobów, za pomocą której można monitorować aplikację funkcji i wyświetlać dzienniki. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions.
Wdrażanie projektu kodu
W przypadku wdrożenia aplikacje planu Flex Consumption używają kontenera usługi Blob Storage do hostowania plików pakietów .zip zawierających kod projektu i wszystkie biblioteki wymagane do uruchomienia aplikacji. Aby uzyskać więcej informacji, zobacz Opcje wdrażania.
Jeśli zdecydujesz się utworzyć i wdrożyć aplikację przy użyciu narzędzia Maven, możesz pominąć tę sekcję.
Możesz wdrożyć kod projektu w istniejącej aplikacji funkcji przy użyciu różnych narzędzi:
- Interfejs wiersza polecenia platformy Azure
- Ciągłe wdrażanie
- Podstawowe narzędzia
- Visual Studio Code
Interfejs wiersza polecenia platformy Azure umożliwia przekazanie pliku pakietu wdrożeniowego do obszaru współdzielonego wdrożenia aplikacji funkcji na platformie Azure. Aby to wdrożenie było możliwe, należy utworzyć plik pakietu .zip, który może zostać uruchomiony po zainstalowaniu pakietu w aplikacji.
Ten plik pakietu musi zawierać wszystkie pliki wyjściowe budowy i przywoływane biblioteki wymagane do uruchomienia projektu.
W przypadku projektów z dużą liczbą bibliotek należy spakować katalog główny pliku projektu i zażądać kompilacji zdalnej.
W przypadku projektów języka Python należy spakować katalog główny pliku projektu i zawsze żądać kompilacji zdalnej. Użycie kompilacji zdalnej zapobiega potencjalnym problemom, które mogą wystąpić podczas kompilowania projektu w systemie Windows, który ma zostać wdrożony w systemie Linux.
Korzystając z preferowanego narzędzia programistycznego, skompiluj projekt kodu.
Utwórz plik .zip zawierający dane wyjściowe katalogu kompilacji. Aby uzyskać więcej informacji, zobacz Struktura projektu.
W razie potrzeby zaloguj się do konta platformy Azure i wybierz aktywną subskrypcję przy użyciu
az loginpolecenia .az loginUruchom polecenie
az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Korzystając z preferowanego narzędzia programistycznego, skompiluj projekt kodu.
Utwórz plik .zip zawierający dane wyjściowe katalogu kompilacji. Aby uzyskać więcej informacji, zobacz Struktura folderów.
W razie potrzeby zaloguj się do konta platformy Azure i wybierz aktywną subskrypcję przy użyciu
az loginpolecenia .az loginUruchom polecenie
az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Utwórz plik .zip zawierający katalog główny projektu kodu. Aby uzyskać więcej informacji, zobacz Struktura folderów.
W razie potrzeby zaloguj się do konta platformy Azure i wybierz aktywną subskrypcję przy użyciu
az loginpolecenia .az loginUruchom polecenie
az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Utwórz plik .zip zawierający katalog główny projektu kodu. Aby uzyskać więcej informacji, zobacz Struktura folderów.
W razie potrzeby zaloguj się do konta platformy Azure i wybierz aktywną subskrypcję przy użyciu
az loginpolecenia .az loginUruchom polecenie
az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueUpewnij się, że ustawiono opcję
--build-remote truewykonania kompilacji zdalnej.
Utwórz plik .zip zawierający katalog główny projektu kodu. Aby uzyskać więcej informacji, zobacz Struktura folderów.
W razie potrzeby zaloguj się do konta platformy Azure i wybierz aktywną subskrypcję przy użyciu
az loginpolecenia .az loginUruchom polecenie
az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueUpewnij się, że ustawiono opcję
--build-remote truewykonania kompilacji zdalnej.
Tworzenie i wdrażanie aplikacji przy użyciu narzędzia Maven
Za pomocą narzędzia Maven można utworzyć aplikację funkcji hostowanej flex consumption i wymagane zasoby podczas wdrażania, modyfikując plik pom.xml.
Utwórz projekt kodu Java, wykonując pierwszą część jednego z następujących artykułów Szybki start:
W projekcie kodu Java otwórz plik pom.xml i wprowadź te zmiany w celu utworzenia aplikacji funkcji w planie Flex Consumption:
Zmień wartość na
<properties>.<azure.functions.maven.plugin.version>1.34.0.<plugin>.<configuration>W sekcji ,azure-functions-maven-plugindodaj lub usuń komentarz<pricingTier>elementu w następujący sposób:<pricingTier>Flex Consumption</pricingTier>
(Opcjonalnie) Dostosuj plan Flex Consumption we wdrożeniu narzędzia Maven, dołączając również te elementy w
<plugin>.<configuration>sekcji : .-
<instanceSize>— ustawia rozmiar pamięci wystąpienia dla aplikacji funkcji. Domyślna wartość to2048. -
<maximumInstances>— ustawia najwyższą wartość maksymalnej liczby wystąpień aplikacji funkcji. -
<alwaysReadyInstances>— ustawia zawsze gotowe liczby wystąpień z elementami podrzędnymi dla grup wyzwalaczy HTTP (<http>), grup rozszerzenia Durable Functions (<durable>) i innych określonych wyzwalaczy (<my_function>). Jeśli ustawisz dowolną liczbę wystąpień większą niż zero, opłaty są naliczane za te wystąpienia, niezależnie od tego, czy funkcje są wykonywane, czy nie. Aby uzyskać więcej informacji, zobacz Rozliczenia.
-
Przed wdrożeniem zaloguj się do subskrypcji platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
az loginPolecenie
az loginpowoduje zalogowanie cię do konta platformy Azure.Użyj następującego polecenia, aby wdrożyć projekt kodu w nowej aplikacji funkcji w rozwiązaniu Flex Consumption.
mvn azure-functions:deployNarzędzie Maven używa ustawień w szablonie pom.xml do tworzenia aplikacji funkcji w planie Flex Consumption na platformie Azure wraz z innymi wymaganymi zasobami. Jeśli te zasoby już istnieją, kod jest wdrażany w aplikacji funkcji, zastępując istniejący kod.
Włączanie integracji z siecią wirtualną
Możesz włączyć integrację sieci wirtualnej dla aplikacji w planie Flex Consumption. W przykładach w tej sekcji założono, że Twoje konto zawiera już sieć wirtualną i podsieć. Integrację z siecią wirtualną można włączyć podczas tworzenia aplikacji lub w późniejszym czasie.
Ważne
Plan Flex Consumption obecnie nie obsługuje podsieci o nazwach zawierających znaki podkreślenia (_).
Aby włączyć sieć wirtualną podczas tworzenia aplikacji:
Integrację z siecią wirtualną az functionapp create można włączyć, uruchamiając polecenie i uwzględniając --vnet parametry i --subnet .
Utwórz sieć wirtualną i podsieć, jeśli jeszcze jej nie masz.
Wykonaj kroki 1–4 w temacie Tworzenie aplikacji Flex Consumption, aby utworzyć zasoby wymagane przez aplikację.
az functionapp createUruchom polecenie, w tym--vnetparametry i--subnet, jak w tym przykładzie:az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>Wartość
<VNET_RESOURCE_ID>to identyfikator zasobu dla sieci wirtualnej, który ma format:/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>. Tego polecenia można użyć, aby uzyskać listę identyfikatorów sieci wirtualnej, filtrowanych według<RESOURCE_GROUP>:az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.
Aby uzyskać kompleksowe przykłady tworzenia aplikacji w rozwiązaniu Flex Consumption z integracją sieci wirtualnej, zobacz następujące zasoby:
- Flex Consumption: HTTP do Event Hubs przy użyciu integracji z siecią wirtualną
- Elastyczne Zużycie: wyzwalane z usługi Service Bus przy użyciu integracji z siecią wirtualną
Aby zmodyfikować lub usunąć integrację sieci wirtualnej w istniejącej aplikacji:
az functionapp vnet-integration add Użyj polecenia , aby włączyć integrację sieci wirtualnej z istniejącą aplikacją funkcji:
az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
Użyj polecenia , az functionapp vnet-integration remove aby wyłączyć integrację sieci wirtualnej w aplikacji:
az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Użyj polecenia , az functionapp vnet-integration list aby wyświetlić listę bieżących integracji sieci wirtualnej dla aplikacji:
az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Podczas wybierania podsieci należy wziąć pod uwagę następujące zagadnienia:
- Wybrana podsieć nie może być jeszcze używana do innych celów, takich jak prywatne punkty końcowe lub punkty końcowe usługi, ani być delegowana do innego planu hostingu lub usługi.
- Nie można współużytkować tej samej podsieci między środowiskiem usługi Container Apps i aplikacją Flex Consumption.
- Tę samą podsieć można udostępnić więcej niż jedną aplikację uruchomioną w planie Flex Consumption. Ponieważ zasoby sieciowe są współużytkowane we wszystkich aplikacjach, jedna aplikacja funkcji może mieć wpływ na wydajność innych w tej samej podsieci.
- W ramach planu zużycia elastycznego pojedyncza aplikacja funkcji może używać maksymalnie 40 adresów IP, nawet gdy aplikacja skaluje się poza 40 wystąpień. Chociaż ta zasada ogólna jest przydatna podczas szacowania wymaganego rozmiaru podsieci, nie jest ona ściśle egzekwowana.
Konfigurowanie ustawień wdrażania
W planie Flex Consumption pakiet wdrożeniowy zawierający kod aplikacji jest przechowywany w kontenerze usługi Azure Blob Storage. Domyślnie wdrożenia używają tego samego konta magazynu (AzureWebJobsStorage) i parametry połączenia wartości używanej przez środowisko uruchomieniowe usługi Functions do obsługi aplikacji. Parametry połączenia jest przechowywany w ustawieniu DEPLOYMENT_STORAGE_CONNECTION_STRING aplikacji. Zamiast tego można wyznaczyć kontener obiektów blob na osobnym koncie magazynu jako źródło wdrożenia dla kodu. Możesz również zmienić metodę uwierzytelniania używaną do uzyskiwania dostępu do kontenera.
Dostosowane źródło wdrożenia powinno spełniać następujące kryteria:
- Konto magazynu musi już istnieć.
- Kontener do użycia na potrzeby wdrożeń musi również istnieć.
- Jeśli więcej niż jedna aplikacja używa tego samego konta magazynu, każdy z nich powinien mieć własny kontener wdrażania. Użycie unikatowego kontenera dla każdej aplikacji uniemożliwia zastępowanie pakietów wdrożeniowych, co mogłoby się zdarzyć, jeśli aplikacje współużytkował ten sam kontener.
Podczas konfigurowania uwierzytelniania magazynu wdrożenia należy pamiętać o następujących kwestiach:
- Najlepszym rozwiązaniem w zakresie zabezpieczeń jest użycie tożsamości zarządzanych podczas nawiązywania połączenia z usługą Azure Storage z aplikacji. Aby uzyskać więcej informacji, zobacz Połączenia.
- Jeśli używasz parametry połączenia do nawiązywania połączenia z kontem magazynu wdrożenia, ustawienie aplikacji zawierające parametry połączenia musi już istnieć.
- Jeśli używasz tożsamości zarządzanej przypisanej przez użytkownika, podana tożsamość zostanie połączona z aplikacją funkcji. Rola ograniczona
Storage Blob Data Contributordo konta magazynu wdrożenia jest również przypisywana do tożsamości. - W przypadku korzystania z tożsamości zarządzanej przypisanej przez system tożsamość jest tworzona, gdy w aplikacji nie istnieje jeszcze prawidłowa tożsamość przypisana przez system. Gdy tożsamość przypisana przez system istnieje,
Storage Blob Data Contributorrola o zakresie do konta magazynu wdrożenia jest również przypisywana do tożsamości.
Aby skonfigurować ustawienia wdrożenia podczas tworzenia aplikacji funkcji w planie Flex Consumption:
az functionapp create Użyj polecenia i podaj następujące dodatkowe opcje, które dostosują magazyn wdrożenia:
| Parametr | opis |
|---|---|
--deployment-storage-name |
Nazwa konta magazynu wdrożenia. |
--deployment-storage-container-name |
Nazwa kontenera na koncie, który będzie zawierał pakiet wdrożeniowy aplikacji. |
--deployment-storage-auth-type |
Typ uwierzytelniania używany do nawiązywania połączenia z kontem magazynu wdrożenia. Zaakceptowane wartości obejmują StorageAccountConnectionString, UserAssignedIdentityi SystemAssignedIdentity. |
--deployment-storage-auth-value |
W przypadku używania StorageAccountConnectionStringparametru ten parametr jest ustawiany na nazwę ustawienia aplikacji zawierającego parametry połączenia na konto magazynu wdrożenia. Po ustawieniu UserAssignedIdentity ten parametr jest przypisany do nazwy identyfikatora zasobu tożsamości, którego chcesz użyć. |
W tym przykładzie utworzono aplikację funkcji w planie Flex Consumption z oddzielnym kontem magazynu wdrożenia i tożsamością przypisaną przez użytkownika:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>
Można również zmodyfikować konfigurację magazynu wdrożenia dla istniejącej aplikacji.
az functionapp deployment config set Użyj polecenia , aby zmodyfikować konfigurację magazynu wdrożenia:
az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>
Konfigurowanie pamięci wystąpienia
Rozmiar pamięci wystąpienia używany przez plan Flex Consumption można jawnie ustawić podczas tworzenia aplikacji. Aby uzyskać więcej informacji na temat obsługiwanych rozmiarów, zobacz Rozmiary wystąpień.
Aby ustawić rozmiar pamięci wystąpienia, który różni się od domyślnego podczas tworzenia aplikacji:
--instance-memory Określ parametr w poleceniuaz functionapp create. W tym przykładzie utworzono aplikację w języku C# o rozmiarze 4096wystąpienia :
az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0
W dowolnym momencie możesz zmienić ustawienie rozmiaru pamięci wystąpienia używane przez aplikację.
W tym przykładzie użyto az functionapp scale config set polecenia, aby zmienić ustawienie rozmiaru pamięci wystąpienia na 512 MB:
az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 512
Ustawianie zawsze gotowych liczników wystąpień
Można ustawić określoną liczbę zawsze gotowych wystąpień dla grup skalowania poszczególnych funkcji lub poszczególnych funkcji, aby zachować załadowane i gotowe do wykonania funkcje. Istnieją trzy specjalne grupy, jak w skalowaniu poszczególnych funkcji:
-
http— Wszystkie funkcje wyzwalane przez protokół HTTP w aplikacji są skalowane razem, tworząc własne wystąpienia. -
durable— Wszystkie funkcje wyzwalane przez rozszerzenie Durable (Orchestration, Activity, Entity) w aplikacji są skalowane razem do własnych wystąpień. -
blob— Wszystkie funkcje wyzwalane przez obiekt blob (Event Grid) w aplikacji są skalowane razem do własnych wystąpień.
Użyj http, durable lub blob jako nazwę dla ustawienia pary wartości nazwy, aby skonfigurować zawsze gotowe liczniki dla tych grup. Dla wszystkich innych funkcji w aplikacji należy skonfigurować zawsze gotowe dla każdej funkcji przy użyciu formatu function:<FUNCTION_NAME>=n.
Aby zdefiniować jedno lub więcej oznaczeń gotowych do użycia instancji, użyj parametru --always-ready-instances z poleceniem az functionapp create. W tym przykładzie ustawiono zawsze gotową liczbę wystąpień dla wszystkich funkcji wyzwalanych przez protokół HTTP na wartość 10:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10
W tym przykładzie ustawiono zawsze gotową liczbę wystąpień dla wszystkich funkcji 3 wyzwalacza Durable i ustawia zawsze gotową liczbę wystąpień dla 2 funkcji wyzwalanej przez usługę Service Bus o nazwie function5:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2
Można również modyfikować zawsze gotowe wystąpienia w istniejącej aplikacji, dodając lub usuwając oznaczenia wystąpień lub zmieniając istniejące liczby oznaczeń wystąpień.
W tym przykładzie użyto az functionapp scale config always-ready set polecenia , aby zmienić zawsze gotową liczbę wystąpień dla grupy wyzwalaczy HTTP na 10:
az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10
Aby usunąć zawsze gotowe wystąpienia, użyj az functionapp scale config always-ready delete polecenia , jak w tym przykładzie, który usuwa wszystkie zawsze gotowe wystąpienia z grupy wyzwalaczy HTTP, a także funkcji o nazwie hello_world:
az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world
Ustawianie limitów współbieżności HTTP
Jeśli nie ustawisz określonych limitów, wartości domyślne współbieżności HTTP dla aplikacji planu Flex Consumption są określane na podstawie ustawienia rozmiaru wystąpienia. Aby uzyskać więcej informacji, zobacz Współbieżność wyzwalacza HTTP.
Oto jak ustawić limity współbieżności HTTP dla istniejącej aplikacji:
az functionapp scale config set Użyj polecenia , aby ustawić określone limity współbieżności HTTP dla aplikacji, niezależnie od rozmiaru wystąpienia.
az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10
W tym przykładzie ustawiono poziom współbieżności wyzwalacza HTTP na 10wartość . Po ustawieniu wartości współbieżności HTTP ta wartość jest zachowywana pomimo wszelkich zmian w ustawieniu rozmiaru wystąpienia aplikacji.
Ustawianie strategii aktualizacji witryny
Plan Flex Consumption w wyjątkowy sposób obsługuje dwie różne strategie aktualizacji witryn, które kontrolują sposób obsługi wdrożeń kodu i zmian konfiguracji przez aplikację funkcjonalną. Domyślnie aplikacje planu Flex Consumption używają Recreate strategii, która przerywa aktualnie wykonywane funkcje podczas wdrożeń. Aby włączyć wdrożenia bez przestojów, możesz zamiast tego skonfigurować strategię RollingUpdate . Aby uzyskać więcej informacji, zobacz Strategie aktualizacji witryn w rozwiązaniu Flex Consumption.
Uwaga / Notatka
Konfiguracja strategii aktualizacji witryny jest obecnie dostępna w publicznej wersji zapoznawczej i jest dostępna tylko za pośrednictwem szablonów Bicep lub ARM. Nie można skonfigurować tego ustawienia przy użyciu interfejsu wiersza polecenia platformy Azure, witryny Azure Portal lub programu Visual Studio Code.
Konfiguracja strategii aktualizacji witryny nie jest obecnie obsługiwana w interfejsie wiersza polecenia platformy Azure. Użyj szablonów Bicep lub ARM zgodnie z opisem w konfigurowaniu strategii aktualizacji strony.
Wyświetlanie aktualnie obsługiwanych regionów
Aby wyświetlić listę regionów, które obecnie obsługują plany Flex Consumption:
Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:
az loginPolecenie
az loginpowoduje zalogowanie cię do konta platformy Azure.Użyj polecenia
az functionapp list-flexconsumption-locationsaby przejrzeć listę regionów, które obecnie obsługują konsumpcję Flex w kolejności alfabetycznej.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Podczas tworzenia aplikacji w witrynie Azure Portal lub przy użyciu programu Visual Studio Code obecnie nieobsługiwane regiony są odfiltrowane z listy regionów.
Monitorowanie aplikacji na platformie Azure
Usługa Azure Monitor udostępnia te odrębne zestawy metryk, które ułatwiają lepsze zrozumienie sposobu działania aplikacji funkcji na platformie Azure:
- Metryki platformy: udostępnia szczegółowe informacje na poziomie infrastruktury
- Application Insights: udostępnia szczegółowe informacje na poziomie kodu, w tym ślady i dzienniki błędów.
Jeśli włączysz usługę Application Insights w aplikacji, możesz:
- Śledź szczegółowe czasy wykonywania i zależności
- Monitorowanie wydajności poszczególnych funkcji
- Analizowanie błędów i wyjątków
- Korelowanie metryk platformy z zachowaniem aplikacji za pomocą zapytań niestandardowych
Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions.
Obsługiwane metryki
Uruchom ten skrypt, aby wyświetlić wszystkie metryki platformy, które są obecnie dostępne w aplikacji:
appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
az monitor metrics list-definitions --resource $appId --query "[].{Name:name.localizedValue,Value:name.value}" -o table
W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji. Ten skrypt pobiera w pełni kwalifikowany identyfikator aplikacji i zwraca dostępne metryki platformy w tabeli.
Wyświetlanie metryk
Bieżące metryki można przeglądać w witrynie Azure Portal lub przy użyciu interfejsu wiersza polecenia platformy Azure.
W witrynie Azure Portal można również tworzyć alerty metryk i przypinać wykresy oraz inne raporty do pulpitów nawigacyjnych w portalu.
Użyj tego skryptu, aby wygenerować raport bieżących metryk dla aplikacji:
appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
appId=$(az functionapp show --name func-fuxigh6c255de --resource-group exampleRG --query id -o tsv)
echo -e "\nAlways-ready and on-emand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionCount" --interval PT1H --output table
echo -e "\nExecution units (MB-ms) in always-ready and on-emand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionUnits" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionUnits" --interval PT1H --output table
echo -e "\nAlways-ready resource utilization..."
az monitor metrics list --resource $appId --metric "AlwaysReadyUnits" --interval PT1H --output table
echo -e "\nMemory utilization..."
az monitor metrics list --resource $appId --metric "AverageMemoryWorkingSet" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "MemoryWorkingSet" --interval PT1H --output table
echo -e "\nInstance count and CPU utilization..."
az monitor metrics list --resource $appId --metric "InstanceCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "CpuPercentage" --interval PT1H --output table
Aby dowiedzieć się więcej o metrykach usługi Azure Functions, zobacz Monitorowanie usługi Azure Functions.
Wyświetlanie dzienników
Gdy aplikacja jest połączona z usługą Application Insights, możesz lepiej analizować wydajność aplikacji i rozwiązywać problemy podczas wykonywania.
- Używanie funkcji "Wydajność" do analizowania czasów odpowiedzi i zależności
- Użyj opcji "Błędy", aby zidentyfikować wszelkie błędy występujące po migracji
- Tworzenie zapytań niestandardowych w dziennikach w celu analizowania zachowania funkcji. Przykład:
Użyj tego zapytania, aby porównać wskaźniki skuteczności według instancji.
requests
| where timestamp > ago(7d)
| summarize successCount=countif(success == true), failureCount=countif(success == false) by bin(timestamp, 1h), cloud_RoleName
| render timechart
Użyj tego zapytania, aby przeanalizować liczbę wystąpień, które aktywnie przetwarzały funkcję:
let _startTime = ago(20m); //Adjust start time as needed
let _endTime = now(); //Adjust end time as needed
let bins = 1s; //Adjust bin as needed - this will give per second results
requests
| where operation_Name == 'EventHubsTrigger' //Replace with the name of the function in the function app that you are analyzing
| where timestamp between(_startTime .. _endTime)
| make-series dcount(cloud_RoleInstance) default=0 on timestamp from _startTime to _endTime step bins
| render columnchart
Wyświetlanie kosztów
Ponieważ możesz dostosować wydajność i koszty operacyjne aplikacji, ważne jest, aby śledzić koszty związane z uruchamianiem aplikacji w planie Flex Consumption.
Aby wyświetlić bieżące koszty:
Na stronie aplikacji funkcji w portalu Azure wybierz link grupy zasobów.
Na stronie grupy zasobów wybierz Cost Management>Analiza kosztów.
Przejrzyj bieżące koszty i trajektorię kosztów samej aplikacji.
Opcjonalnie wybierz pozycję Cost Management, następnie >, a potem + Dodaj, aby utworzyć nowy alert dla aplikacji.
Dostrajanie aplikacji
Plan Flex Consumption oferuje kilka ustawień, które można dostosować, aby uczynić bardziej precyzyjną wydajność aplikacji. Rzeczywista wydajność i koszty mogą się różnić w zależności od wzorców i konfiguracji obciążeń specyficznych dla aplikacji. Na przykład wyższe rozmiary wystąpień pamięci mogą zwiększyć wydajność operacji intensywnie korzystających z pamięci, ale przy wyższym koszcie w przeliczeniu na aktywny okres.
Poniżej przedstawiono kilka korekt, które można dostosować w celu dostosowania wydajności i kosztów:
- Dostosuj ustawienia współbieżności, aby zmaksymalizować wydajność dla każdej instancji.
- Wybierz odpowiedni rozmiar pamięci dla obciążenia. Wyższe rozmiary pamięci kosztują więcej, ale mogą zwiększyć wydajność.