Udostępnij przez


Migrowanie aplikacji z planu zużycia do planu Flex Consumption

Ten artykuł zawiera instrukcje krok po kroku dotyczące migrowania istniejących aplikacji funkcji hostowanych w planie Zużycie w usłudze Azure Functions, aby zamiast tego używać planu Flex Consumption.

Sposób migrowania aplikacji do planu Flex Consumption zależy od tego, czy aplikacja działa w systemie Linux, czy w systemie Windows. Pamiętaj, aby wybrać system operacyjny w górnej części artykułu.

Wskazówka

Usługa Azure Functions udostępnia polecenia AZ CLI w az functionapp flex-migration, które automatyzują większość kroków wymaganych do przeniesienia Twojej aplikacji Linux z planu Zużycie do planu Flex Consumption. Ten artykuł zawiera te polecenia, które są obecnie obsługiwane tylko w przypadku aplikacji działających w systemie Linux.

Podczas migracji istniejących aplikacji bezserwerowych funkcje mogą korzystać z tych korzyści z planu Flex Consumption:

  • Zwiększona wydajność: aplikacje korzystają z ulepszonej skalowalności i gotowych do działania instancji w celu zmniejszenia wpływu zimnego startu.
  • Ulepszone kontrolki: dostrajanie funkcji za pomocą ustawień skalowania poszczególnych funkcji i współbieżności.
  • Rozszerzona sieć: integracja sieci wirtualnej i prywatne punkty końcowe umożliwiają uruchamianie funkcji zarówno w sieciach publicznych, jak i prywatnych.
  • Przyszłe inwestycje w platformę: jako najlepszy plan hostingu bezserwerowego, bieżące i przyszłe inwestycje są realizowane na platformie Flex Consumption jako pierwsze w celu zapewnienia stabilności, wydajności i funkcji platformy.

Plan Zużycia Flex to zalecana opcja hostingu serwerless dla Twoich funkcji w przyszłości. Aby uzyskać więcej informacji, zobacz Korzyści z planu Flex Consumption. Aby uzyskać szczegółowe porównanie planów hostingu, zobacz Opcje hostingu usługi Azure Functions.

Rozważania

Przed rozpoczęciem migracji należy pamiętać o następujących kwestiach:

  • Jeśli korzystasz z aplikacji funkcji planu Konsumpcji w regionach Azure Government, zapoznaj się z tymi wskazówkami, aby przygotować się na migrację zanim rozwiązanie Flex Consumption zostanie włączone w Azure Government.

  • Ze względu na znaczącą konfigurację i różnice w zachowaniu między dwoma planami nie można przenieść istniejącej aplikacji planu zużycie do planu Flex Consumption. Zamiast tego proces migracji polega na utworzeniu nowej aplikacji w planie Flex Consumption, która jest odpowiednikiem Twojej obecnej aplikacji. Ta nowa aplikacja jest uruchamiana w tej samej grupie zasobów i z tymi samymi zależnościami co bieżąca aplikacja.

  • Należy określić priorytety migracji aplikacji uruchamianych w planie Zużycie w systemie Linux.

  • W tym artykule założono, że masz ogólną wiedzę na temat pojęć i architektur funkcji oraz znasz funkcje migrowanych aplikacji. Takie pojęcia obejmują wyzwalacze i powiązania, uwierzytelnianie i dostosowywanie sieci.

  • W tym artykule pokazano, jak ocenić bieżącą aplikację i wdrożyć nową aplikację planu Flex Consumption przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Jeśli bieżące wdrożenie aplikacji jest definiowane przy użyciu infrastruktury jako kodu (IaC), zazwyczaj można wykonać te same kroki. Te same działania można wykonać bezpośrednio w szablonach usługi ARM lub plikach Bicep, z uwzględnieniem tych kwestii specyficznych dla zasobów.

Wymagania wstępne

  • Dostęp do subskrypcji platformy Azure zawierającej przynajmniej jedną aplikację funkcji do migracji. Konto używane do uruchamiania poleceń Azure CLI musi mieć następujące uprawnienia:

    • Tworzenie aplikacji funkcji i planów hostingu usługi App Service oraz zarządzanie nimi.
    • Przypisywanie ról do tożsamości zarządzanych.
    • Tworzenie kont magazynu i zarządzanie nimi.
    • Tworzenie zasobów usługi Application Insights i zarządzanie nimi.
    • Uzyskaj dostęp do wszystkich zasobów zależnych aplikacji, takich jak Azure Key Vault, Azure Service Bus lub Azure Event Hubs.

    Przypisanie do ról Właściciel lub Współautor w grupie zasobów zwykle zapewnia wystarczające uprawnienia.

  • Interfejs wiersza polecenia platformy Azure w wersji 2.77.0 lub nowszej. Skrypty są testowane przy użyciu interfejsu wiersza polecenia platformy Azure w usłudze Azure Cloud Shell.

  • Rozszerzenie resource-graph , które można zainstalować za pomocą az extension add polecenia :

    az extension add --name resource-graph
    
  • Narzędziejq używane do pracy z danymi wyjściowymi JSON.

Identyfikowanie potencjalnych aplikacji do migracji

Wykonaj następujące kroki, aby utworzyć listę aplikacji funkcyjnych, które należy zmigrować. Na tej liście zanotuj ich nazwy, grupy zasobów, lokalizacje i stosy środowiska uruchomieniowego. Następnie możesz powtórzyć kroki opisane w tym przewodniku dla każdej aplikacji, którą zdecydujesz się przeprowadzić migrację do planu Flex Consumption.

Sposób przechowywania informacji o funkcji aplikacji zależy od tego, czy aplikacja działa w systemie Linux, czy Windows.

W przypadku aplikacji zużycie systemu Linux użyj nowego az functionapp flex-migration list polecenia, aby zidentyfikować aplikacje, które kwalifikują się do migracji:

az functionapp flex-migration list

To polecenie automatycznie skanuje subskrypcję i zwraca dwie tablice:

  • eligible_apps: Aplikacje Linux Consumption, które można migrować do systemu Flex Consumption. Te aplikacje są zgodne z rozwiązaniem Flex Consumption.
  • ineligible_apps: aplikacje, których nie można migrować, wraz z określonymi przyczynami. Przed kontynuowaniem należy przejrzeć i rozwiązać przyczyny niezgodności.

Dane wyjściowe obejmują nazwę aplikacji, grupę zasobów, lokalizację i stos środowiska uruchomieniowego dla każdej aplikacji oraz informacje o stanie uprawnień i gotowości do migracji.

Użyj tego az graph query polecenia, aby wyświetlić listę wszystkich aplikacji funkcjonalnych w Twojej subskrypcji, które są uruchomione w planie konsumpcyjnym.

az graph query -q "resources | where subscriptionId == '$(az account show --query id -o tsv)' \
   | where type == 'microsoft.web/sites' | where ['kind'] == 'functionapp' | where properties.sku == 'Dynamic' \
   | project name, location, resourceGroup" \
   --query data --output table

To polecenie generuje tabelę z nazwą aplikacji, lokalizacją i grupą zasobów dla wszystkich aplikacji Zużycie uruchomionych w systemie Windows w bieżącej subskrypcji.

Jeśli rozszerzenie resource-graph nie jest jeszcze zainstalowane, zostanie wyświetlony monit o zainstalowanie rozszerzenia resource-graph.

Ocena istniejącej aplikacji

Przed migracją do planu Flex Consumption należy wykonać te testy, aby upewnić się, że aplikacja funkcji może zostać pomyślnie zmigrowana:

Potwierdzanie zgodności regionów

Upewnij się, że plan Flex Consumption jest obecnie obsługiwany w tym samym regionie co aplikacja Plan zużycia, którą zamierzasz zmigrować.

Potwierdzone: Gdy dane az functionapp flex-migration list wyjściowe polecenia zawierają aplikację na eligible_apps liście, plan Flex Consumption jest obsługiwany w tym samym regionie używanym przez bieżącą aplikację Zużycie systemu Linux. W takim przypadku możesz kontynuować sprawdzanie zgodności stosu języka.

Wymagane działanie: Kiedy wynik polecenia zawiera Twoją aplikację na liście az functionapp flex-migration list, pojawi się komunikat o błędzie z informacją ineligible_apps. W takim przypadku plan Flex Consumption nie jest jeszcze obsługiwany w regionie używanym przez bieżącą aplikację Zużycie systemu Linux.

Użyj tego az functionapp list-flexconsumption-locations polecenia, aby wyświetlić listę wszystkich regionów, w których jest dostępny plan Flex Consumption:

az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table

To polecenie generuje tabelę regionów świadczenia usługi Azure, w których plan Flex Consumption jest obecnie obsługiwany.

Jeśli Twój region nie jest obecnie obsługiwany, ale mimo to zdecydujesz się na migrację aplikacji funkcji, aplikacja musi działać w innym regionie, w którym obsługiwany jest plan Flex Consumption. Jednak uruchomienie aplikacji w innym regionie niż inne połączone usługi może powodować dodatkowe opóźnienia. Przed ukończeniem migracji upewnij się, że nowy region może spełniać wymagania dotyczące wydajności aplikacji.

Sprawdzanie zgodności stosu językowego

