Wdrażanie pliku zip dla usługi Azure Functions

W tym artykule opisano sposób wdrażania plików projektu aplikacji funkcji na platformie Azure z pliku .zip (skompresowanego). Dowiesz się, jak przeprowadzić wdrożenie wypychane, zarówno przy użyciu interfejsu wiersza polecenia platformy Azure, jak i przy użyciu interfejsów API REST. Azure Functions Core Tools używa również tych interfejsów API wdrażania podczas publikowania projektu lokalnego na platformie Azure.

Wdrożenie zip jest również łatwym sposobem uruchamiania funkcji z pakietu wdrożeniowego. Aby dowiedzieć się więcej, zobacz Uruchamianie funkcji z pliku pakietu na platformie Azure.

Azure Functions ma pełny zakres opcji ciągłego wdrażania i integracji, które są udostępniane przez Azure App Service. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla Azure Functions.

Aby przyspieszyć programowanie, możesz łatwiej wdrożyć pliki projektu aplikacji funkcji bezpośrednio z pliku .zip. Interfejs API wdrażania .zip pobiera zawartość pliku .zip i wyodrębnia zawartość do wwwroot folderu aplikacji funkcji. To wdrożenie pliku .zip korzysta z tej samej usługi Kudu, która obsługuje ciągłe wdrożenia oparte na integracji, w tym:

  • Usuwanie plików, które zostały pozostawione z wcześniejszych wdrożeń.
  • Dostosowywanie wdrożenia, w tym uruchamianie skryptów wdrażania.
  • Dzienniki wdrażania.
  • Synchronizacja wyzwalaczy funkcji w aplikacji funkcji Plan użycia .

Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą wdrażania.zip.

Wymagania dotyczące plików .zip wdrażania

Plik .zip używany do wdrażania wypychanego musi zawierać wszystkie pliki potrzebne do uruchomienia funkcji.

Ważne

W przypadku korzystania z wdrożenia .zip wszystkie pliki z istniejącego wdrożenia, które nie znajdują się w pliku .zip, zostaną usunięte z aplikacji funkcji.

Kod wszystkich funkcji w określonej aplikacji funkcji znajduje się w głównym folderze projektu zawierającym plik konfiguracji hosta. Plik host.json zawiera konfiguracje specyficzne dla środowiska uruchomieniowego i znajduje się w folderze głównym aplikacji funkcji. Folder bin zawiera pakiety i inne pliki biblioteki wymagane przez aplikację funkcji. Określone struktury folderów wymagane przez aplikację funkcji zależą od języka:

W wersji 2.x i nowszej środowiska uruchomieniowego usługi Functions wszystkie funkcje w aplikacji funkcji muszą współdzielić ten sam stos języka.

Aplikacja funkcji zawiera wszystkie pliki i foldery w wwwroot katalogu. Wdrożenie pliku .zip zawiera zawartość wwwroot katalogu, ale nie sam katalog. Podczas wdrażania projektu biblioteki klas języka C# należy uwzględnić skompilowane pliki biblioteki i zależności w podfolderze w bin pakiecie .zip.

Podczas tworzenia aplikacji na komputerze lokalnym można ręcznie utworzyć plik .zip folderu projektu aplikacji funkcji przy użyciu wbudowanych funkcji .zip funkcji kompresji lub narzędzi innych firm.

Wdrażanie przy użyciu interfejsu wiersza polecenia platformy Azure

Aby wyzwolić wdrożenie wypychane, możesz użyć interfejsu wiersza polecenia platformy Azure. Wypychanie wdróż plik .zip w aplikacji funkcji przy użyciu polecenia az functionapp deployment source config-zip . Aby użyć tego polecenia, musisz użyć interfejsu wiersza polecenia platformy Azure w wersji 2.0.21 lub nowszej. Aby wyświetlić używaną wersję interfejsu wiersza polecenia platformy az --version Azure, użyj polecenia .

W poniższym poleceniu zastąp <zip_file_path> symbol zastępczy ścieżką do lokalizacji pliku .zip. Zastąp <app_name> również unikatową nazwą aplikacji funkcji i zastąp ciąg <resource_group> nazwą grupy zasobów.

az functionapp deployment source config-zip -g <resource_group> -n \
<app_name> --src <zip_file_path>

To polecenie wdraża pliki projektu z pobranego pliku .zip do aplikacji funkcji na platformie Azure. Następnie ponownie uruchomi aplikację. Aby wyświetlić listę wdrożeń dla tej aplikacji funkcji, należy użyć interfejsów API REST.

W przypadku korzystania z interfejsu wiersza polecenia platformy Azure na komputerze <zip_file_path> lokalnym jest ścieżką do pliku .zip na komputerze. Możesz również uruchomić interfejs wiersza polecenia platformy Azure w usłudze Azure Cloud Shell. W przypadku korzystania z Cloud Shell należy najpierw przekazać plik .zip wdrożenia do konta Azure Files skojarzonego z Cloud Shell. W takim przypadku jest to lokalizacja magazynu używana <zip_file_path> przez konto Cloud Shell. Aby uzyskać więcej informacji, zobacz Utrwalanie plików w usłudze Azure Cloud Shell.

Wdrażanie pliku ZIP za pomocą interfejsów API REST

Interfejsy API REST usługi wdrażania umożliwiają wdrożenie pliku .zip na platformie Azure. Aby wdrożyć, wyślij żądanie POST do https://< app_name.scm.azurewebsites.net/api/zipdeploy>. Żądanie POST musi zawierać plik .zip w treści komunikatu. Poświadczenia wdrażania dla aplikacji są podawane w żądaniu za pomocą podstawowego uwierzytelniania HTTP. Aby uzyskać więcej informacji, zobacz dokumentację wdrażania wypychaną.zip.

W przypadku uwierzytelniania PODSTAWOWEgo PROTOKOŁU HTTP potrzebne są poświadczenia wdrożenia App Service. Aby zobaczyć, jak ustawić poświadczenia wdrożenia, zobacz Ustawianie i resetowanie poświadczeń na poziomie użytkownika.

Za pomocą biblioteki cURL

W poniższym przykładzie użyto narzędzia cURL do wdrożenia pliku .zip. Zastąp symbole <deployment_user>zastępcze , <zip_file_path>i <app_name>. Po wyświetleniu monitu przez cURL wpisz hasło.

curl -X POST -u <deployment_user> --data-binary @"<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

To żądanie wyzwala wdrożenie wypychane z przekazanego pliku .zip. Bieżące i wcześniejsze wdrożenia można przejrzeć przy użyciu punktu końcowego https://<app_name>.scm.azurewebsites.net/api/deployments , jak pokazano w poniższym przykładzie cURL. Ponownie zastąp ciąg <app_name> nazwą aplikacji i <deployment_user> nazwą użytkownika poświadczeń wdrożenia.

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

Wdrożenie pliku zip asynchronicznego

Podczas wdrażania synchronicznie mogą wystąpić błędy związane z przekroczeniami limitu czasu połączenia. Dodaj ?isAsync=true do adresu URL, aby wdrożyć asynchronicznie. Po przekazaniu pliku zip otrzymasz odpowiedź z nagłówkiem wskazującym Location adres URL stanu wdrożenia z możliwością sondowania. Podczas sondowania adresu URL podanego w nagłówku Location otrzymasz odpowiedź HTTP 202 (Zaakceptowana), podczas gdy proces trwa, a odpowiedź HTTP 200 (OK) po rozwinięciu archiwum i pomyślnym zakończeniu wdrażania.

Uwierzytelnianie w usłudze Azure AD

Alternatywą dla uwierzytelniania HTTP BASIC we wdrożeniu zip jest użycie tożsamości Azure AD. Azure AD tożsamość może być wymagana, jeśli uwierzytelnianie HTTP BASIC jest wyłączone dla witryny SCM.

Wymagany będzie prawidłowy token dostępu Azure AD dla użytkownika lub jednostki usługi wykonującej wdrożenie. Token dostępu można pobrać przy użyciu polecenia interfejsu wiersza polecenia platformy az account get-access-token Azure. Token dostępu będzie używany w nagłówku Uwierzytelniania żądania HTTP POST.

curl -X POST \
    --data-binary @"<zip_file_path>" \
    -H "Authorization: Bearer <access_token>" \
    "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"

