Technologie wdrażania w usłudze Azure Functions

Aby wdrożyć kod projektu usługi Azure Functions na platformie Azure, możesz użyć kilku różnych technologii. Ten artykuł zawiera omówienie dostępnych metod wdrażania i zaleceń dotyczących najlepszej metody użycia w różnych scenariuszach. Zawiera również wyczerpującą listę kluczowych informacji na temat podstawowych technologii wdrażania.

Metody wdrażania

Technologia wdrażania używana do publikowania kodu w aplikacji funkcji na platformie Azure zależy od konkretnych potrzeb i punktu w cyklu programowania. Na przykład podczas programowania i testowania można wdrażać bezpośrednio z poziomu narzędzia programistycznego, takiego jak Visual Studio Code. Gdy aplikacja jest w środowisku produkcyjnym, częściej publikujesz ciągłe publikowanie z kontroli źródła lub przy użyciu zautomatyzowanego potoku publikowania, który może obejmować walidację i testowanie.

W poniższej tabeli opisano dostępne metody wdrażania dla projektu kodu.

Typ wdrożenia Metody Najlepsze dla...
Oparte na narzędziach Publikowanie w programie Visual Studio Code
Publikowanie w programie Visual Studio
Publikowanie podstawowych narzędzi
Wdrożenia podczas programowania i innych improwizowanych wdrożeń. Wdrażanie kodu na żądanie przy użyciu lokalnych narzędzi programistycznych.
Zarządzane przez usługę App Service Centrum wdrażania (CIĄGŁA integracja/ciągłe wdrażanie)
Wdrożenia kontenerów
Ciągłe wdrażanie (CI/CD) z kontroli źródła lub z rejestru kontenerów. Wdrożenia są zarządzane przez platformę App Service (Kudu).
Potoki zewnętrzne Azure Pipelines
GitHub Actions
Potoki produkcyjne, które obejmują walidację, testowanie i inne akcje, które muszą być uruchamiane w ramach zautomatyzowanego wdrażania. Wdrożenia są zarządzane przez potok.

Konkretne wdrożenia powinny korzystać z najlepszej technologii na podstawie konkretnego scenariusza. Wiele metod wdrażania jest opartych na wdrożeniu zip, które jest zalecane do wdrożenia.

Dostępność technologii wdrażania

Metoda wdrażania zależy również od planu hostingu i systemu operacyjnego, na którym jest uruchamiana aplikacja funkcji.
Obecnie usługa Functions oferuje trzy plany hostingu:

Każdy plan ma różne zachowania. Nie wszystkie technologie wdrażania są dostępne dla każdego planu hostingu i systemu operacyjnego. Ten wykres zawiera informacje na temat obsługiwanych technologii wdrażania:

Technologia wdrażania Zużycie w systemie Windows Windows Premium Windows Dedicated Zużycie w systemie Linux Linux Premium Linux Dedicated
Adres URLpakietu zewnętrznego 1
Wdrażanie zip
Kontener platformy Docker
Kontrola źródła
Lokalne narzędzie Git1
FTPS1
Edytowanie w portalu2

1 Technologie wdrażania, które wymagają ręcznej synchronizacji wyzwalaczy , nie są zalecane.
2 Edytowanie w portalu jest wyłączone, gdy kod jest wdrażany w aplikacji funkcji spoza portalu. Aby uzyskać więcej informacji, w tym szczegóły obsługi języka do edycji w portalu, zobacz Szczegóły obsługi języka.

Najważniejsze pojęcia

Niektóre kluczowe pojęcia mają kluczowe znaczenie dla zrozumienia sposobu działania wdrożeń w usłudze Azure Functions.

Synchronizacja wyzwalacza

Po zmianie dowolnego z wyzwalaczy infrastruktura usługi Functions musi mieć świadomość zmian. Synchronizacja odbywa się automatycznie w przypadku wielu technologii wdrażania. Jednak w niektórych przypadkach należy ręcznie zsynchronizować wyzwalacze.

W przypadku korzystania z tych opcji wdrażania należy ręcznie zsynchronizować wyzwalacze:

Wyzwalacze synchronizacji można synchronizować na jeden z trzech sposobów:

  • Uruchom ponownie aplikację funkcji w witrynie Azure Portal.
  • Wyślij żądanie HTTP POST do https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> przy użyciu klucza głównego.
  • Wyślij żądanie HTTP POST do .https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01 Zastąp symbole zastępcze swoim identyfikatorem subskrypcji, nazwą grupy zasobów i nazwą aplikacji funkcji. To żądanie wymaga tokenu dostępu w nagłówku Authorizationżądania.

