Udostępnij za pośrednictwem


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

Aby umożliwić uruchamianie aplikacji funkcji z pakietu, 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

  • 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 dostosowywania SCM_DO_BUILD_DURING_DEPLOYMENT=true wdrożenia. W przypadku systemu Linux dodaj ENABLE_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, zawieszaj /MSDeploy się na ./ZipDeploy

Dodawanie ustawienia WEBSITE_RUN_FROM_PACKAGE

Istnieje kilka sposobów dodawania, aktualizowania i usuwania ustawień aplikacji funkcji:

Zmiany ustawień aplikacji funkcji wymagają ponownego uruchomienia aplikacji funkcji.

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 nazwie packagename.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 1wartość , 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.

Zagadnienia dotyczące wdrażania z adresu URL

  • 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:

  1. Utwórz pakiet .zip dla projektu przy użyciu wybranego narzędzia.

  2. W witrynie Azure Portal wyszukaj nazwę konta magazynu lub wyszukaj je na liście kont magazynu.

  3. Na koncie magazynu wybierz pozycję Kontenery w obszarze Magazyn danych.

  4. Wybierz pozycję + Kontener , aby utworzyć nowy kontener usługi Blob Storage na koncie.

  5. 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.

  6. Wybierz utworzony kontener, wybierz pozycję Przekaż, przejdź do lokalizacji pliku .zip utworzonego za pomocą projektu, a następnie wybierz pozycję Przekaż.

  7. 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.

  8. Wyszukaj aplikację funkcji lub wyszukaj ją na stronie Aplikacja funkcji.

  9. W aplikacji funkcji rozwiń węzeł Ustawienia, a następnie wybierz pozycję Zmienne środowiskowe.

  10. Na karcie Ustawienia aplikacji wybierz pozycję + Dodaj.

  11. Wprowadź wartość WEBSITE_RUN_FROM_PACKAGE pola Nazwa i wklej adres URL pakietu w usłudze Blob Storage jako wartość.

  12. 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:

  1. Upewnij się, że obiekt blob jest skonfigurowany pod kątem dostępu prywatnego.

  2. 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.

  3. WEBSITE_RUN_FROM_PACKAGE Ustaw ustawienie aplikacji na adres URL obiektu blob pakietu. Ten adres URL jest zwykle w postaci https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package} lub podobnej.