Plany Flex Consumption nie obsługują jeszcze wszystkich platform językowych Functions. Ta tabela wskazuje, które stosy języków są obecnie obsługiwane:

Ustawienie stosu Nazwa stosu Wsparte
dotnet-isolated .NET (model izolowanego pracownika) ✅ Tak
node JavaScript/TypeScript ✅ Tak
java Jawa ✅ Tak
python Python ✅ Tak
powershell PowerShell ✅ Tak
dotnet .NET (model wewnątrzprocesowy) ❌ Nie
custom Niestandardowe procedury obsługi ✅ Tak

Potwierdzone: Jeśli polecenie zawiera Twoją aplikację na az functionapp flex-migration list liście, aplikacja Konsumpcyjna Linux korzysta już z obsługiwanego stosu językowego przez Flex Consumption i możesz kontynuować eligible_apps.

Wymagana akcja:az functionapp flex-migration list Jeśli polecenie uwzględniło Twoją aplikację na ineligible_apps liście z komunikatem o błędzie z informacją Runtime '<name>' not supported for function apps on the Flex Consumption plan., aplikacja Konsumpcyjna systemu Linux nie obsługuje jeszcze środowiska uruchomieniowego wspieranego przez Flex Consumption.

Jeśli aplikacja funkcji używa nieobsługiwanego stosu środowiska uruchomieniowego:

Weryfikowanie zgodności wersji stosu

Przed przeprowadzeniem migracji upewnij się, że wersja stosu uruchomieniowego aplikacji jest obsługiwana w planie Flex Consumption w bieżącym regionie.

Potwierdzone:az functionapp flex-migration list Jeśli polecenie uwzględniło aplikację na eligible_apps liście, aplikacja Zużycie systemu Linux korzysta już z obsługiwanej wersji stosu językowego firmy Flex Consumption i możesz kontynuować sprawdzanie użycia miejsc wdrożenia.

Wymagana akcja:az functionapp flex-migration list Jeśli polecenie uwzględniło Twoją aplikację na ineligible_apps liście z komunikatem o błędzie z informacją Invalid version {0} for runtime {1} for function apps on the Flex Consumption plan. Supported versions for runtime {1} are {2}., aplikacja Konsumpcyjna systemu Linux nie obsługuje jeszcze środowiska uruchomieniowego wspieranego przez Flex Consumption.

Użyj tego az functionapp list-flexconsumption-runtimes polecenia, aby sprawdzić obsługę planu Flex Consumption dla wersji stosu języka w określonym regionie:

az functionapp list-flexconsumption-runtimes --location <REGION> --runtime <LANGUAGE_STACK> --query '[].{version:version}' -o tsv

W tym przykładzie zastąp <REGION> ciąg bieżącym regionem i <LANGUAGE_STACK> jedną z następujących wartości:

Stos technologii językowych Wartość
C# (izolowany model procesu roboczego) dotnet-isolated
Jawa java
JavaScript node
PowerShell powershell
Pyton python
TypeScript node

To polecenie wyświetla wszystkie wersje określonego stosu języka obsługiwanego przez plan Flex Consumption w Twoim regionie.

Jeśli aplikacja funkcji używa nieobsługiwanej wersji stosu języka, musisz najpierw, przed migracją do planu Flex Consumption, aktualizować kod aplikacji do obsługiwanej wersji.

Weryfikowanie użycia slotów wdrożeniowych

Aplikacje planu zużycia mogą mieć zdefiniowane miejsce wdrożenia. Aby uzyskać więcej informacji, zobacz Miejsca wdrożenia usługi Azure Functions. Jednak plan Flex Consumption nie obsługuje obecnie slotów wdrożeniowych. Przed przeprowadzeniem migracji należy określić, czy aplikacja ma miejsce wdrożenia. Jeśli tak, musisz zdefiniować strategię zarządzania aplikacją bez użycia slotów wdrożeniowych przy korzystaniu z planu Flex Consumption.

Potwierdzone: Gdy bieżąca aplikacja ma włączone miejsca wdrożeniowe, polecenie az functionapp flex-migration list wyświetla twoją aplikację na eligible_apps liście bez ostrzeżenia, przejdź do sprawdzania użycia certyfikatów.

Wymagana akcja: Bieżąca aplikacja ma włączone miejsca wdrożenia. Polecenie wyświetla aplikację funkcji na az functionapp flex-migration list liście, eligible_apps ale dodaje ostrzeżenie informujące o tym:The site '<name>' has slots configured. This will not block migration, but please note that slots are not supported in Flex Consumption.

Użyj tego az functionapp deployment slot list polecenia, aby wyświetlić listę wszystkich miejsc wdrożenia zdefiniowanych w aplikacji funkcji:

az functionapp deployment slot list --name <APP_NAME> --resource-group <RESOURCE_GROUP> --output table

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji. Jeśli polecenie zwróci wpis, aplikacja ma włączone sloty wdrożeniowe.

Jeśli aplikacja funkcji korzysta obecnie z miejsc wdrożenia, obecnie nie można odtworzyć tej funkcji w planie Flex Consumption. Przed migracją należy:

  • Rozważ zmianę architektury aplikacji, aby korzystać z oddzielnych aplikacji funkcji. W ten sposób możesz opracowywać, testować i wdrażać kod funkcji w innej aplikacji nieprodukcyjnej zamiast używać slotów.
  • Przeprowadź migrację dowolnego nowego kodu lub funkcji z przedziału wdrożeniowego do głównego przedziału (produkcyjnego).

Weryfikowanie użycia certyfikatów

Certyfikaty protokołu Transport Layer Security (TLS), znane wcześniej jako certyfikaty Secure Sockets Layer (SSL), są używane do zabezpieczania połączeń internetowych. Certyfikaty SSL/TLS, które obejmują certyfikaty zarządzane, przynieś własny certyfikat (BYOC) lub certyfikaty klucza publicznego, nie są obsługiwane przez plan Flex Consumption.

Potwierdzone:az functionapp flex-migration list Jeśli polecenie uwzględniło aplikację na eligible_apps liście, aplikacja Zużycie systemu Linux nie korzysta już z certyfikatów i możesz kontynuować sprawdzanie wyzwalaczy usługi Blob Storage.

pl-PL: Wymagana akcja:az functionapp flex-migration list Jeśli polecenie uwzględniło aplikację w ineligible_apps liście z komunikatem o błędzie The site '<name>' is using TSL/SSL certificates. TSL/SSL certificates are not supported in Flex Consumption. lub The site '<name>' has the WEBSITE_LOAD_CERTIFICATES app setting configured. Certificate loading is not supported in Flex Consumption., Twoja aplikacja Zużycie systemu Linux nie jest jeszcze zgodna z Flex Consumption.

Użyj polecenia , az webapp config ssl list aby wyświetlić listę wszystkich certyfikatów TSL/SSL dostępnych dla aplikacji funkcji:

az webapp config ssl list --resource-group <RESOURCE_GROUP>  

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów. Jeśli to polecenie generuje dane wyjściowe, aplikacja prawdopodobnie używa certyfikatów.

Jeśli aplikacja obecnie korzysta z certyfikatów TSL/SSL, nie należy kontynuować migracji, dopóki nie zostanie dodana obsługa certyfikatów do planu Flex Consumption.

Zweryfikuj wyzwalacze Blob Storage

Obecnie plan Flex Consumption obsługuje tylko wyzwalacze oparte na zdarzeniach dla usługi Azure Blob Storage, które są zdefiniowane za pomocą ustawienia SourceEventGrid. Wyzwalacze usługi Blob Storage korzystające z sondowania kontenerów i używanie ustawienia Source nie są obsługiwane w Flex Consumption. Ponieważ sondowanie kontenerów jest ustawieniem domyślnym, musisz określić, czy którykolwiek z wyzwalaczy usługi Blob Storage używa domyślnego LogsAndContainerScan ustawienia źródłowego. Aby uzyskać więcej informacji, zobacz Wyzwalacz na kontenerze obiektów blob.

Potwierdzone: Jeśli polecenie az functionapp flex-migration list dodaje twoją aplikację do listy eligible_apps, twoja aplikacja zużycia zasobów na Linuxie już nie używa wyzwalaczy magazynu obiektów blob z EventGrid jako źródłem. Możesz nadal rozważyć usługi zależne.

Wymagana akcja:az functionapp flex-migration list Jeśli polecenie uwzględniło aplikację na ineligible_apps liście z komunikatem o błędzie z informacją The site '<name>' has blob storage trigger(s) that don't use Event Grid as the source: <list> Flex Consumption only supports Event Grid-based blob triggers. Please convert these triggers to use Event Grid or replace them with Event Grid triggers before migration., aplikacja Linux Consumption jeszcze nie jest kompatybilna z Flex Consumption.

Użyj tego polecenia [az functionapp function list], aby określić, czy aplikacja ma jakiekolwiek wyzwalacze usługi Blob Storage, które nie używają usługi Event Grid jako źródła:

az functionapp function list  --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
  --query "[?config.bindings[0].type=='blobTrigger' && config.bindings[0].source!='EventGrid'].{Function:name,TriggerType:config.bindings[0].type,Source:config.bindings[0].source}" \
  --output table

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji. Jeśli polecenie zwraca wiersze, istnieje co najmniej jeden wyzwalacz używający sondowania kontenera w aplikacji obsługującej funkcje.