Podczas wdrażania przy użyciu zewnętrznego adresu URL pakietu należy ręcznie ponownie uruchomić aplikację funkcji, aby w pełni zsynchronizować wdrożenie, gdy pakiet ulegnie zmianie bez zmiany adresu URL, który obejmuje początkowe wdrożenie.

Gdy aplikacja funkcji jest zabezpieczona przez ograniczenia sieci przychodzącej, punkt końcowy synchronizacji może być wywoływany tylko z klienta wewnątrz sieci wirtualnej.

Kompilacja zdalna

Usługa Azure Functions może automatycznie wykonywać kompilacje kodu odbieranego po wdrożeniu zip. Te kompilacje różnią się w zależności od tego, czy aplikacja jest uruchomiona w systemie Windows, czy Linux.

Wszystkie aplikacje funkcji działające w systemie Windows mają małą aplikację do zarządzania, witrynę scm udostępnioną przez kudu. Ta witryna obsługuje większość logiki wdrażania i kompilacji dla usługi Azure Functions.

Po wdrożeniu aplikacji w systemie Windows uruchamiane są polecenia specyficzne dla języka, takie jak dotnet restore (C#) lub npm install (JavaScript).

Podczas wdrażania przy użyciu kompilacji zdalnych należy wziąć pod uwagę następujące kwestie:

  • Kompilacje zdalne są obsługiwane w przypadku aplikacji funkcji działających w systemie Linux w planie Zużycie. Jednak opcje wdrażania są ograniczone dla tych aplikacji, ponieważ nie mają scm witryny (Kudu).
  • Aplikacje funkcji działające w systemie Linux plan Premium lub w planie usługi App Service mają witrynę scm (Kudu), ale jest ograniczona w porównaniu z systemem Windows.
  • Kompilacje zdalne nie są wykonywane, gdy aplikacja korzysta z polecenia run-from-package. Aby dowiedzieć się, jak używać zdalnej kompilacji w tych przypadkach, zobacz Wdrażanie zip.
  • Problemy z kompilacją zdalną mogą wystąpić podczas tworzenia aplikacji przed udostępnieniem funkcji (1 sierpnia 2019 r.). W przypadku starszych aplikacji utwórz nową aplikację funkcji lub uruchom az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> polecenie , aby zaktualizować aplikację funkcji. To polecenie może podjąć dwie próby pomyślne.

Magazyn zawartości aplikacji

Kilka metod wdrażania przechowuje wdrożony lub utworzony ładunek aplikacji na koncie magazynu skojarzonym z aplikacją funkcji. Usługa Functions próbuje użyć udziału zawartości usługi Azure Files podczas konfigurowania, ale niektóre metody zamiast tego przechowują ładunek w wystąpieniu magazynu obiektów blob skojarzonym z połączeniem AzureWebJobsStorage . Zobacz szczegóły w sekcji Gdzie zawartość aplikacji jest przechowywana akapity każdej technologii wdrażania omówionej w następnej sekcji.

Ważne

Konto magazynu służy do przechowywania ważnych danych aplikacji, czasami w tym samego kodu aplikacji. Należy ograniczyć dostęp z innych aplikacji i użytkowników do konta magazynu.

Szczegóły technologii wdrażania

Następujące metody wdrażania są dostępne w usłudze Azure Functions.

Adres URL pakietu zewnętrznego

Możesz użyć zewnętrznego adresu URL pakietu, aby odwołać się do pliku pakietu zdalnego (.zip), który zawiera aplikację funkcji. Plik jest pobierany z podanego adresu URL, a aplikacja działa w trybie Uruchom z pakietu .

Jak go używać: Dodaj WEBSITE_RUN_FROM_PACKAGE do ustawień aplikacji. Wartość tego ustawienia powinna być adresem URL (lokalizacją określonego pliku pakietu, który chcesz uruchomić). Ustawienia można dodać w portalu lub przy użyciu interfejsu wiersza polecenia platformy Azure.

Jeśli używasz usługi Azure Blob Storage, użyj prywatnego kontenera z sygnaturą dostępu współdzielonego (SAS), aby udzielić usłudze Functions dostępu do pakietu. Za każdym razem, gdy aplikacja zostanie ponownie uruchomiona, pobiera kopię zawartości. Odwołanie musi być prawidłowe przez okres istnienia aplikacji.

Kiedy go używać: Adres URL pakietu zewnętrznego jest jedyną obsługiwaną metodą wdrażania dla usługi Azure Functions uruchomionej w systemie Linux w planie Zużycie, jeśli użytkownik nie chce, aby kompilacja zdalna wystąpiła. Za każdym razem, gdy wdrażasz plik pakietu, do którego odwołuje się aplikacja funkcji, należy ręcznie zsynchronizować wyzwalacze, w tym początkowe wdrożenie. Jeśli zmienisz zawartość pliku pakietu, a nie sam adres URL, musisz również ponownie uruchomić aplikację funkcji, aby zsynchronizować wyzwalacze.

Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana pod określonym adresem URL. Może to być w usłudze Azure Blobs, prawdopodobnie na koncie magazynu określonym przez AzureWebJobsStorage połączenie. Niektóre narzędzia klienckie mogą domyślnie wdrażać w obiekcie blob na tym koncie. Na przykład w przypadku aplikacji zużycie systemu Linux interfejs wiersza polecenia platformy Azure podejmie próbę wdrożenia za pośrednictwem pakietu przechowywanego w obiekcie blob na koncie określonym przez AzureWebJobsStorageusługę .

Wdrażanie zip

Użyj narzędzia zip deploy, aby wypchnąć plik .zip zawierający aplikację funkcji na platformie Azure. Opcjonalnie możesz ustawić aplikację tak, aby uruchamiała się z pakietu lub określić, że ma miejsce kompilacja zdalna.

Jak go używać: wdróż przy użyciu ulubionego narzędzia klienckiego: Visual Studio Code, Visual Studio lub z wiersza polecenia przy użyciu narzędzi Azure Functions Core Tools. Domyślnie te narzędzia używają wdrożenia zip i uruchamiania z pakietu. Narzędzia Core Tools i rozszerzenie programu Visual Studio Code umożliwiają kompilację zdalną podczas wdrażania w systemie Linux. Aby ręcznie wdrożyć plik .zip w aplikacji funkcji, postępuj zgodnie z instrukcjami w temacie Deploy from a .zip file or URL (Wdrażanie z pliku lub adresu URL .zip).

Podczas wdrażania przy użyciu narzędzia zip deploy możesz ustawić aplikację do uruchomienia z pakietu. Aby uruchomić z pakietu, ustaw WEBSITE_RUN_FROM_PACKAGE wartość ustawienia aplikacji na 1wartość . Zalecamy wdrożenie zip. Zapewnia szybsze czasy ładowania aplikacji i jest to ustawienie domyślne dla programu VS Code, programu Visual Studio i interfejsu wiersza polecenia platformy Azure.

Kiedy go używać: Wdrażanie zip jest zalecaną technologią wdrażania dla usługi Azure Functions.

Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji z pliku zip jest domyślnie przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji. W przypadku użycia systemu Linux zawartość aplikacji jest utrwalana na obiekcie blob na koncie magazynu określonym przez AzureWebJobsStorage połączenie.

Kontener platformy Docker

Aplikację funkcji uruchomioną w kontenerze systemu Linux można wdrożyć.

How to use it:Create your functions in a Linux container then deploy the container to a Premium or Dedicated plan in Azure Functions or another container host. Użyj narzędzi Azure Functions Core Tools , aby utworzyć dostosowany plik Dockerfile dla projektu, którego używasz do kompilowania konteneryzowanej aplikacji funkcji. Kontener można używać w następujących wdrożeniach:

Kiedy go używać: użyj opcji kontenera platformy Docker, jeśli potrzebujesz większej kontroli nad środowiskiem systemu Linux, w którym działa aplikacja funkcji i gdzie jest hostowany kontener. Ten mechanizm wdrażania jest dostępny tylko dla funkcji działających w systemie Linux.

Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w określonym rejestrze kontenerów w ramach obrazu.

Kontrola źródła

Możesz włączyć ciągłą integrację między aplikacją funkcji a repozytorium kodu źródłowego. Po włączeniu kontroli źródła aktualizacja kodu w połączonym repozytorium źródłowym wyzwala wdrożenie najnowszego kodu z repozytorium. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla usługi Azure Functions.

Jak go używać: najprostszym sposobem skonfigurowania publikowania z kontroli źródła jest centrum wdrażania w obszarze Funkcje portalu. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla usługi Azure Functions.

Kiedy go używać: Korzystanie z kontroli źródła jest najlepszym rozwiązaniem dla zespołów, które współpracują ze swoimi aplikacjami funkcji. Kontrola źródła to dobra opcja wdrożenia, która umożliwia bardziej zaawansowane potoki wdrażania. Kontrola źródła jest zwykle włączona w miejscu przejściowym, które można zamienić na środowisko produkcyjne po weryfikacji aktualizacji z repozytorium. Aby uzyskać więcej informacji, zobacz Miejsca wdrożenia usługi Azure Functions.

Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji znajduje się w systemie kontroli źródła, ale lokalnie sklonowana i skompilowana zawartość aplikacji jest przechowywana w systemie plików aplikacji, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.

Lokalna usługa Git

Możesz użyć lokalnego narzędzia Git do wypychania kodu z komputera lokalnego do usługi Azure Functions przy użyciu usługi Git.

Jak go używać: postępuj zgodnie z instrukcjami w temacie Wdrażanie lokalne usługi Git, aby aplikacja systemu Azure Service.

Kiedy go używać: aby zmniejszyć prawdopodobieństwo wystąpienia błędów, należy unikać używania metod wdrażania, które wymagają dodatkowego kroku ręcznego synchronizowania wyzwalaczy. Jeśli to możliwe, użyj wdrożenia zip.

Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.

FTP/S

Za pomocą protokołu FTP/S można bezpośrednio przesyłać pliki do usługi Azure Functions, chociaż ta metoda wdrażania nie jest zalecana. Jeśli nie planujesz korzystania z protokołu FTP, należy go wyłączyć. Jeśli zdecydujesz się używać protokołu FTP, należy wymusić usługę FTPS. Aby dowiedzieć się, jak w witrynie Azure Portal, zobacz Wymuszanie protokołu FTPS.

Jak go używać: postępuj zgodnie z instrukcjami w ustawieniach wdrażania FTPS, aby uzyskać adres URL i poświadczenia, których można użyć do wdrożenia w aplikacji funkcji przy użyciu usługi FTPS.

Kiedy go używać: aby zmniejszyć prawdopodobieństwo wystąpienia błędów, należy unikać używania metod wdrażania, które wymagają dodatkowego kroku ręcznego synchronizowania wyzwalaczy. Jeśli to możliwe, użyj wdrożenia zip.

Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.

Edytowanie portalu

W edytorze opartym na portalu można bezpośrednio edytować pliki, które znajdują się w aplikacji funkcji (zasadniczo wdrażane przy każdym zapisywaniu zmian).

Jak go używać: aby móc edytować funkcje w witrynie Azure Portal, musisz utworzyć funkcje w portalu. Aby zachować pojedyncze źródło prawdy, użycie dowolnej innej metody wdrażania sprawia, że funkcja jest tylko do odczytu i uniemożliwia ciągłą edycję portalu. Aby powrócić do stanu, w którym można edytować pliki w witrynie Azure Portal, możesz ręcznie przywrócić tryb Read/Write edycji i usunąć wszystkie ustawienia aplikacji związane z wdrażaniem (na przykład WEBSITE_RUN_FROM_PACKAGE).

Kiedy go używać: portal to dobry sposób na rozpoczęcie pracy z usługą Azure Functions. W przypadku bardziej zaawansowanych prac programistycznych zalecamy użycie jednego z następujących narzędzi klienckich:

Gdzie jest przechowywana zawartość aplikacji: zawartość aplikacji jest przechowywana w systemie plików, która może być wspierana przez usługę Azure Files z konta magazynu określonego podczas tworzenia aplikacji funkcji.

W poniższej tabeli przedstawiono systemy operacyjne i języki, które obsługują edycję w portalu:

Język Zużycie w systemie Windows Windows Premium Windows Dedicated Zużycie w systemie Linux Linux Premium Linux Dedicated
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 Edytowanie w portalu jest obsługiwane tylko w przypadku plików skryptów języka C#, które są uruchamiane w trakcie procesu z hostem. Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów skryptu języka C# usługi Azure Functions (csx).
2 Edytowanie w portalu jest obsługiwane tylko w przypadku modelu programowania języka Python w wersji 1.

Zachowania wdrożenia

Po wdrożeniu aktualizacji w kodzie aplikacji funkcji funkcje są obecnie przerywane. Po zakończeniu wdrażania nowy kod zostanie załadowany w celu rozpoczęcia przetwarzania żądań. Zapoznaj się z artykułem Zwiększanie wydajności i niezawodności usługi Azure Functions , aby dowiedzieć się, jak pisać funkcje bezstanowe i obronne.

Jeśli potrzebujesz większej kontroli nad tym przejściem, należy użyć miejsc wdrożenia.

Miejsca wdrożenia

Podczas wdrażania aplikacji funkcji na platformie Azure można wdrożyć w osobnym miejscu wdrożenia zamiast bezpośrednio w środowisku produkcyjnym. Wdrażanie w miejscu wdrożenia, a następnie zamiana na środowisko produkcyjne po weryfikacji jest zalecanym sposobem konfigurowania ciągłego wdrażania.

Sposób wdrażania w miejscu zależy od określonego narzędzia wdrażania, którego używasz. Na przykład w przypadku korzystania z narzędzi Azure Functions Core Tools należy dołączyć--slot opcję wskazania nazwy określonego miejsca dla func azure functionapp publish polecenia.

Aby uzyskać więcej informacji na temat miejsc wdrożenia, zobacz dokumentację miejsc wdrożenia usługi Azure Functions, aby uzyskać szczegółowe informacje.

Następne kroki

Przeczytaj następujące artykuły, aby dowiedzieć się więcej na temat wdrażania aplikacji funkcji: