Udostępnij za pośrednictwem


Tworzenie aplikacji funkcji i zarządzanie nimi w planie Flex Consumption

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

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.
  1. Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:

    az login
    

    Polecenie az login powoduje zalogowanie cię do konta platformy Azure.

  2. Użyj polecenia , az functionapp list-flexconsumption-locations aby przejrzeć listę regionów, które obecnie obsługują usługę Flex Consumption.

    az functionapp list-flexconsumption-locations --output table
    
  1. Utwórz grupę zasobów w jednym z aktualnie obsługiwanych regionów:

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    W powyższym poleceniu zastąp <RESOURCE_GROUP> wartość unikatową w subskrypcji i <REGION> jednym z aktualnie obsługiwanych regionów. Polecenie az group create tworzy grupę zasobów.

  2. 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 false
    

    W poprzednim przykładzie zastąp <STORAGE_NAME> ciąg nazwą odpowiednią dla Ciebie i unikatową w usłudze Azure Storage. Nazwy muszą zawierać od trzech do 24 znaków i tylko małe litery. Standard_LRS określa konto ogólnego przeznaczenia, które jest obsługiwane przez funkcje. 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.

  3. 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.0 
    

    Aplikacje 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 17 
    

    W 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 20 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11 
    

    W 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.4 
    

    W 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. Polecenie az functionapp create tworzy 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

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:

Ważne

Wdrażanie w istniejącej aplikacji funkcji zawsze zastępuje zawartość tej aplikacji na platformie Azure.

  1. W palecie poleceń wprowadź i wybierz pozycję Azure Functions: Deploy to Function App (Azure Functions: Wdróż w aplikacji funkcji).

  2. Wybierz właśnie utworzoną aplikację funkcji. Po wyświetleniu monitu o zastąpienie poprzednich wdrożeń wybierz pozycję Wdróż , aby wdrożyć kod funkcji w nowym zasobie aplikacji funkcji.

  3. Po zakończeniu wdrażania wybierz pozycję Wyświetl dane wyjściowe , aby wyświetlić wyniki tworzenia i wdrażania, w tym utworzone zasoby platformy Azure. Jeśli przegapisz powiadomienie, wybierz ikonę dzwonka w prawym dolnym rogu, aby zobaczyć je ponownie.

    Zrzut ekranu przedstawiający okno Wyświetl dane wyjściowe.

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.

  1. Utwórz projekt kodu Java, wykonując pierwszą część jednego z następujących artykułów Szybki start:

  2. 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>
      
  3. (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ść to 2048.
    • <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.
  4. Przed wdrożeniem zaloguj się do subskrypcji platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.

    az login
    

    Polecenie az login powoduje zalogowanie cię do konta platformy Azure.

  5. Użyj następującego polecenia, aby wdrożyć projekt kodu w nowej aplikacji funkcji w rozwiązaniu Flex Consumption.

    mvn azure-functions:deploy
    

    Narzę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 utworzono już sieć wirtualną z podsiecią na twoim koncie. 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 .

  1. Utwórz sieć wirtualną i podsieć, jeśli jeszcze tego nie zrobiono.

  2. Wykonaj kroki 1–4 w temacie Tworzenie aplikacji Flex Consumption, aby utworzyć zasoby wymagane przez aplikację.

  3. az functionapp create Uruchom polecenie, w tym --vnet parametry 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/<RESOURCER_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:

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.
  • 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 reguła kciuka jest przydatna podczas szacowania wymaganego rozmiaru podsieci, nie jest ściśle wymuszana.

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:

  • 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 Contributor do 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 Contributor rola 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. W przypadku używania UserAssignedIdentityparametru ten parametr jest ustawiany na nazwę identyfikatora zasobu tożsamości, której 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_ACCCOUNT_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_ACCCOUNT_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 Pamięć wystąpienia.

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 4096 MB:

az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 4096

Ustawianie zawsze gotowych liczników wystąpień

Można ustawić wiele 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 do własnych wystąpień.
  • 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 wartości http, durable lub blob jako nazwy ustawienia pary wartości nazwy, aby skonfigurować zawsze gotowe liczby 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.

Użyj parametru --always-ready-instances z poleceniem az functionapp create , aby zdefiniować jedno lub więcej zawsze gotowych oznaczeń wystąpienia. W tym przykładzie ustawiono zawsze gotową liczbę wystąpień dla wszystkich funkcji wyzwalanych przez protokół HTTP na wartość 5:

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.

Wyświetlanie aktualnie obsługiwanych regionów

Aby wyświetlić listę regionów, które obecnie obsługują plany Flex Consumption:

  1. Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:

    az login
    

    Polecenie az login powoduje zalogowanie cię do konta platformy Azure.

  2. Użyj polecenia , az functionapp list-flexconsumption-locations aby przejrzeć listę regionów, które obecnie obsługują usługę Flex Consumption.

    az functionapp list-flexconsumption-locations --output 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.