Jeśli aplikacja ma jakiekolwiek wyzwalacze usługi Blob Storage, które nie mają źródła usługi Event Grid, musisz zmienić źródło usługi Event Grid na źródło usługi Event Grid przed migracją do planu Flex Consumption.

Podstawowe kroki zmiany istniejącego wyzwalacza usługi Blob Storage na źródło usługi Event Grid to:

  1. Dodaj lub zaktualizuj source właściwość w definicji EventGrid wyzwalacza usługi Blob Storage i ponownie wdróż aplikację.

  2. Utwórz adres URL punktu końcowego w aplikacji funkcji, która będzie używana przez subskrypcję zdarzeń.

  3. Utwórz subskrypcję zdarzeń w kontenerze usługi Blob Storage.

Aby uzyskać więcej informacji, zobacz Samouczek: wyzwalanie usługi Azure Functions w kontenerach obiektów blob przy użyciu subskrypcji zdarzeń.

Rozważ usługi zależne

Ponieważ usługa Azure Functions jest usługą obliczeniową, należy rozważyć wpływ migracji na dane i usługi zarówno nadrzędne, jak i podrzędne aplikacji.

Strategie ochrony danych

Poniżej przedstawiono niektóre strategie ochrony zarówno danych nadrzędnych, jak i podrzędnych podczas migracji:

Środki zaradcze według typu wyzwalacza

Należy zaplanować strategie ograniczania ryzyka, aby chronić dane dla określonych wyzwalaczy funkcji, które mogą znajdować się w aplikacji:

Wyzwalacz Ryzyko dla danych Strategia
Azure Blob Storage Wysoki Utwórz oddzielny kontener dla wyzwalacza opartego na zdarzeniach w nowej aplikacji.
Po uruchomieniu nowej aplikacji przełącz klientów, aby używali nowego kontenera.
Zezwalaj na całkowite przetwarzanie oryginalnego kontenera przed zatrzymaniem starej aplikacji.
Azure Cosmos DB Wysoki Utwórz dedykowany kontener dzierżawy przeznaczony specjalnie dla nowej aplikacji.
Ustaw ten nowy kontener dzierżawy jako konfigurację leaseCollectionName w nowej aplikacji.
Wymaga, aby funkcje były idempotentne lub aby można było obsłużyć wyniki zduplikowanego przetwarzania zestawienia zmian.
Ustaw konfigurację StartFromBeginning na false w nowej aplikacji, aby uniknąć ponownego przetwarzania całego kanału informacyjnego.
Azure Event Grid Średni Utwórz ponownie tę samą subskrypcję zdarzeń w nowej aplikacji.
Wymaga aby Twoje funkcje były idempotentne lub abyś był w stanie obsłużyć wyniki zduplikowanego przetwarzania zdarzeń.
Azure Event Hubs Średni Utwórz nową grupę odbiorców do użycia przez nową aplikację. Aby uzyskać więcej informacji, zobacz Strategie migracji wyzwalaczy usługi Event Grid.
Azure Service Bus Wysoki Utwórz nowy temat lub kolejkę do użycia przez nową aplikację.
Zaktualizuj nadawców i klientów, aby używali nowego tematu lub kolejki.
Po opróżnieniu oryginalnego tematu zamknij starą aplikację.
Kolejka usługi Azure Storage Wysoki Utwórz nową kolejkę do użycia przez nową aplikację.
Zaktualizuj nadawców i klientów, aby używali nowej kolejki.
Po opróżnieniu oryginalnej kolejki zamknij starą aplikację.
HTTP Niski Pamiętaj, aby przełączać klientów i inne aplikacje lub usługi w celu kierowania nowych punktów końcowych HTTP po migracji.
Minutnik Niski Podczas zmiany na nową wersję upewnij się, że harmonogram pracy czasomierza między dwiema aplikacjami jest przesunięty, aby uniknąć równoczesnego wykonywania obu aplikacji.
Wyłącz wyzwalacz czasomierza w starej aplikacji po pomyślnym uruchomieniu nowej aplikacji.

Uruchamianie migracji dla systemu Linux

Polecenie az functionapp flex-migration start automatycznie zbiera informacje o konfiguracji aplikacji i tworzy nową aplikację Flex Consumption z tymi samymi konfiguracjami co aplikacja źródłowa. Użyj polecenia , jak pokazano w tym przykładzie:

az functionapp flex-migration start \
    --source-name <SOURCE_APP_NAME> \
    --source-resource-group <SOURCE_RESOURCE_GROUP> \
    --name <NEW_APP_NAME> \
    --resource-group <RESOURCE_GROUP>

W tym przykładzie zastąp te symbole zastępcze wskazanymi wartościami:

Zastępczy element Wartość
<SOURCE_APP_NAME> Nazwa oryginalnej aplikacji.
<SOURCE_RESOURCE_GROUP> Grupa zasobów oryginalnej aplikacji.
<NEW_APP_NAME> Nazwa nowej aplikacji.
<RESOURCE_GROUP> Grupa zasobów nowej aplikacji.

Polecenie az functionapp flex-migration start wykonuje następujące podstawowe zadania:

  • Ocenia aplikację źródłową pod kątem zgodności z planem hostingu Flex Consumption.
  • Tworzy aplikację funkcji w ramach planu Flex Consumption.
  • Migruje większość konfiguracji, w tym ustawień aplikacji, przypisań tożsamości, instalacji magazynu, ustawień mechanizmu CORS, domen niestandardowych i ograniczeń dostępu.

Opcje poleceń

Polecenie migracji obsługuje kilka opcji dostosowywania migracji:

Option Opis
--storage-account Określanie innego konta magazynu dla nowej aplikacji
--maximum-instance-count Ustawianie maksymalnej liczby wystąpień na potrzeby skalowania
--skip-access-restrictions Pomiń migrowanie ograniczeń dostępu do adresów IP
--skip-cors Pomijanie migracji ustawień CORS
--skip-hostnames Pomiń migrację domen niestandardowych
--skip-managed-identities Pomiń migrację konfiguracji tożsamości zarządzanej
--skip-storage-mount Pomiń migrację konfiguracji montowania pamięci

Aby uzyskać pełne opcje poleceń, użyj polecenia az functionapp flex-migration start --help.

Po pomyślnym uruchomieniu az functionapp flex-migration start przejdź do sekcji Pobierz pakiet wdrażania kodu.

Zadania przedmigracyjne

Przed przystąpieniem do migracji należy zebrać kluczowe informacje dotyczące oraz zasoby używane przez aplikację opartą na Planie Konsumpcji, aby ułatwić bezproblemowe przejście do działania w planie Flex Consumption.

Przed przeprowadzeniem migracji aplikacji do uruchomienia w planie Flex Consumption należy wykonać te zadania:

Zbieranie ustawień aplikacji

Jeśli planujesz używać tych samych źródeł wyzwalacza i powiązań oraz innych ustawień z ustawień aplikacji, musisz najpierw zanotować bieżące ustawienia aplikacji w istniejącej aplikacji Plan zużycia.

Użyj tego az functionapp config appsettings list polecenia, aby zwrócić app_settings obiekt, który zawiera istniejące ustawienie aplikacji jako kod JSON:

app_settings=$(az functionapp config appsettings list --name `<APP_NAME>` --resource-group `<RESOURCE_GROUP>`)
echo $app_settings

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji.

Ostrzeżenie

Ustawienia aplikacji często zawierają klucze i inne wspólne tajne dane. Zawsze przechowuj ustawienia aplikacji bezpiecznie, idealnie szyfrowane. W celu zwiększenia bezpieczeństwa należy używać uwierzytelniania Microsoft Entra ID przy użyciu tożsamości zarządzanych w aplikacji w ramach planu Flex Consumption zamiast tajnych kluczy.

Zbieranie konfiguracji aplikacji

W ustawieniach aplikacji nie można odnaleźć innych konfiguracji aplikacji. Te konfiguracje należy również przechwycić z istniejącej aplikacji, aby można było je poprawnie odtworzyć w nowej aplikacji.

Przejrzyj te ustawienia. Jeśli którykolwiek z nich istnieje w bieżącej aplikacji, musisz zdecydować, czy należy je ponownie utworzyć w nowej aplikacji planu Flex Consumption:

