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. Narzędzia Azure Functions Core Tools używają również tych interfejsów API wdrażania podczas publikowania lokalnego projektu na platformie Azure.
Wdrożenie zip jest również łatwym sposobem uruchamiania funkcji z pliku pakietu na platformie Azure. Jest to domyślna technologia wdrażania w planach hostingu Consumption, Elastic Premium i Dedicated (App Service). Plan Flex Consumption nie obsługuje wdrożenia zip.
Usługa Azure Functions oferuje pełny zakres opcji ciągłego wdrażania i integracji udostępnianych przez usługę aplikacja systemu Azure Service. Aby uzyskać więcej informacji, zobacz Ciągłe wdrażanie dla usługi 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 plików .zip korzysta z tej samej usługi Kudu, która obsługuje ciągłe wdrożenia oparte na integracji, w tym:
- Usunięcie plików, które zostały pominięte we wcześniejszych wdrożeniach.
- 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ę wdrażania .zip.
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.
Wymagania dotyczące plików .zip wdrożenia
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.
Proces wdrażania zip wyodrębnia pliki i foldery archiwum zip w wwwroot
katalogu. Jeśli podczas tworzenia archiwum dołączysz katalog nadrzędny, system nie znajdzie plików, które będą widoczne w pliku wwwroot
.
Wdrażanie przy użyciu interfejsu wiersza polecenia platformy Azure
Interfejs wiersza polecenia platformy Azure umożliwia wyzwolenie wdrożenia wypychanego. Wypychanie pliku .zip do 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 sprawdzić, jakiej wersji interfejsu wiersza polecenia platformy Azure używasz, użyj polecenia az --version
.
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 <resource_group>
ciąg 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 ścieżka 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 usługi Cloud Shell należy najpierw przekazać plik wdrożenia .zip do konta usługi Azure Files skojarzonego z usługą Cloud Shell. W takim przypadku jest to lokalizacja magazynu używana <zip_file_path>
przez konto usługi Cloud Shell. Aby uzyskać więcej informacji, zobacz Utrwalanie plików w usłudze Azure Cloud Shell.
Wdrażanie pliku ZIP przy użyciu 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 wiadomości. 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.
Do uwierzytelniania HTTP BASIC potrzebne są poświadczenia wdrożenia usługi 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 bibliotekę 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, jak pokazano w poniższym przykładzie https://<app_name>.scm.azurewebsites.net/api/deployments
cURL. Ponownie zastąp <app_name>
ciąg 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 synchronicznego 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), gdy proces jest w toku, a odpowiedź HTTP 200 (OK) po rozwinięciu archiwum i pomyślnym zakończeniu wdrażania.
Uwierzytelnianie Microsoft Entra
Alternatywą dla uwierzytelniania HTTP BASIC we wdrożeniu zip jest użycie tożsamości Entra firmy Microsoft. Tożsamość firmy Microsoft Entra może być potrzebna, jeśli uwierzytelnianie HTTP BASIC jest wyłączone dla witryny SCM.
Wymagany będzie prawidłowy token dostępu microsoft Entra 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"
Przy użyciu programu 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
Wdrażanie przy użyciu szablonu usługi ARM
Aby wypchnąć plik .zip do aplikacji funkcji, możesz użyć rozszerzenia szablonu usługi ARM ZipDeploy.
Przykładowy szablon usługi ARM ZipDeploy
Ten szablon zawiera zarówno miejsce produkcyjne, jak i przejściowe, a następnie wdraża je w jednym lub drugim miejscu. Zazwyczaj ten szablon służy do wdrażania w miejscu przejściowym, a następnie zamiany, aby uzyskać nowy pakiet zip uruchomiony w miejscu produkcyjnym.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appServiceName": {
"type": "string"
},
"deployToProduction": {
"type": "bool",
"defaultValue": false
},
"slot": {
"type": "string",
"defaultValue": "staging"
},
"packageUri": {
"type": "secureString"
}
},
"resources": [
{
"condition": "[parameters('deployToProduction')]",
"type": "Microsoft.Web/sites/extensions",
"apiVersion": "2021-02-01",
"name": "[format('{0}/ZipDeploy', parameters('appServiceName'))]",
"properties": {
"packageUri": "[parameters('packageUri')]",
"appOffline": true
}
},
{
"condition": "[not(parameters('deployToProduction'))]",
"type": "Microsoft.Web/sites/slots/extensions",
"apiVersion": "2021-02-01",
"name": "[format('{0}/{1}/ZipDeploy', parameters('appServiceName'), parameters('slot'))]",
"properties": {
"packageUri": "[parameters('packageUri')]",
"appOffline": true
}
}
]
}
W przypadku początkowego wdrożenia należy wdrożyć bezpośrednio w miejscu produkcyjnym. Aby uzyskać więcej informacji, zobacz Wdrożenia miejsc.
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 przyjęto założenie, że wypchnięty plik .zip zawiera aplikację gotową do uruchomienia. Domyślnie nie są uruchamiane żadne dostosowania. Aby włączyć te same procesy kompilacji, które uzyskujesz z ciągłą integracją, dodaj następujące elementy do ustawień aplikacji:
SCM_DO_BUILD_DURING_DEPLOYMENT=true
Jeśli używasz .zip wdrożenia wypychanych, to ustawienie jest domyślnie fałszywe . Wartość domyślna dotyczy wdrożeń ciągłej integracji. W przypadku ustawienia 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 witrynie Azure Portal, możesz pobrać istniejący projekt aplikacji funkcji jako plik .zip w jeden z następujących sposobów:
W witrynie Azure Portal:
Zaloguj się do witryny Azure Portal, a następnie przejdź do aplikacji funkcji.
Na karcie Przegląd wybierz pozycję Pobierz zawartość aplikacji. Wybierz opcje pobierania, a następnie wybierz pozycję Pobierz.
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/
Dołączenie
/site/wwwroot/
zapewnia, że plik zip zawiera tylko pliki projektu aplikacji funkcji, a nie całą witrynę. Jeśli jeszcze nie zalogowano się 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 podczas pobierania go z usługi GitHub. Jeśli używasz repozytorium GitHub do obsługi aplikacji funkcji, należy użyć ciągłej integracji w celu wdrożenia aplikacji.