Z programem PowerShell

W poniższym przykładzie użyto polecenia Publish-AzWebapp przekaż plik .zip. Zastąp symbole <group-name>zastępcze , <app-name>i <zip-file-path>.

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <zip-file-path>

To żądanie wyzwala wdrożenie wypychane z przekazanego pliku .zip.

Aby przejrzeć bieżące i wcześniejsze wdrożenia, uruchom następujące polecenia. Ponownie zastąp <deployment-user>symbole zastępcze , <deployment-password>i <app-name> .

$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

Uruchamianie funkcji z pakietu wdrożeniowego

Możesz również uruchomić funkcje bezpośrednio z pliku pakietu wdrożeniowego. Ta metoda pomija krok wdrażania kopiowania plików z pakietu do wwwroot katalogu aplikacji funkcji. Zamiast tego plik pakietu jest instalowany przez środowisko uruchomieniowe usługi Functions, a zawartość wwwroot katalogu staje się tylko do odczytu.

Wdrożenie zip integruje się z tą funkcją, którą można włączyć, ustawiając ustawienie WEBSITE_RUN_FROM_PACKAGE aplikacji funkcji na wartość .1 Aby uzyskać więcej informacji, zobacz Uruchamianie funkcji z pliku pakietu wdrożeniowego.

Dostosowywanie wdrożenia

W procesie wdrażania założono, że wypychany plik .zip zawiera aplikację gotową do uruchomienia. Domyślnie nie są uruchamiane żadne dostosowania. Aby włączyć te same procesy kompilacji, które uzyskujesz przy użyciu ciągłej integracji, dodaj następujące informacje do ustawień aplikacji:

SCM_DO_BUILD_DURING_DEPLOYMENT=true

Jeśli używasz .zip wdrażania wypychanych, to ustawienie jest domyślnie fałszywe . Wartość domyślna dotyczy wdrożeń ciągłej integracji. Po ustawieniu wartości true ustawienia związane z wdrożeniem są używane podczas wdrażania. Te ustawienia można skonfigurować jako ustawienia aplikacji lub w pliku konfiguracji wdrożenia znajdującym się w katalogu głównym pliku .zip. Aby uzyskać więcej informacji, zobacz Ustawienia związane z repozytorium i wdrażaniem w dokumentacji wdrożenia.

Pobieranie plików aplikacji funkcji

Jeśli funkcje zostały utworzone przy użyciu edytora w Azure Portal, możesz pobrać istniejący projekt aplikacji funkcji jako plik .zip na jeden z następujących sposobów:

  • Z Azure Portal:

    1. Zaloguj się do Azure Portal, a następnie przejdź do aplikacji funkcji.

    2. Na karcie Przegląd wybierz pozycję Pobierz zawartość aplikacji. Wybierz opcje pobierania, a następnie wybierz pozycję Pobierz.

      Pobieranie projektu aplikacji funkcji

      Pobrany plik .zip jest w poprawnym formacie, który ma zostać ponownie opublikowany w aplikacji funkcji przy użyciu .zip wdrożenia wypychanego. Pobieranie portalu może również dodać pliki potrzebne do otwarcia aplikacji funkcji bezpośrednio w programie Visual Studio.

  • Korzystanie z interfejsów API REST:

    Użyj następującego interfejsu API GET wdrożenia, aby pobrać pliki z <function_app> projektu:

    https://<function_app>.scm.azurewebsites.net/api/zip/site/wwwroot/
    

    W tym /site/wwwroot/ upewnij się, że plik zip zawiera tylko pliki projektu aplikacji funkcji, a nie całą witrynę. Jeśli nie zalogowano się jeszcze na platformie Azure, zostanie wyświetlony monit o to.

Możesz również pobrać plik .zip z repozytorium GitHub. Po pobraniu repozytorium GitHub jako pliku .zip usługa GitHub dodaje dodatkowy poziom folderu dla gałęzi. Ten dodatkowy poziom folderu oznacza, że nie można wdrożyć pliku .zip bezpośrednio po pobraniu go z usługi GitHub. Jeśli używasz repozytorium GitHub do obsługi aplikacji funkcji, należy użyć ciągłej integracji do wdrożenia aplikacji.

Następne kroki