Konfiguracja Ustawienia Komentarz
Ustawienia mechanizmu CORS cors Określa wszystkie istniejące ustawienia współużytkowania zasobów między źródłami (CORS), których mogą wymagać klienci.
Domeny niestandardowe Jeśli Twoja aplikacja używa obecnie domeny innej niż *.azurewebsites.net, musisz zastąpić to mapowanie domeny niestandardowej mapowaniem w nowej aplikacji.
Wersja protokołu HTTP http20Enabled Określa, czy aplikacja wymaga protokołu HTTP 2.0.
Tylko protokół HTTPS httpsOnly Określa, czy protokół TSL/SSL jest wymagany do uzyskania dostępu do aplikacji.
Przychodzące certyfikaty klienta clientCertEnabled
clientCertMode
clientCertExclusionPaths
Ustawia wymagania dotyczące żądań klientów, które używają certyfikatów do uwierzytelniania.
Maksymalny limit skalowania WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT Ustawia limit dla wystąpień skalowanych w poziomie. Domyślna wartość maksymalna to 200. Ta wartość znajduje się w ustawieniach aplikacji, ale w przypadku aplikacji z planem Flex Consumption jest dodawana jako ustawienie witryny (maximumInstanceCount).
Minimalna wersja przychodzącego protokołu TLS minTlsVersion Ustawia minimalną wersję protokołu TLS wymaganą przez aplikację.
Minimalna liczba przychodzących szyfrów TLS minTlsCipherSuite Ustawia minimalne wymaganie szyfrowania TLS dla aplikacji.
Zamontowane udziały Azure Files azureStorageAccounts Określa, czy istnieją jawnie zainstalowane udziały plików w aplikacji (tylko system Linux).
Poświadczenia podstawowego uwierzytelniania do publikowania SCM scm.allow Określa, czy witryna publikowaniascm jest włączona. Chociaż nie jest to zalecane w przypadku zabezpieczeń, niektóre metody publikowania wymagają ich.

Użyj tego skryptu, aby uzyskać odpowiednie konfiguracje twojej istniejącej aplikacji.

# Set the app and resource group names
appName=<APP_NAME>
rgName=<RESOURCE_GROUP>

echo "Getting commonly used site settings..."
az functionapp config show --name $appName --resource-group $rgName \
    --query "{http20Enabled:http20Enabled, httpsOnly:httpsOnly, minTlsVersion:minTlsVersion, \
    minTlsCipherSuite:minTlsCipherSuite, clientCertEnabled:clientCertEnabled, \
    clientCertMode:clientCertMode, clientCertExclusionPaths:clientCertExclusionPaths}"

echo "Checking for SCM basic publishing credentials policies..."
az resource show --resource-group $rgName --name scm --namespace Microsoft.Web \
    --resource-type basicPublishingCredentialsPolicies --parent sites/$appName --query properties

echo "Checking for the maximum scale-out limit configuration..."
az functionapp config appsettings list --name $appName --resource-group $rgName \
    --query "[?name=='WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT'].value" -o tsv

echo "Checking for any file share mount configurations..."
az webapp config storage-account list --name $appName --resource-group $rgName

echo "Checking for any custom domains..."
az functionapp config hostname list --webapp-name $appName --resource-group $rgName --query "[?contains(name, 'azurewebsites.net')==\`false\`]" --output table

echo "Checking for any CORS settings..."
az functionapp cors show --name $appName --resource-group $rgName 

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji. Jeśli którekolwiek z ustawień witryny lub sprawdzanie zwraca wartości inne niż null, zanotuj je.

Identyfikowanie tożsamości zarządzanych i dostępu opartego na rolach

Przed migracją należy udokumentować, czy aplikacja korzysta z tożsamości zarządzanej przypisanej przez system, czy tożsamości zarządzanej przypisanej przez użytkownika. Należy również określić uprawnienia kontroli dostępu opartej na rolach (RBAC) przyznane tym tożsamościom. Należy ponownie utworzyć tożsamość zarządzaną przypisaną przez system i wszystkie przypisania ról w nowej aplikacji. W nowej aplikacji powinno być możliwe ponowne użycie tożsamości zarządzanych przypisanych przez użytkownika.

Ten skrypt sprawdza tożsamość zarządzaną przypisaną przez system i wszystkie tożsamości zarządzane przypisane przez użytkownika skojarzone z aplikacją:

appName=<APP_NAME>
rgName=<RESOURCE_GROUP>

echo "Checking for a system-assigned managed identity..."
systemUserId=$(az functionapp identity show --name $appName --resource-group $rgName --query "principalId" -o tsv) 

if [[ -n "$systemUserId" ]]; then
echo "System-assigned identity principal ID: $systemUserId"
echo "Checking for role assignments..."
az role assignment list --assignee $systemUserId --all
else
  echo "No system-assigned identity found."
fi

echo "Checking for user-assigned managed identities..."
userIdentities=$(az functionapp identity show --name $appName --resource-group $rgName --query 'userAssignedIdentities' -o json)
if [[ "$userIdentities" != "{}" && "$userIdentities" != "null" ]]; then
  echo "$userIdentities" | jq -c 'to_entries[]' | while read -r identity; do
    echo "User-assigned identity name: $(echo "$identity" | jq -r '.key' | sed 's|.*/userAssignedIdentities/||')"
	echo "Checking for role assignments..."
    az role assignment list --assignee $(echo "$identity" | jq -r '.value.principalId') --all --output json
    echo
  done
else
  echo "No user-assigned identities found."
fi

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji. Zanotuj wszystkie tożsamości oraz ich przypisania ról.

Identyfikowanie wbudowanych ustawień uwierzytelniania

Przed migracją do rozwiązania Flex Consumption należy zebrać informacje o wszelkich wbudowanych konfiguracjach uwierzytelniania. Jeśli chcesz, aby aplikacja korzystała z tych samych zachowań uwierzytelniania klienta, musisz utworzyć je ponownie w nowej aplikacji. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie i autoryzacja w usłudze Azure Functions.

Zwróć szczególną uwagę na adresy URI przekierowań, dozwolone przekierowania zewnętrzne i ustawienia tokenów, aby zapewnić bezproblemowe przejście dla uwierzytelnionych użytkowników.

Użyj tego az webapp auth show polecenia, aby określić, czy wbudowane uwierzytelnianie jest skonfigurowane w aplikacji funkcji:

az webapp auth show --name <APP_NAME> --resource-group <RESOURCE_GROUP>

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji. Przejrzyj dane wyjściowe, aby określić, czy jest włączone uwierzytelnianie i którzy dostawcy tożsamości są skonfigurowani.

Należy ponownie utworzyć to ustawienie w nowej aplikacji po migracji, aby klienci mogli zachować dostęp przy użyciu preferowanego dostawcy.

Przejrzyj ograniczenia dotyczące dostępu przychodzącego

Istnieje możliwość ustawienia ograniczeń dostępu przychodzącego dla aplikacji w planie Zużycie. Możesz zachować te ograniczenia w nowej aplikacji. Dla każdego zdefiniowanego ograniczenia pamiętaj, aby przechwycić następujące właściwości:

  • Adresy IP lub zakresy CIDR
  • Wartości priorytetów
  • Typ akcji (Zezwalaj/Odmów)
  • Nazwy reguł

To az functionapp config access-restriction show polecenie zwraca listę wszelkich istniejących ograniczeń dostępu opartych na adresach IP:

az functionapp config access-restriction show --name <APP_NAME> --resource-group <RESOURCE_GROUP>

W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji.

Podczas działania w planie Flex Consumption możesz ponownie utworzyć ograniczenia ruchu przychodzącego oparte na adresach IP. Aplikację można dodatkowo zabezpieczyć, implementując inne ograniczenia dotyczące sieci, na przykład integrację sieci wirtualnej i prywatne punkty końcowe. Aby uzyskać więcej informacji, zobacz Integracja sieci wirtualnej.

Pobierz pakiet wdrożeniowy kodu

Aby móc ponownie wdrożyć aplikację, musisz mieć pliki źródłowe projektu lub pakiet wdrożeniowy. W idealnym przypadku pliki projektu są przechowywane w kontroli źródła, dzięki czemu można łatwo ponownie wdrożyć kod funkcji w nowej aplikacji. Jeśli masz pliki kodu źródłowego, możesz pominąć tę sekcję i przejść do sekcji Przechwytywanie testów porównawczych wydajności (opcjonalnie).

Jeśli nie masz już dostępu do plików źródłowych projektu, możesz pobrać bieżący pakiet wdrożeniowy z istniejącej aplikacji Plan zużycia na platformie Azure. Lokalizacja pakietu wdrożeniowego zależy od tego, czy jest uruchamiany w systemie Linux, czy Windows.

Aplikacje planu zużycia w systemie Linux utrzymują plik pakietu zip wdrożenia w jednej z następujących lokalizacji:

  • Kontener usługi Azure Blob Storage o nazwie scm-releases na domyślnym koncie magazynowym hosta (AzureWebJobsStorage). Ten kontener jest domyślnym źródłem wdrożenia dla aplikacji plan zużycie w systemie Linux.

  • Jeśli aplikacja ma WEBSITE_RUN_FROM_PACKAGE ustawienie, które jest adresem URL, pakiet znajduje się w lokalizacji dostępnej zewnętrznie. Zewnętrzny pakiet powinien być przechowywany w kontenerze magazynu obiektów BLOB z ograniczonym dostępem. Aby uzyskać więcej informacji, zobacz Zewnętrzny adres URL pakietu.

Wskazówka

Jeśli konto magazynowe jest ograniczone tylko do dostępu poprzez tożsamość zarządzaną, może być konieczne przyznanie kontu w Azure dostępu do odczytu do kontenera magazynu, dodając je do roli Storage Blob Data Reader.

Pakiet wdrożeniowy jest kompresowany przy użyciu squashfs formatu . Aby zobaczyć, co znajduje się wewnątrz pakietu, należy użyć narzędzi, które mogą dekompresować ten format.

