Uruchamianie funkcji z pliku pakietu na platformie Azure
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 c:\home\site\wwwroot
katalogu (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 Języka JavaScript z dużymi drzewami pakietów npm.
Aby uzyskać więcej informacji, zobacz to ogłoszenie.
Włączanie funkcji do uruchamiania z pakietu
Aplikacje funkcji w planie hostingu Flex Consumption są domyślnie uruchamiane 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 |
Wskazuje, że aplikacja funkcji jest uruchamiana z lokalnego pliku pakietu wdrożonego w c:\home\data\SitePackages folderze (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 | Linux |
---|---|---|
Zużycie | 1 jest zdecydowanie zalecany. |
Obsługiwany jest tylko warunek <URL> . |
Premium | 1 jest zalecane. |
1 jest zalecane. |
Oddany | 1 jest zalecane. |
1 jest zalecane. |
Zagadnienia ogólne
- Nie dodawaj
WEBSITE_RUN_FROM_PACKAGE
ustawienia 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 pliku ZIP.
- Podczas wdrażania aplikacji funkcji w systemie Windows należy ustawić wartość
WEBSITE_RUN_FROM_PACKAGE
i opublikować1
przy użyciu wdrożenia zip. - Po uruchomieniu z pakietu
wwwroot
folder jest tylko do odczytu i występuje błąd podczas zapisywania plików w tym katalogu. Pliki są również tylko do odczytu w witrynie Azure Portal. - Maksymalny rozmiar pliku pakietu wdrożeniowego to 1 GB.
- Nie można użyć lokalnej pamięci podręcznej podczas uruchamiania z pakietu wdrożeniowego.
- Jeśli projekt musi używać kompilacji zdalnej
WEBSITE_RUN_FROM_PACKAGE
, nie używaj ustawienia aplikacji. Zamiast tego dodaj ustawienie aplikacji dostosowywaniaSCM_DO_BUILD_DURING_DEPLOYMENT=true
wdrożenia. W przypadku systemu Linux dodajENABLE_ORYX_BUILD=true
również ustawienie . Aby uzyskać więcej informacji, zobacz Kompilacja zdalna.
Uwaga
Ustawienie WEBSITE_RUN_FROM_PACKAGE
aplikacji nie działa z programem MSDeploy zgodnie z opisem w programie 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
.
Dodawanie ustawienia WEBSITE_RUN_FROM_PACKAGE
Istnieje kilka sposobów dodawania, aktualizowania i usuwania ustawień aplikacji funkcji:
- W witrynie Azure Portal
- Za pomocą interfejsu wiersza polecenia platformy Azure.
- Za pomocą programu Azure PowerShell.
Zmiany ustawień aplikacji funkcji wymagają ponownego uruchomienia aplikacji funkcji.
Tworzenie archiwum zip
Wdrożone archiwum zip musi zawierać wszystkie pliki potrzebne do uruchomienia aplikacji funkcji. Możesz ręcznie utworzyć archiwum zip z zawartości folderu projektu usługi Functions przy użyciu wbudowanych funkcji .zip funkcji kompresji lub narzędzi innych firm.
Archiwum musi zawierać plik host.json w katalogu głównym wyodrębnionego folderu. Wybrany stos języka dla aplikacji funkcji tworzy dodatkowe wymagania:
- .NET (izolowany model procesu roboczego)
- .NET (model w procesie)
- Java
- JavaScript
- TypeScript
- Program PowerShell
- Python
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 zip jest zalecanym sposobem przekazania pakietu wdrożeniowego do witryny.
- Jeśli nie używasz wdrożenia zip, upewnij się, że
c:\home\data\SitePackages
folder (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 aplikacja systemu Azure, która umożliwia wdrażanie projektu aplikacji funkcji w wwwroot
katalogu. Projekt jest spakowany jako plik wdrożenia .zip. Te same interfejsy API mogą służyć do wdrażania pakietu w c:\home\data\SitePackages
folderze (Windows) lub /home/data/SitePackages
(Linux).
Po ustawieniu WEBSITE_RUN_FROM_PACKAGE
wartości ustawienia aplikacji na 1
wartość , interfejsy API wdrażania zip kopiują pakiet do folderu (Windows) lub /home/data/SitePackages
(Linux) zamiast wyodrębniania plików do c:\home\data\SitePackages
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 instalowany jako system plików tylko do wwwroot
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 funkcji. Wykonywanie funkcji aktualnie uruchomione podczas wdrażania zostało zakończone. Aby uzyskać informacje o sposobie pisania funkcji bezstanowych i defensywnych, ustaw funkcję Write jako bezstanową.
Użyj WEBSITE_RUN_FROM_PACKAGE = adres URL
Ta sekcja zawiera informacje o sposobie uruchamiania aplikacji funkcji z pakietu wdrożonego w punkcie końcowym adresu URL. Ta opcja jest jedyną obsługiwaną opcją uruchamiania z pakietu hostowanego w systemie Linux z planem Zużycie. 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>
aplikacji w planie Flex Consumption . Ta opcja nie jest obsługiwana. - Aplikacje funkcji działające w systemie Windows mają niewielki wzrost czasu zimnego uruchamiania, gdy pakiet aplikacji jest wdrażany w punkcie końcowym adresu URL za pośrednictwem usługi
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 sygnatur dostępu współdzielonego używane do wdrożenia. Po wygaśnięciu sygnatury dostępu współdzielonego nie można już wdrożyć pakietu. 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.
- Aby przekazać pliki pakietu do kontenerów obiektów blob na koncie magazynu, możesz użyć Eksplorator 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 obszarze Magazyn 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 przekazywania wybierz przekazany plik obiektu blob i skopiuj adres URL. Jeśli nie używasz tożsamości zarządzanej, może być konieczne wygenerowanie adresu URL sygnatury dostępu współdzielonego.
Wyszukaj aplikację funkcji lub wyszukaj ją na stronie Aplikacja funkcji.
W aplikacji funkcji rozwiń węzeł Ustawienia, a następnie wybierz pozycję Zmienne środowiskowe.
Na karcie Ustawienia aplikacji wybierz pozycję + Dodaj.
Wprowadź wartość
WEBSITE_RUN_FROM_PACKAGE
pola Nazwa i wklej adres URL pakietu w usłudze Blob Storage jako 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 wygaśnięciem, można zamiast tego 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ć WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID
ustawienie aplikacji na identyfikator zasobu tej tożsamości. 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.
Udziel tożsamości roli Czytelnik danych obiektu blob usługi Storage z zakresem dla obiektu blob pakietu. Aby uzyskać szczegółowe informacje na temat tworzenia przypisania roli roli, zobacz Przypisywanie roli platformy Azure w celu uzyskania dostępu do danych obiektów blob.
WEBSITE_RUN_FROM_PACKAGE
Ustaw 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.