Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na platformie Azure możesz uruchamiać funkcje bezpośrednio z pliku pakietu wdrożeniowego w aplikacji funkcji. Drugą opcją jest wdrożenie plików w katalogu c:\home\site\wwwroot (Windows) lub /home/site/wwwroot (Linux) aplikacji funkcji.
W tym artykule opisano zalety uruchamiania funkcji z pakietu. Pokazano również, jak włączyć tę funkcję w aplikacji funkcji.
Zalety uruchamiania z pliku pakietu
Istnieje kilka korzyści związanych z uruchamianiem funkcji z pliku pakietu:
- Zmniejsza ryzyko problemów z blokowaniem kopiowania plików.
- Można wdrożyć w aplikacji produkcyjnej (z ponownym uruchomieniem).
- Sprawdza pliki, które są uruchomione w aplikacji.
- Zwiększa wydajność wdrożeń usługi Azure Resource Manager.
- Skraca czas zimnego uruchamiania, szczególnie w przypadku funkcji JavaScript z dużymi strukturami pakietów npm.
Aby uzyskać więcej informacji, zobacz to ogłoszenie.
Włączanie funkcji do uruchamiania z pakietu
Aplikacje funkcji w ramach planu hostingu Flex Consumption domyślnie działają z pakietu. Nie trzeba wykonywać żadnej specjalnej konfiguracji.
Aby umożliwić uruchamianie aplikacji funkcji z pakietu w planach hostingu Consumption, Elastic Premium i Dedicated (App Service), dodaj WEBSITE_RUN_FROM_PACKAGE ustawienie aplikacji do aplikacji funkcji. Ustawienie WEBSITE_RUN_FROM_PACKAGE aplikacji może mieć jedną z następujących wartości:
| Wartość | Opis |
|---|---|
1 |
Oznacza, że aplikacja funkcji działa z lokalnego pliku pakietu wdrożonego w folderze c:\home\data\SitePackages (Windows) lub /home/data/SitePackages (Linux) aplikacji funkcji. |
<URL> |
Ustawia adres URL, który jest zdalną lokalizacją określonego pliku pakietu, który chcesz uruchomić. Wymagane w przypadku aplikacji funkcji działających w systemie Linux w planie Zużycie. |
W poniższej tabeli przedstawiono zalecane WEBSITE_RUN_FROM_PACKAGE wartości wdrożenia do określonego systemu operacyjnego i planu hostingu:
| Plan hostingu | Windows | Linuxa |
|---|---|---|
| Zużycie |
1 jest zdecydowanie zalecany. |
Obsługiwany jest tylko warunek <URL>. |
| Premia |
1 jest zalecany. |
1 jest zalecany. |
| Oddany |
1 jest zalecany. |
1 jest zalecany. |
Zagadnienia ogólne
- Nie dodawaj
WEBSITE_RUN_FROM_PACKAGEustawienia aplikacji do aplikacji w planie Flex Consumption . - Plik pakietu musi być .zip sformatowany. Formaty tar i gzip nie są obsługiwane.
- Zalecane jest wdrożenie za pomocą ZIP.
- Podczas wdrażania aplikacji funkcji w systemie Windows należy ustawić
WEBSITE_RUN_FROM_PACKAGEna1i opublikować przy użyciu wdrożenia zip. - Gdy uruchomisz z pakietu, folder
wwwrootjest tylko do odczytu i otrzymasz błąd, jeśli spróbujesz zapisać pliki w tym katalogu. Pliki są również tylko do odczytu w witrynie Azure Portal. - Maksymalny rozmiar pliku pakietu wdrożeniowego to 1 GB.
- Wdrożenie używa magazynu tymczasowego podczas rozpakowywania plików projektu. Oznacza to, że aplikacja funkcji musi mieć wystarczającą ilość dostępnego tymczasowego miejsca do przechowywania zawartości pakietu. Należy pamiętać, że tymczasowy limit przestrzeni dyskowej dla planu Konsumpcyjnego wynosi 500 MB na plan. Aby dowiedzieć się więcej o rozwiązywaniu problemów z magazynem tymczasowym, zobacz Jak rozwiązywać problemy z magazynem tymczasowym w usłudze aplikacja systemu Azure Service.
- Nie można użyć lokalnej pamięci podręcznej podczas uruchamiania z pakietu wdrożeniowego.
- Jeśli projekt musi używać kompilacji zdalnej, nie używaj
WEBSITE_RUN_FROM_PACKAGEustawienia aplikacji. Zamiast tego dodaj ustawienie aplikacjiSCM_DO_BUILD_DURING_DEPLOYMENT=truedostosowywania wdrożenia. W przypadku systemu Linux dodaj również ustawienieENABLE_ORYX_BUILD=true. Aby uzyskać więcej informacji, zobacz Zdalna kompilacja.
Uwaga
Ustawienie WEBSITE_RUN_FROM_PACKAGE aplikacji nie działa z MSDeploy zgodnie z opisem w sekcji MSDeploy VS. ZipDeploy. Podczas wdrażania zostanie wyświetlony błąd, taki jak ARM-MSDeploy Deploy Failed. Aby rozwiązać ten błąd, zmień wartość /MSDeploy na /ZipDeploy.
Dodaj ustawienie WEBSITE_RUN_FROM_PACKAGE
Istnieje kilka sposobów dodawania, aktualizowania i usuwania ustawień aplikacji funkcji:
- W witrynie Azure Portal
- Przy użyciu interfejsu wiersza polecenia platformy Azure
- Przy użyciu programu Azure PowerShell
Zmiany ustawień aplikacji funkcji wymagają ponownego uruchomienia aplikacji funkcji.
Tworzenie archiwum zip
Archiwum zip, które wdrażasz, musi zawierać wszystkie pliki potrzebne do uruchomienia aplikacji funkcjonalnej. Możesz ręcznie utworzyć archiwum zip z zawartości folderu projektu Funkcji przy użyciu wbudowanych funkcji kompresji .zip lub narzędzi innych niż Microsoft.
Archiwum musi zawierać plik host.json w katalogu głównym wyodrębnionego folderu. Wybrany stos języka dla aplikacji funkcji tworzy inne wymagania:
- .NET (model izolowanego pracownika)
- .NET (model wewnątrzprocesowy)
- Jawa
- JavaScript
- Maszynopis
- PowerShell
- Pyton
Ważne
W przypadku języków, które wygenerowały skompilowane dane wyjściowe do wdrożenia, upewnij się, że skompresowano zawartość folderu wyjściowego, który planujesz opublikować, a nie cały folder projektu. Gdy funkcja wyodrębnia zawartość archiwum zip, host.json plik musi istnieć w katalogu głównym pakietu.
Użyj WEBSITE_RUN_FROM_PACKAGE = 1
Ta sekcja zawiera informacje o sposobie uruchamiania aplikacji funkcji z pliku pakietu lokalnego.
Zagadnienia dotyczące wdrażania z pakietu lokalnego
- Użycie pakietu lokalnego jest zalecaną opcją uruchamiania z pakietu wdrożeniowego, z wyjątkiem uruchamiania w systemie Linux hostowanym w planie Zużycie.
- Wdrożenie metodą pliku ZIP jest zalecanym sposobem przesyłania pakietu wdrożeniowego do witryny.
- Jeśli nie używasz wdrożenia zip, upewnij się, że
c:\home\data\SitePackagesfolder (Windows) lub/home/data/SitePackages(Linux) ma plik o nazwiepackagename.txt. Ten plik zawiera tylko nazwę bez żadnych białych znaków pliku pakietu w tym folderze, który jest aktualnie uruchomiony.
Integracja z wdrożeniem zip
Wdrożenie zip to funkcja usługi Azure App Service, dzięki której możesz wdrażać projekt aplikacji funkcji w katalogu wwwroot. Projekt jest spakowany jako plik wdrożenia .zip. Te same interfejsy API mogą być używane do wdrażania pakietu do folderu c:\home\data\SitePackages (Windows) lub /home/data/SitePackages (Linux).
Po ustawieniu wartości ustawienia aplikacji WEBSITE_RUN_FROM_PACKAGE na 1, interfejsy API wdrażania zip kopiują pakiet do folderu c:\home\data\SitePackages (Windows) lub /home/data/SitePackages (Linux) zamiast wyodrębniania plików do c:\home\site\wwwroot (Windows) lub /home/site/wwwroot (Linux). Spowoduje to również utworzenie packagename.txt pliku. Po automatycznym ponownym uruchomieniu aplikacji funkcji pakiet jest montowany na wwwroot jako system plików tylko do odczytu. Aby uzyskać więcej informacji na temat wdrażania zip, zobacz Wdrażanie zip dla usługi Azure Functions.
Uwaga
Po wdrożeniu zostanie wyzwolone ponowne uruchomienie aplikacji funkcyjnej. Wykonania funkcji, które są uruchamiane podczas wdrażania, są przerywane. Aby uzyskać informacje o sposobie pisania funkcji bezstanowych i defensywnych, zobacz Jak pisać funkcje, aby były bezstanowe.
Użyj WEBSITE_RUN_FROM_PACKAGE = adres URL
Ta sekcja zawiera informacje o tym, jak uruchomić aplikację funkcyjną z pakietu wdrożonego na punkt końcowy URL. Ta opcja jest jedyną obsługiwaną opcją uruchamiania z pakietu, który jest hostowany na systemie Linux, z planem konsumpcji. Ta opcja nie jest obsługiwana w planie Flex Consumption .
Zagadnienia dotyczące wdrażania z adresu URL
- Nie ustawiaj
WEBSITE_RUN_FROM_PACKAGE = <URL>w aplikacjach w ramach planu Flex Consumption. Ta opcja nie jest obsługiwana. - Aplikacje funkcji działające w systemie Windows mają niewielki wzrost czasu zimnego startu, gdy pakiet aplikacji jest wdrażany w punkcie końcowym adresu URL przez
WEBSITE_RUN_FROM_PACKAGE = <URL>. - Po określeniu adresu URL należy również ręcznie zsynchronizować wyzwalacze po opublikowaniu zaktualizowanego pakietu.
- Środowisko uruchomieniowe usługi Functions musi mieć uprawnienia dostępu do adresu URL pakietu.
- Nie wdrażaj pakietu w usłudze Azure Blob Storage jako publicznego obiektu blob. Zamiast tego użyj prywatnego kontenera z sygnaturą dostępu współdzielonego (SAS) lub użyj tożsamości zarządzanej, aby umożliwić środowisku uruchomieniowemu usługi Functions dostęp do pakietu.
- Należy zachować wszystkie adresy URL SAS używane do wdrażania. Gdy wygaśnie SAS (sygnatura dostępu współdzielonego), pakiet nie może być już wdrożony. W takim przypadku należy wygenerować nową sygnaturę dostępu współdzielonego i zaktualizować ustawienie w aplikacji funkcji. To obciążenie związane z zarządzaniem można wyeliminować przy użyciu tożsamości zarządzanej.
- W przypadku uruchamiania w planie Premium pamiętaj, aby wyeliminować zimne starty.
- Jeśli korzystasz z planu dedykowanego, upewnij się, że włączono opcję Zawsze włączone.
- Do przesyłania plików pakietu do kontenerów obiektów blob na Twoim koncie magazynu, możesz użyć Eksploratora usługi Azure Storage.
Ręczne przekazywanie pakietu do usługi Blob Storage
Aby wdrożyć spakowany pakiet podczas korzystania z opcji adresu URL, należy utworzyć .zip skompresowany pakiet wdrożeniowy i przekazać go do miejsca docelowego. Poniższa procedura jest wdrażana w kontenerze w usłudze Blob Storage:
Utwórz pakiet .zip dla projektu przy użyciu wybranego narzędzia.
W witrynie Azure Portal wyszukaj nazwę konta magazynu lub wyszukaj je na liście kont magazynu.
Na koncie magazynu wybierz pozycję Kontenery w sekcji Przechowywanie danych.
Wybierz pozycję + Kontener , aby utworzyć nowy kontener usługi Blob Storage na koncie.
Na stronie Nowy kontener podaj nazwę (na przykład wdrożenia), upewnij się, że poziom dostępu anonimowego to Prywatny, a następnie wybierz pozycję Utwórz.
Wybierz utworzony kontener, wybierz pozycję Przekaż, przejdź do lokalizacji pliku .zip utworzonego za pomocą projektu, a następnie wybierz pozycję Przekaż.
Po zakończeniu przesyłania wybierz przesłany plik obiektu blob i skopiuj adres URL. Jeśli nie używasz tożsamości zarządzanej, może być konieczne wygenerowanie URL SAS.
Wyszukaj aplikację funkcji lub znajdź ją na stronie Aplikacja funkcji.
W aplikacji funkcji rozwiń sekcję Ustawienia, a następnie wybierz Zmienne środowiskowe.
Na karcie Ustawienia aplikacji wybierz pozycję + Dodaj.
Wprowadź
WEBSITE_RUN_FROM_PACKAGEdla Nazwa i wklej adres URL pakietu w usłudze Blob Storage w polu Wartość.Wybierz pozycję Zastosuj, a następnie wybierz pozycję Zastosuj i potwierdź, aby zapisać ustawienie i ponownie uruchomić aplikację funkcji.
Teraz możesz uruchomić funkcję na platformie Azure, aby sprawdzić, czy wdrożenie pakietu wdrożeniowego .zip pliku zakończyło się pomyślnie.
Pobieranie pakietu z usługi Azure Blob Storage przy użyciu tożsamości zarządzanej
Usługę Azure Blob Storage można skonfigurować tak, aby autoryzować żądania za pomocą identyfikatora Entra firmy Microsoft. Ta konfiguracja oznacza, że zamiast generować klucz SAS z czasem wygaśnięcia, można polegać na tożsamości zarządzanej aplikacji. Domyślnie jest używana tożsamość przypisana przez system aplikacji. Jeśli chcesz określić tożsamość przypisaną przez użytkownika, możesz ustawić identyfikator zasobu tej tożsamości jako ustawienie aplikacji WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID. Ustawienie może również zaakceptować SystemAssigned jako wartość, która jest równoważna pomijaniu ustawienia.
Aby umożliwić pobranie pakietu przy użyciu tożsamości:
Upewnij się, że obiekt blob jest skonfigurowany pod kątem dostępu prywatnego.
Przyznaj tożsamości rolę Czytelnik danych obiektów blob usługi Storage z zakresem dla pakietowego obiektu blob. Aby uzyskać szczegółowe informacje na temat tworzenia przypisania roli, zobacz Przypisywanie roli platformy Azure, aby uzyskać dostęp do danych obiektów blob.
WEBSITE_RUN_FROM_PACKAGEUstaw ustawienie aplikacji na adres URL obiektu blob pakietu. Ten adres URL jest zwykle w postacihttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}lub podobnej.Jeśli chcesz określić tożsamość przypisaną przez użytkownika, możesz ustawić identyfikator zasobu tej tożsamości jako ustawienie aplikacji
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID. Ustawienie może również akceptować wartość "SystemAssigned" jako wartość, chociaż jest to takie samo, jak całkowite pominięcie ustawienia. Identyfikator zasobu to standardowa reprezentacja zasobu na platformie Azure. W przypadku tożsamości zarządzanej przypisanej przez użytkownika będzie to/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. Identyfikator zasobu tożsamości zarządzanej przypisanej użytkownikowi można uzyskać w sekcji Ustawienia ->Właściwości ->ID tożsamości zarządzanej przypisanej użytkownikowi.