Wykonaj następujące kroki, aby pobrać pakiet wdrożeniowy z bieżącej aplikacji:

  1. Użyj tego az functionapp config appsettings list polecenia, aby pobrać WEBSITE_RUN_FROM_PACKAGE ustawienie aplikacji, jeśli istnieje:

    az functionapp config appsettings list --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
        --query "[?name=='WEBSITE_RUN_FROM_PACKAGE'].value" -o tsv
    

    W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji. Jeśli to polecenie zwróci adres URL, możesz pobrać plik pakietu wdrożeniowego z tej lokalizacji zdalnej i przejść do następnej sekcji.

  2. WEBSITE_RUN_FROM_PACKAGE Jeśli wartość wynosi 1 lub nic, użyj tego skryptu, aby pobrać pakiet wdrożeniowy dla istniejącej aplikacji:

    appName=<APP_NAME>
    rgName=<RESOURCE_GROUP>
    
    echo "Getting the storage account connection string from app settings..."
    storageConnection=$(az functionapp config appsettings list --name $appName --resource-group $rgName \
             --query "[?name=='AzureWebJobsStorage'].value" -o tsv)
    
    echo "Getting the package name..."
    packageName=$(az storage blob list --connection-string $storageConnection --container-name scm-releases \
    --query "[0].name" -o tsv)
    
    echo "Download the package? $packageName? (Y to proceed, any other key to exit)"
    read -r answer
    if [[ "$answer" == "Y" || "$answer" == "y" ]]; then
       echo "Proceeding with download..."
       az storage blob download --connection-string $storageConnection --container-name scm-releases \
    --name $packageName --file $packageName
    else
       echo "Exiting script."
       exit 0
    fi
    

    Ponownie zastąp ciąg <RESOURCE_GROUP> i <APP_NAME> nazwą grupy zasobów i nazwą aplikacji. Plik pakietu .zip jest pobierany do katalogu, z którego wykonano polecenie.

Lokalizacja plików źródłowych projektu zależy WEBSITE_RUN_FROM_PACKAGE od ustawienia aplikacji w następujący sposób:

WEBSITE_RUN_FROM_PACKAGE wartość Lokalizacja pliku źródłowego
1 Pliki znajdują się w pakiecie zip przechowywanym w udziale Azure Files konta magazynu, który jest określony przez ustawienie WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. Nazwa udziału plików jest definiowana przez ustawienie WEBSITE_CONTENTSHARE.
Adres URL punktu końcowego Pliki znajdują się w pakiecie zip w lokalizacji dostępnej zewnętrznie. Zewnętrzny pakiet powinien być przechowywany w kontenerze magazynu obiektów BLOB z ograniczonym dostępem. Aby uzyskać więcej informacji, zobacz Zewnętrzny adres URL pakietu.
  1. Użyj tego az functionapp config appsettings list polecenia, aby pobrać WEBSITE_RUN_FROM_PACKAGE ustawienie aplikacji, jeśli istnieje:

    az functionapp config appsettings list --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
        --query "[?name=='WEBSITE_RUN_FROM_PACKAGE'].value" -o tsv
    

    W tym przykładzie zastąp <RESOURCE_GROUP> nazwą grupy zasobów, a <APP_NAME> nazwą aplikacji. Jeśli to polecenie zwróci adres URL, możesz pobrać plik pakietu wdrożeniowego z tej lokalizacji zdalnej i przejść do następnej sekcji.

  2. WEBSITE_RUN_FROM_PACKAGE Jeśli wartość wynosi 1 lub nic, użyj tego skryptu, aby pobrać pakiet wdrożeniowy dla istniejącej aplikacji:

    appName=<APP_NAME>
    rgName=<RESOURCE_GROUP>
    
    echo "Getting the storage account connection string and file share from app settings..."
    json=$(az functionapp config appsettings list --name $appName --resource-group $rgName \
        --query "[?name=='WEBSITE_CONTENTAZUREFILECONNECTIONSTRING' || name=='WEBSITE_CONTENTSHARE'].value" -o json)
    
    storageConnection=$(echo "$json" | jq -r '.[0]')
    fileShare=$(echo "$json" | jq -r '.[1]')
    
    echo "Getting the package name..."
    packageName=$(az storage file list --share-name $fileShare --connection-string $storageConnection \
      --path "data/SitePackages" --query "[?ends_with(name, '.zip')] | sort_by(@, &properties.lastModified)[-1].name" \
      -o tsv) 
    
    echo "Download the package? $packageName? (Y to proceed, any other key to exit)"
    read -r answer
    if [[ "$answer" == "Y" || "$answer" == "y" ]]; then
        echo "Proceeding with download..."
        az storage file download --connection-string $storageConnection --share-name $fileShare \
    	--path "data/SitePackages/$packageName"
    else
        echo "Exiting script."
        exit 0
    fi
    

    Ponownie zastąp ciąg <RESOURCE_GROUP> i <APP_NAME> nazwą grupy zasobów i nazwą aplikacji. Plik pakietu .zip jest pobierany do katalogu, z którego wykonano polecenie.

Przechwytywanie testów porównawczych wydajności (opcjonalnie)

Jeśli planujesz zweryfikować poprawę wydajności w aplikacji na podstawie migracji do planu Flex Consumption, należy (opcjonalnie) przechwycić testy porównawcze wydajności bieżącego planu. Następnie możesz porównać je z tymi samymi testami porównawczymi dla aplikacji działającej w planie Flex Consumption na potrzeby porównania.

Wskazówka

Zawsze porównuj wydajność w podobnych warunkach, takich jak czas dnia, dzień tygodnia i obciążenie klienta. Spróbuj uruchomić dwa testy porównawcze tak blisko siebie, jak to możliwe.

Oto kilka punktów odniesienia, które należy wziąć pod uwagę przy ustrukturyzowanych testach wydajnościowych:

Sugerowany test porównawczy Komentarz
Uruchomienie na zimno Zmierz czas od pierwszego żądania do pierwszej odpowiedzi po okresie bezczynności.
Przepływność Mierzenie maksymalnej liczby żądań na sekundę przy użyciu narzędzi do testowania obciążenia w celu określenia sposobu obsługi współbieżnych żądań przez aplikację.
Opóźnienie Śledź czasy odpowiedzi P50, P95 i P99 w różnych warunkach obciążenia. Te metryki można monitorować w usłudze Application Insights.

Możesz użyć tego zapytania Kusto, aby przejrzeć sugerowane czasy odpowiedzi opóźnienia w usłudze Application Insights:

requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart

Kroki migracji

Migracja funkcji z aplikacji na planie zużycia do aplikacji na planie Flex Consumption obejmuje następujące główne kroki:

Weryfikowanie utworzenia i skonfigurowania aplikacji Flex Consumption

Po uruchomieniu polecenia az functionapp flex-migration start należy sprawdzić, czy nowa aplikacja Flex Consumption została utworzona pomyślnie i prawidłowo skonfigurowana. Poniżej przedstawiono kilka kroków weryfikacji wyników migracji:

  1. Sprawdź, czy nowa aplikacja istnieje i jest uruchomiona:

    az functionapp show --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP> \
         --query "{name:name, kind:kind, sku:properties.sku}" --output table
    
  2. Przejrzyj zmigrowane ustawienia aplikacji:

    az functionapp config appsettings list --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP> \
         --output table
    

    Porównaj te ustawienia z aplikacją źródłową, aby upewnić się, że konfiguracje krytyczne zostały przeniesione.

  3. Sprawdź konfigurację tożsamości zarządzanej:

    az functionapp identity show --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP>
    
  4. Sprawdź, czy zostały zmigrowane wszystkie domeny niestandardowe:

    az functionapp config hostname list --webapp-name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP> \
         --output table
    

Przegląd podsumowania migracji

Polecenie automatycznej migracji powinno przetransferować większość konfiguracji. Należy jednak ręcznie sprawdzić, czy te elementy nie zostały zmigrowane i może być konieczne ich ręczne skonfigurowanie:

  • Certyfikaty: certyfikaty TLS/SSL nie są jeszcze obsługiwane w rozwiązaniu Flex Consumption
  • Miejsca wdrożenia: nie są obsługiwane w Flex Consumption
  • Wbudowane ustawienia uwierzytelniania: należy je ponownie skonfigurować ręcznie
  • Ustawienia mechanizmu CORS: może wymagać ręcznej weryfikacji w zależności od konfiguracji

Jeśli brakuje żadnych ustawień krytycznych lub są one nieprawidłowe, możesz je ręcznie skonfigurować, wykonując kroki opisane w sekcjach procesu migracji systemu Windows w tym artykule.

Ostateczny przegląd planu

