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.
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.
- Plan Flex Consumption wprowadził nową sekcję w typie
Microsoft.Web/siteszasobu o nazwiefunctionAppConfig, która zawiera wiele konfiguracji, które były ustawieniami aplikacji. Aby uzyskać więcej informacji, zobacz Wycofywanie planu Flex Consumption. - Szczegóły konfiguracji zasobów dla aplikacji planu Flex Consumption można znaleźć w Automatyzowanie wdrażania zasobów dla aplikacji funkcji w usłudze Azure Functions.
- Functions utrzymuje zestaw kanonicznych przykładów wdrożenia planu konsumpcji Flex dla szablonów ARM, plików Bicep i plików Terraform.
- Plan Flex Consumption wprowadził nową sekcję w typie
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 addpolecenia :az extension add --name resource-graphNarzędzie
jquż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 listwyjściowe polecenia zawierają aplikację naeligible_appsliś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 listliś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 listJeśli polecenie uwzględniło Twoją aplikację naineligible_appsliś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:
- W przypadku aplikacji w języku C#, które są uruchamiane podczas przetwarzania przy użyciu środowiska uruchomieniowego (
dotnet), należy najpierw przeprowadzić migrację aplikacji do izolowanej platformy .NET. Aby uzyskać więcej informacji, zobacz Migrowanie aplikacji języka C# z modelu procesu do izolowanego modelu procesu roboczego.
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 listJeśli polecenie uwzględniło aplikację naeligible_appsliś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 listJeśli polecenie uwzględniło Twoją aplikację naineligible_appsliś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 listwyświetla twoją aplikację naeligible_appsliś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 listliście,eligible_appsale 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 listJeśli polecenie uwzględniło aplikację naeligible_appsliś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 listJeśli polecenie uwzględniło aplikację wineligible_appsliście z komunikatem o błędzieThe site '<name>' is using TSL/SSL certificates. TSL/SSL certificates are not supported in Flex Consumption.lubThe 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 listdodaje twoją aplikację do listyeligible_apps, twoja aplikacja zużycia zasobów na Linuxie już nie używa wyzwalaczy magazynu obiektów blob zEventGridjako źródłem. Możesz nadal rozważyć usługi zależne.
Wymagana akcja:
az functionapp flex-migration listJeśli polecenie uwzględniło aplikację naineligible_appsliś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:
Dodaj lub zaktualizuj
sourcewłaściwość w definicjiEventGridwyzwalacza usługi Blob Storage i ponownie wdróż aplikację.Utwórz adres URL punktu końcowego w aplikacji funkcji, która będzie używana przez subskrypcję zdarzeń.
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:
- Idempotentność: Upewnij się, że funkcje mogą bezpiecznie przetwarzać ten sam komunikat wielokrotnie bez negatywnych skutków ubocznych. Aby uzyskać więcej informacji, zobacz Projektowanie usługi Azure Functions pod kątem identycznych danych wejściowych.
- Rejestrowanie i monitorowanie: włącz szczegółowe rejestrowanie w obu aplikacjach podczas migracji w celu śledzenia przetwarzania komunikatów. Aby uzyskać więcej informacji, zobacz Monitorowanie wykonań w usłudze Azure Functions.
- Tworzenie punktów kontrolnych: w przypadku wyzwalaczy przesyłania strumieniowego, takich jak wyzwalacz usługi Event Hubs, zaimplementuj prawidłowe zachowania punktu kontrolnego w celu śledzenia położenia przetwarzania. Aby uzyskać więcej informacji, zobacz Niezawodne przetwarzanie zdarzeń usługi Azure Functions.
- Przetwarzanie równoległe: rozważ tymczasowe uruchamianie obu aplikacji równolegle podczas przełączenia. Pamiętaj, aby dokładnie monitorować i weryfikować sposób przetwarzania danych z usługi nadrzędnej. Aby uzyskać więcej informacji, zobacz Active-active-pattern for non-HTTPS trigger functions (Wzorzec aktywny-aktywny dla funkcji wyzwalacza bez protokołu HTTPS).
- Stopniowe przełączanie: w przypadku systemów o wysokiej przepustowości rozważ wdrożenie stopniowego przełączenia przez przekierowanie części ruchu do nowej aplikacji. Możesz zarządzać routingiem żądań nadrzędnych z aplikacji przy użyciu usług, takich jak Azure API Management lub Azure Application Gateway.
Ś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 | clientCertEnabledclientCertModeclientCertExclusionPaths |
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-releasesna 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_PACKAGEustawienie, 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:
Użyj tego
az functionapp config appsettings listpolecenia, aby pobraćWEBSITE_RUN_FROM_PACKAGEustawienie aplikacji, jeśli istnieje:az functionapp config appsettings list --name <APP_NAME> --resource-group <RESOURCE_GROUP> \ --query "[?name=='WEBSITE_RUN_FROM_PACKAGE'].value" -o tsvW 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.WEBSITE_RUN_FROM_PACKAGEJeśli wartość wynosi1lub 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 fiPonownie 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. |
Użyj tego
az functionapp config appsettings listpolecenia, aby pobraćWEBSITE_RUN_FROM_PACKAGEustawienie aplikacji, jeśli istnieje:az functionapp config appsettings list --name <APP_NAME> --resource-group <RESOURCE_GROUP> \ --query "[?name=='WEBSITE_RUN_FROM_PACKAGE'].value" -o tsvW 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.WEBSITE_RUN_FROM_PACKAGEJeśli wartość wynosi1lub 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 fiPonownie 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:
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 tablePrzejrzyj zmigrowane ustawienia aplikacji:
az functionapp config appsettings list --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP> \ --output tablePorównaj te ustawienia z aplikacją źródłową, aby upewnić się, że konfiguracje krytyczne zostały przeniesione.
Sprawdź konfigurację tożsamości zarządzanej:
az functionapp identity show --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP>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
- Utwórz aplikację w planie Flex Consumption
- Stosowanie zmigrowanych ustawień aplikacji w nowej aplikacji
- Stosowanie innych konfiguracji aplikacji
- Konfigurowanie ustawień skalowania i współbieżności
- Skonfiguruj niestandardowe domeny i dostęp CORS
- Konfigurowanie tożsamości zarządzanych i przypisywanie ról
- Konfigurowanie ograniczeń dostępu do sieci
- Włączanie monitorowania
- Konfigurowanie wbudowanego uwierzytelniania
- Wdrażanie kodu aplikacji w nowej aplikacji Flex Consumption
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:
- 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.
- Zapisuje zebrane ustawienia lokalnie w pliku tymczasowym.
- Stosuje ustawienia z pliku do nowej aplikacji.
- 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.
Użyj tego
az functionapp config hostname addpolecenia, 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.Użyj tego
az functionapp cors addpolecenia, 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.
Użyj tego
az functionapp identity assignpolecenia, 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.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.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:
- Kompilowanie i wdrażanie przy użyciu usługi Azure Pipelines
- Kompilowanie i wdrażanie przy użyciu funkcji GitHub Actions
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
Sprawdź, czy nowa aplikacja jest uruchomiona w planie Flex Consumption:
Użyj tego
az functionapp showpolecenia, 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.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ń:
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.
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.
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 descW tych zapytaniach zastąp
<APP_NAME>nazwą nowej aplikacji. Te zapytania sprawdzają błędy w ciągu ostatniego dnia (where timestamp > ago(1d)).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.
Wybierz Ustawienia>Tożsamość i sprawdź dwukrotnie, czy istnieją oczekiwane tożsamości i czy zostały przypisane do odpowiednich ról.
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.
Jeśli oryginalna aplikacja została zatrzymana, uruchom ją ponownie:
Użyj tego
az functionapp startpolecenia, aby ponownie uruchomić oryginalną aplikację funkcji:az functionapp delete --name <ORIGINAL_APP_NAME> --resource-group <RESOURCE_GROUP>Jeśli utworzono nowe kolejki/tematy/kontenery, upewnij się, że klienci są przekierowywani z powrotem do oryginalnych zasobów.
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