Zanim przejdziesz do procesu migracji, pośmiń chwilę na wykonanie tych ostatnich kroków przygotowawczych:

  • Przejrzyj wszystkie zebrane informacje: przeanalizuj wszystkie uwagi, szczegóły konfiguracji i ustawienia aplikacji udokumentowane w poprzednich sekcjach oceny i premigracyjnych. Jeśli coś jest niejasne, uruchom ponownie polecenia Azure CLI lub uzyskaj informacje z portalu.

  • Zdefiniuj plan migracji: na podstawie wyników utwórz listę kontrolną migracji, która wyróżnia następujące elementy:

    • Wszystkie ustawienia wymagające szczególnej uwagi
    • Wyzwalacze i powiązania lub inne zależności, które mogą mieć wpływ na migrację
    • Strategia testowania weryfikacji po migracji
    • Plan cofnięcia zmian, jeśli występują nieoczekiwane problemy.
  • Planowanie przestojów: rozważ, kiedy zatrzymać oryginalną aplikację funkcji, aby uniknąć zarówno utraty danych, jak i zduplikowania przetwarzania zdarzeń oraz jak może to mieć wpływ na użytkowników lub systemy podrzędne. W niektórych przypadkach może być konieczne wyłączenie określonych funkcji przed zatrzymaniem całej aplikacji.

Staranny przegląd końcowy pomaga zapewnić sprawniejszy proces migracji i zminimalizować ryzyko pomijania ważnych konfiguracji.

Stwórz aplikację w planie Flex Consumption

Istnieją różne sposoby tworzenia aplikacji funkcji w planie Flex Consumption wraz z innymi wymaganymi zasobami platformy Azure:

Opcja Utwórz Artykuły referencyjne
Azure CLI Tworzenie aplikacji Flex Consumption
Azure Portal Utwórz aplikację funkcji w portalu Azure
Infrastruktura jako kod Szablon ARM
azd
Biceps
Terraform
Visual Studio Code Wdrażanie programu Visual Studio Code
Visual Studio Wdrażanie programu Visual Studio

Wskazówka

Jeśli to możliwe, należy użyć identyfikatora Entra firmy Microsoft do uwierzytelniania zamiast parametrów połączenia, które zawierają klucze udostępnione. Używanie tożsamości zarządzanych to najlepsze rozwiązanie, które poprawia bezpieczeństwo, eliminując konieczność przechowywania udostępnionych wpisów tajnych bezpośrednio w ustawieniach aplikacji. Jeśli Twoja oryginalna aplikacja korzystała ze stringów połączeń, plan Flex Consumption jest zaprojektowany do obsługi tożsamości zarządzanych. Większość tych linków pokazuje, jak włączyć tożsamości zarządzane w aplikacji funkcyjnej.

Stosowanie zmigrowanych ustawień aplikacji w nowej aplikacji

Przed wdrożeniem kodu należy skonfigurować nową aplikację przy użyciu odpowiednich ustawień aplikacji w ramach planu Flex Consumption z oryginalnej aplikacji funkcyjnej.

Ważne

Nie wszystkie ustawienia aplikacji planu zużycia są obsługiwane podczas uruchamiania w planie Flex Consumption. Aby uzyskać więcej informacji, zobacz Wycofywanie planu Flex Consumption.

Uruchom ten skrypt, który wykonuje następujące zadania:

  1. Pobiera ustawienia aplikacji ze starej aplikacji, ignorując ustawienia, które nie mają zastosowania w planie Flex Consumption lub które już istnieją w nowej aplikacji.
  2. Zapisuje zebrane ustawienia lokalnie w pliku tymczasowym.
  3. Stosuje ustawienia z pliku do nowej aplikacji.
  4. Usuwa plik tymczasowy.
sourceAppName=<SOURCE_APP_NAME>
destAppName=<DESTINATION_APP_NAME>
rgName=<RESOURCE_GROUP>

echo "Getting app settings from the old app..."
app_settings=$(az functionapp config appsettings list --name $sourceAppName --resource-group $rgName)

# Filter out settings that don't apply to Flex Consumption apps or that will already have been created
filtered_settings=$(echo "$app_settings" | jq 'map(select(
  (.name | ascii_downcase) != "website_use_placeholder_dotnetisolated" and
  (.name | ascii_downcase | startswith("azurewebjobsstorage") | not) and
  (.name | ascii_downcase) != "website_mount_enabled" and
  (.name | ascii_downcase) != "enable_oryx_build" and
  (.name | ascii_downcase) != "functions_extension_version" and
  (.name | ascii_downcase) != "functions_worker_runtime" and
  (.name | ascii_downcase) != "functions_worker_runtime_version" and
  (.name | ascii_downcase) != "functions_max_http_concurrency" and
  (.name | ascii_downcase) != "functions_worker_process_count" and
  (.name | ascii_downcase) != "functions_worker_dynamic_concurrency_enabled" and
  (.name | ascii_downcase) != "scm_do_build_during_deployment" and
  (.name | ascii_downcase) != "website_contentazurefileconnectionstring" and
  (.name | ascii_downcase) != "website_contentovervnet" and
  (.name | ascii_downcase) != "website_contentshare" and
  (.name | ascii_downcase) != "website_dns_server" and
  (.name | ascii_downcase) != "website_max_dynamic_application_scale_out" and
  (.name | ascii_downcase) != "website_node_default_version" and
  (.name | ascii_downcase) != "website_run_from_package" and
  (.name | ascii_downcase) != "website_skip_contentshare_validation" and
  (.name | ascii_downcase) != "website_vnet_route_all" and
  (.name | ascii_downcase) != "applicationinsights_connection_string"
))')

echo "Settings to migrate..."
echo "$filtered_settings"

echo "Writing settings to a local a local file (app_settings_filtered.json)..."
echo "$filtered_settings" > app_settings_filtered.json

echo "Applying settings to the new app..."
output=$(az functionapp config appsettings set --name $destAppName --resource-group $rgName --settings @app_settings_filtered.json)

echo "Deleting the temporary settings file..."
rm -rf app_settings_filtered.json  

echo "Current app settings in the new app..."
az functionapp config appsettings list --name $destAppName --resource-group $rgName 

W tym przykładzie zastąp <RESOURCE_GROUP>, <SOURCE_APP_NAME> i <DEST_APP_NAME> odpowiednio nazwą grupy zasobów oraz starą i nową nazwą aplikacji. Ten skrypt zakłada, że obie aplikacje znajdują się w tej samej grupie zasobów.

Stosowanie innych konfiguracji aplikacji

Znajdź listę innych konfiguracji aplikacji, które zebrałeś podczas przemigracji ze starej aplikacji, i ustaw je również w nowej aplikacji.

W tym skryscie ustaw wartość dowolnej konfiguracji ustawionej w oryginalnej aplikacji i oznacz jako komentarz wszystkie polecenia dla dowolnej konfiguracji, która nie jest ustawiona (null):

appName=<APP_NAME>
rgName=<RESOURCE_GROUP>
http20Setting=<YOUR_HTTP_20_SETTING>
minTlsVersion=<YOUR_TLS_VERSION>
minTlsCipher=<YOUR_TLS_CIPHER>
httpsOnly=<YOUR_HTTPS_ONLY_SETTING>
certEnabled=<CLIENT_CERT_ENABLED>
certMode=<YOUR_CLIENT_CERT_MODE>
certExPaths=<CERT_EXCLUSION_PATHS>
scmAllowBasicAuth=<ALLOW_SCM_BASIC_AUTH>

# Apply HTTP version and minimum TLS settings
az functionapp config set --name $appName --resource-group $rgName --http20-enabled $http20Setting  
az functionapp config set --name $appName --resource-group $rgName --min-tls-version $minTlsVersion

# Apply the HTTPS-only setting
az functionapp update --name $appName --resource-group $rgName --set HttpsOnly=$httpsOnly

# Apply incoming client cert settings
az functionapp update --name $appName --resource-group $rgName --set clientCertEnabled=$certEnabled
az functionapp update --name $appName --resource-group $rgName --set clientCertMode=$certMode
az functionapp update --name $appName --resource-group $rgName --set clientCertExclusionPaths=$certExPaths

# Apply the TLS cipher suite setting
az functionapp update --name $appName --resource-group $rgName --set minTlsCipherSuite=$minTlsCipher

# Apply the allow scm basic auth configuration
az resource update --resource-group $rgName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies \
	--parent sites/$appName --set properties.allow=$scmAllowBasicAuth

W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji. Ponadto zastąp symbole zastępcze w jakichkolwiek definicjach zmiennych dla istniejących ustawień, które chcesz odtworzyć w nowej aplikacji, i zakomentuj wszystkie ustawienia null.

Konfigurowanie ustawień skalowania i współbieżności

Plan Flex Consumption implementuje skalowanie poszczególnych funkcji, gdzie każda funkcja w aplikacji może być skalowana niezależnie na podstawie obciążenia. Skalowanie jest również bardziej ściśle związane z ustawieniami współbieżności, które są używane do podejmowania decyzji dotyczących skalowania na podstawie bieżących współbieżnych wykonań. Aby uzyskać więcej informacji, zobacz artykuł Skalowanie poszczególnych funkcji i Współbieżność w planie Flex Consumption.

Rozważ najpierw ustawienia współbieżności, jeśli chcesz, aby nowa aplikacja skalowała się podobnie do oryginalnej aplikacji. Ustawienie wyższych wartości współbieżności może spowodować utworzenie mniejszej liczby wystąpień w celu obsługi tego samego obciążenia.

Jeśli w oryginalnej aplikacji ustawiono niestandardowy limit skalowania w poziomie, możesz również zastosować go do nowej aplikacji. W przeciwnym razie możesz przejść do następnej sekcji.

Domyślna maksymalna liczba wystąpień to 100 i musi być ustawiona na wartość 40 lub większą.

Użyj tego az functionapp scale config set polecenia, aby ustawić maksymalną skalowalność.

az functionapp scale config set --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
    --maximum-instance-count <MAX_SCALE_SETTING>

W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji. Zastąp <MAX_SCALE_SETTING> element wartością maksymalnej skali, która jest ustawiana.

Skonfiguruj dowolne domeny niestandardowe i dostęp mechanizmu CORS

Jeśli oryginalna aplikacja miała jakiekolwiek powiązane domeny niestandardowe lub jakiekolwiek zdefiniowane ustawienia mechanizmu CORS, utwórz je ponownie w nowej aplikacji. Aby uzyskać więcej informacji na temat domen niestandardowych, zobacz Konfigurowanie istniejącej domeny niestandardowej w usłudze Azure App Service.

  1. Użyj tego az functionapp config hostname add polecenia, aby ponownie połączyć wszystkie mapowania domen niestandardowych do aplikacji:

    az functionapp config hostname add --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
        --hostname <CUSTOM_DOMAIN>
    

    W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji. Zastąp <CUSTOM_DOMAIN> swoją nazwą domeny niestandardowej.

  2. Użyj tego az functionapp cors add polecenia, aby zastąpić wszystkie ustawienia mechanizmu CORS:

    az functionapp cors add --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
        --allowed-origins <ALLOWED_ORIGIN_1> <ALLOWED_ORIGIN_2> <ALLOWED_ORIGIN_N>
    

    W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji. Zastąp <ALLOWED_ORIGIN_*> swoimi dozwolonymi źródłami.

Konfigurowanie tożsamości zarządzanych i przypisywanie ról

Sposób konfigurowania tożsamości zarządzanych w nowej aplikacji zależy od rodzaju tożsamości zarządzanej:

Typ tożsamości zarządzanej Tworzenie tożsamości Przypisania ról
Przypisane przez użytkownika Opcjonalnie Możesz nadal używać tych samych przypisanych przez użytkownika tożsamości zarządzanych z nową aplikacją. Należy ponownie przypisać te tożsamości do aplikacji Flex Consumption i sprawdzić, czy nadal mają poprawne przypisania ról w usługach zdalnych. Jeśli zdecydujesz się utworzyć nowe tożsamości dla nowej aplikacji, musisz przypisać te same role co istniejące tożsamości.
Przypisane przez system Tak Ponieważ każda aplikacja funkcji ma własną tożsamość zarządzaną przypisaną przez system, musisz włączyć tożsamość zarządzaną przypisaną przez system w nowej aplikacji i ponownie przypisać te same role co w oryginalnej aplikacji.

Prawidłowe ponowne utworzenie przypisań ról jest kluczem do zapewnienia, że aplikacja funkcji ma taki sam dostęp do zasobów platformy Azure po migracji.

Wskazówka

Jeśli oryginalna aplikacja używała parametrów połączenia lub innych współdzielonych sekretów do uwierzytelniania, jest to świetna okazja, aby poprawić bezpieczeństwo aplikacji, przechodząc na uwierzytelnianie przy użyciu Microsoft Entra ID z tożsamościami zarządzanymi. Aby uzyskać więcej informacji, zobacz Samouczek: tworzenie aplikacji funkcjonalnej łączącej się z usługami platformy Azure przy użyciu tożsamościami zamiast tajnych danych.

  1. Użyj tego az functionapp identity assign polecenia, aby włączyć tożsamość zarządzaną przypisaną przez system w nowej aplikacji:

    az functionapp identity assign --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    

    W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji.

  2. Użyj tego skryptu, aby uzyskać główny identyfikator tożsamości przypisanej przez system i dodać go do wymaganych ról.

    # Get the principal ID of the system identity
    principalId=$(az functionapp identity show --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
        --query principalId -o tsv)
    
    # Assign a role in a specific resource (scope) to the system identity
    az role assignment create --assignee $principalId --role "<ROLE_NAME>" --scope "<RESOURCE_ID>"
    

    W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji. Zastąp <ROLE_NAME> nazwą roli i <RESOURCE_ID> zasobem przechwyconym z oryginalnej aplikacji.

  3. Powtórz poprzednie polecenia dla każdej roli wymaganej przez nową aplikację.

Konfigurowanie ograniczeń dostępu do sieci

Jeśli oryginalna aplikacja miała jakiekolwiek ograniczenia dostępu przychodzącego oparte na adresach IP, możesz ponownie utworzyć dowolne z tych samych reguł dostępu dla ruchu przychodzącego, które chcesz zachować w nowej aplikacji.

Wskazówka

Plan Flex Consumption w pełni obsługuje integrację sieci wirtualnej. W związku z tym możesz również używać przychodzących prywatnych punktów końcowych po migracji. Aby uzyskać więcej informacji, zobacz Prywatne punkty końcowe.

Użyj tego az functionapp config access-restriction add polecenia dla każdego ograniczenia dostępu do adresu IP, które chcesz replikować w nowej aplikacji:

az functionapp config access-restriction add --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
  --rule-name <RULE_NAME> --action Deny --ip-address <IP_ADDRESS> --priority <PRIORITY>

W tym przykładzie zastąp te symbole zastępcze wartościami z oryginalnej aplikacji:

Zastępczy element Wartość
<APP_NAME> Nazwa aplikacji funkcji.
<RESOURCE_GROUP> Grupa zasobów.
<RULE_NAME> Przyjazna nazwa reguły adresu IP.
<Priority> Priorytet wykluczenia.
<IP_Address> Adres IP do wykluczenia.

Uruchom to polecenie dla każdego udokumentowanego ograniczenia adresu IP z oryginalnej aplikacji.

Włączanie monitorowania

Przed rozpoczęciem nowej aplikacji w planie Flex Consumption upewnij się, że usługa Application Insights jest włączona. Skonfigurowanie usługi Application Insights ułatwia rozwiązywanie wszelkich problemów, które mogą wystąpić podczas wdrażania kodu i uruchamiania.

Zaimplementuj kompleksową strategię monitorowania obejmującą metryki aplikacji, dzienniki i koszty. Korzystając z takiej strategii, możesz zweryfikować powodzenie migracji, szybko zidentyfikować wszelkie problemy oraz zoptymalizować wydajność i koszty nowej aplikacji.

Jeśli planujesz porównać tę nową aplikację z bieżącą aplikacją, upewnij się, że schemat zbiera również wymagane testy porównawcze do porównania. Aby uzyskać więcej informacji, zobacz Konfigurowanie monitorowania.

Konfigurowanie wbudowanego uwierzytelniania

Jeśli oryginalna aplikacja korzystała z wbudowanego uwierzytelniania klienta (czasami nazywanego łatwym uwierzytelnianiem), należy ją ponownie utworzyć w nowej aplikacji. Jeśli planujesz ponowne użycie tej samej rejestracji klienta, upewnij się, że w dostawcy uwierzytelniania ustawiono uwierzytelnione punkty końcowe nowej aplikacji.

Na podstawie zebranych wcześniej informacji użyj az webapp auth update polecenia , aby ponownie utworzyć każdą wbudowaną rejestrację uwierzytelniania wymaganą przez aplikację.

Wdrażanie kodu aplikacji w nowej aplikacji Flex Consumption

Gdy nowa aplikacja planu Flex Consumption jest w pełni skonfigurowana na podstawie ustawień z oryginalnej aplikacji, nadszedł czas, aby wdrożyć kod w nowych zasobach aplikacji na platformie Azure.

Ostrzeżenie

Po pomyślnym wdrożeniu wyzwalacze w nowej aplikacji natychmiast zaczynają przetwarzać dane z połączonych usług. Aby zminimalizować zduplikowane dane i zapobiec utracie danych podczas uruchamiania nowej aplikacji i zamykania oryginalnej aplikacji, należy przejrzeć strategie zdefiniowane w ograniczeniach ryzyka według typu wyzwalacza.

Funkcje udostępniają kilka sposobów wdrażania kodu z projektu kodu lub jako gotowy do uruchomienia pakiet wdrożeniowy.

Wskazówka

Jeśli kod projektu jest przechowywany w repozytorium kodu źródłowego, to doskonały moment na skonfigurowanie potoku ciągłego wdrażania. Ciągłe wdrażanie umożliwia automatyczne wdrażanie aktualizacji aplikacji na podstawie zmian w połączonym repozytorium.

Należy zaktualizować istniejące przepływy pracy wdrażania, aby wdrożyć kod źródłowy w nowej aplikacji:

Możesz również utworzyć nowy przepływ pracy ciągłego wdrażania dla nowej aplikacji. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla usługi Azure Functions

Zadania po migracji

Po pomyślnej migracji należy wykonać następujące zadania podrzędne:

Weryfikowanie podstawowych funkcji

  1. Sprawdź, czy nowa aplikacja jest uruchomiona w planie Flex Consumption:

    Użyj tego az functionapp show polecenia, aby wyświetlić szczegółowe informacje o planie hostingu:

    az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query "serverFarmId"
    

    W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji.

  2. Użyj klienta HTTP, aby wywołać co najmniej jeden punkt końcowy wyzwalacza HTTP w nowej aplikacji, aby upewnić się, że odpowiada zgodnie z oczekiwaniami.

Rejestrowanie benchmarków wydajności

Po uruchomieniu nowej aplikacji możesz uruchomić te same testy porównawcze wydajności, które zostały zebrane z oryginalnej aplikacji, takie jak:

Sugerowany test porównawczy Komentarz
Uruchomienie na zimno Zmierz czas od pierwszego żądania do pierwszej odpowiedzi po okresie bezczynności.
Przepływność Mierzenie maksymalnej liczby żądań na sekundę przy użyciu narzędzi do testowania obciążenia w celu określenia sposobu obsługi współbieżnych żądań przez aplikację.
Opóźnienie Śledź czasy odpowiedzi P50, P95 i P99 w różnych warunkach obciążenia. Te metryki można monitorować w usłudze Application Insights.

Możesz użyć tego zapytania Kusto, aby przejrzeć sugerowane czasy odpowiedzi opóźnienia w usłudze Application Insights:

requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart

Uwaga / Notatka

Metryki planu Flex Consumption różnią się od metryk planu Consumption. Podczas porównywania wydajności przed migracją i po migracji należy pamiętać, że należy użyć różnych metryk do śledzenia podobnych właściwości wydajności. Aby uzyskać więcej informacji, zobacz Konfigurowanie monitorowania.

Stwórz niestandardowe pulpity nawigacyjne

Metryki usługi Azure Monitor i usługa Application Insights umożliwiają tworzenie pulpitów nawigacyjnych w witrynie Azure Portal , które wyświetlają wykresy zarówno z metryk platformy, jak i dzienników środowiska uruchomieniowego oraz analiz.

Rozważ skonfigurowanie pulpitów nawigacyjnych i alertów dotyczących kluczowych metryk w witrynie Azure Portal. Aby uzyskać więcej informacji, zobacz Monitorowanie aplikacji na platformie Azure.

Uściślij ustawienia planu

Rzeczywiste ulepszenia wydajności i konsekwencje związane z kosztami migracji mogą się różnić w zależności od obciążeń i konfiguracji specyficznych dla aplikacji. Plan Flex Consumption oferuje kilka ustawień, które można dostosować, aby uszczegółowić wydajność aplikacji. Możesz chcieć wprowadzić korekty, aby ściślej dopasować zachowanie oryginalnej aplikacji lub równoważyć koszty i wydajność. Aby uzyskać więcej informacji, zobacz Dostosowywanie aplikacji w artykule Flex Consumption ( Elastyczne zużycie).

Usuń oryginalną aplikację (opcjonalnie)

Po dokładnym przetestowaniu nowej aplikacji funkcji Flex Consumption i sprawdzeniu, czy wszystko działa zgodnie z oczekiwaniami, warto wyczyścić zasoby, aby uniknąć niepotrzebnych kosztów. Mimo że wyzwalacze w oryginalnej aplikacji są prawdopodobnie już wyłączone, możesz poczekać kilka dni lub nawet kilka tygodni przed całkowitym usunięciem oryginalnej aplikacji. To opóźnienie, które zależy od wzorców użycia aplikacji, zapewnia, że wszystkie scenariusze, w tym rzadko używane, są prawidłowo testowane. Dopiero po zadowoleniu z wyników migracji można przystąpić do usunięcia pierwotnej aplikacji funkcjonalnej.

Ważne

Ta akcja usuwa oryginalną aplikację funkcjonalną. Plan Zużycie pozostaje nienaruszony, jeśli korzystają z niego inne aplikacje. Przed kontynuowaniem upewnij się, że wszystkie funkcje zostały pomyślnie zmigrowane do nowej aplikacji Flex Consumption, zweryfikowano, że żaden ruch nie jest kierowany do oryginalnej aplikacji, i wykonaj kopię zapasową wszystkich odpowiednich dzienników, konfiguracji lub danych, które mogą być potrzebne do celów referencyjnych.

Użyj polecenia , az functionapp delete aby usunąć oryginalną aplikację funkcji:

az functionapp delete --name <ORIGINAL_APP_NAME> --resource-group <RESOURCE_GROUP>

W tym przykładzie zastąp <RESOURCE_GROUP> i <APP_NAME> odpowiednio nazwami grupy zasobów i aplikacji funkcji.

Strategie rozwiązywania problemów i odzyskiwania

Pomimo starannego planowania mogą wystąpić problemy z migracją. Poniżej przedstawiono sposób obsługi potencjalnych problemów podczas migracji:

Problematyka Rozwiązanie
Problemy z wydajnością zimnego startu • Przeglądanie ustawień współbieżności
• Sprawdzanie brakujących zależności
Brakujące powiązania • Weryfikowanie pakietów rozszerzeń
• Aktualizowanie konfiguracji powiązań
Błędy uprawnień • Sprawdzanie przypisań tożsamości i uprawnień ról
Problemy z łącznością sieciową • Weryfikowanie ograniczeń dostępu i ustawień sieci
Brak danych analitycznych aplikacji • Ponowne tworzenie połączenia usługi Application Insights
Nie można uruchomić aplikacji Zobacz Ogólne kroki rozwiązywania problemów
Wyzwalacze nie przetwarzają zdarzeń Zobacz Ogólne kroki rozwiązywania problemów

Jeśli wystąpią problemy z migracją aplikacji produkcyjnej, podczas rozwiązywania problemów warto wycofać migrację do oryginalnej aplikacji .

Ogólne kroki rozwiązywania problemów

Wykonaj następujące kroki w przypadkach, w których nie można uruchomić nowej aplikacji lub wyzwalacze funkcji nie przetwarzają zdarzeń:

  1. Na stronie nowej aplikacji w witrynie Azure Portal wybierz pozycję Diagnozuj i rozwiąż problemy w lewym okienku strony aplikacji. Wybierz Dostępność i wydajność i zapoznaj się z detektorem Aplikacja funkcji w dół lub błędy raportowania. Aby uzyskać więcej informacji, zobacz Omówienie diagnostyki usługi Azure Functions.

  2. Na stronie aplikacji wybierz pozycję Monitorowanie> danych usługiApplication Insights>Wyświetl dane usługi Application Insights, a następnie wybierz pozycję Zbadaj>błędy i sprawdź wszelkie zdarzenia niepowodzenia.

  3. Wybierz Monitorowanie>dzienniki i uruchom zapytanie Kusto, aby sprawdzić te tabele pod kątem błędów:

    traces
        | where severityLevel == 3
        | where cloud_RoleName == "<APP_NAME>"
        | where timestamp > ago(1d)
        | project timestamp, message, operation_Name, customDimensions
        | order by timestamp desc
    

    W tych zapytaniach zastąp <APP_NAME> nazwą nowej aplikacji. Te zapytania sprawdzają błędy w ciągu ostatniego dnia (where timestamp > ago(1d)).

  4. Po powrocie na stronę aplikacji wybierz pozycję Ustawienia>Zmienne środowiskowe i sprawdź, czy wszystkie krytyczne ustawienia aplikacji zostały prawidłowo przeniesione. Poszukaj wszelkich przestarzałych ustawień , które mogły zostać niepoprawnie zmigrowane lub jakiekolwiek literówki lub nieprawidłowe parametry połączenia. Sprawdź domyślne połączenie magazynu danych hosta.

  5. Wybierz Ustawienia>Tożsamość i sprawdź dwukrotnie, czy istnieją oczekiwane tożsamości i czy zostały przypisane do odpowiednich ról.

  6. W swoim kodzie sprawdź, czy wszystkie konfiguracje powiązań są poprawne, zwracając szczególną uwagę na nazwy parametrów połączeń, nazwy kolejek magazynowych i kontenerów oraz ustawienia grup konsumentów w wyzwalaczach usługi Event Hubs.

Cofanie zmian w krytycznych aplikacjach produkcyjnych

Jeśli nie możesz pomyślnie rozwiązać problemów, możesz chcieć powrócić do korzystania z oryginalnej aplikacji podczas dalszego rozwiązywania problemów.

  1. Jeśli oryginalna aplikacja została zatrzymana, uruchom ją ponownie:

    Użyj tego az functionapp start polecenia, aby ponownie uruchomić oryginalną aplikację funkcji:

    az functionapp delete --name <ORIGINAL_APP_NAME> --resource-group <RESOURCE_GROUP>
    
  2. Jeśli utworzono nowe kolejki/tematy/kontenery, upewnij się, że klienci są przekierowywani z powrotem do oryginalnych zasobów.

  3. Jeśli zmodyfikowano domenę DNS lub domenę niestandardową, przywróć te zmiany, aby wskazywały oryginalną aplikację.

Przekazywanie opinii

Jeśli wystąpią problemy z migracją przy użyciu tego artykułu lub chcesz przekazać inne opinie na temat tych wskazówek, skorzystaj z jednej z tych metod, aby uzyskać pomoc lub przekazać swoją opinię:

- Uzyskiwanie pomocy w usłudze Microsoft Q&A
-Tworzenie problemu w repozytorium usługi Azure Functions
- Prześlij opinię o produkcie
- Tworzenie biletu pomocy technicznej