Развертывание Функций Azure из ZIP-файлаZip deployment for Azure Functions

В этой статье описывается развертывание файлов проекта приложения-функции Azure из (сжатого) ZIP-файла.This article describes how to deploy your function app project files to Azure from a .zip (compressed) file. Вы узнаете, как принудительно начать развертывание, как с помощью интерфейса командной строки Azure, так и с помощью REST API.You learn how to do a push deployment, both by using Azure CLI and by using the REST APIs. В основных инструментах Функций Azure также используются эти API развертывания при публикации локального проекта в Azure.Azure Functions Core Tools also uses these deployment APIs when publishing a local project to Azure.

Служба приложений Azure предоставляет широкий спектр параметров для непрерывной интеграции и развертывания Функций Azure.Azure Functions has the full range of continuous deployment and integration options that are provided by Azure App Service. Дополнительные сведения см. в статье Непрерывное развертывание для функций Azure.For more information, see Continuous deployment for Azure Functions.

Чтобы ускорить разработку, может оказаться проще развернуть файлы проекта приложения-функции непосредственно из ZIP-файла.To speed up development, you may find it easier to deploy your function app project files directly from a .zip file. API развертывания ZIP-файла извлекает содержимое ZIP-файла в папку wwwroot приложения-функции.The .zip deployment API takes the contents of a .zip file and extracts the contents into the wwwroot folder of your function app. Это развертывание ZIP-файла осуществляется с помощью той же службы Kudu, которая обеспечивает непрерывное развертывание на основе интеграции, включая:This .zip file deployment uses the same Kudu service that powers continuous integration-based deployments, including:

  • удаление файлов, оставшихся после предыдущих развертываний;Deletion of files that were left over from earlier deployments.
  • настройку развертывания, в том числе выполнение скриптов развертывания;Deployment customization, including running deployment scripts.
  • журналы развертывания.Deployment logs.
  • синхронизацию триггеров функций в приложении-функции План потребления.Syncing function triggers in a Consumption plan function app.

Дополнительные сведения см. в справочнике по развертыванию из ZIP-файлов.For more information, see the .zip deployment reference.

Требования к развертыванию из ZIP-файлаDeployment .zip file requirements

Используемый для принудительного развертывания ZIP-файл должен содержать все файлы, необходимые для выполнения функции.The .zip file that you use for push deployment must contain all of the files needed to run your function.

Важно!

При использовании развертывания из ZIP-файла любые файлы из имеющегося развертывания, которые не найдены в ZIP-файле, будут удалены из приложения-функции.When you use .zip deployment, any files from an existing deployment that aren't found in the .zip file are deleted from your function app.

Код всех функций конкретного приложения-функции хранится в корневой папке проекта, содержащей файл конфигурации главного узла и одну или несколько вложенных папок.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Каждая вложенная папка содержит код для отдельной функции.Each subfolder contains the code for a separate function. Структура папок показана в следующем представлении:The folder structure is shown in the following representation:

FunctionApp
 | - host.json
 | - MyFirstFunction
 | | - function.json
 | | - ...  
 | - MySecondFunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

В версии 2.x и более поздних среды выполнения Функций Azure все функции в приложении-функции следует создавать на одном языке.In version 2.x and higher of the Functions runtime, all functions in the function app must share the same language stack.

Файл host.json содержит конфигурацию среды выполнения. Он находится в корневой папке приложения-функции.The host.json file contains runtime-specific configurations and is in the root folder of the function app. Папка bin содержит пакеты и другие файлы библиотек, необходимые для работы приложения-функции.A bin folder contains packages and other library files that the function app requires. См. требования конкретного языка для проекта приложения-функции:See the language-specific requirements for a function app project:

Приложение-функция включает все файлы и папки в каталоге wwwroot.A function app includes all of the files and folders in the wwwroot directory. При развертывании из ZIP-файла используется содержимое каталога wwwroot, а не сам каталог.A .zip file deployment includes the contents of the wwwroot directory, but not the directory itself. При развертывании проекта библиотеки классов C# во вложенную папку bin в ZIP-архиве необходимо добавить скомпилированные файлы библиотеки и зависимости.When deploying a C# class library project, you must include the compiled library files and dependencies in a bin subfolder in your .zip package.

Загрузка файлов приложения-функцииDownload your function app files

При разработке на локальном компьютере несложно создать ZIP-файл папки проекта приложения-функции на компьютере разработчика.When you are developing on a local computer, it's easy to create a .zip file of the function app project folder on your development computer.

Тем не менее вы могли создать свои функции с помощью редактора на портале Azure.However, you might have created your functions by using the editor in the Azure portal. Имеющийся проект приложения-функции можно загрузить одним из следующих способов:You can download an existing function app project in one of these ways:

  • Из портал Azure:From the Azure portal:

    1. Войдите на портал Azure и перейдите к своему приложению-функции.Sign in to the Azure portal, and then go to your function app.

    2. На вкладке Обзор выберите Загрузить содержимое приложения.On the Overview tab, select Download app content. Выберите параметры скачивания, а затем выберите команду Загрузить.Select your download options, and then select Download.

      Загрузка проекта приложения-функции

      Загруженный ZIP-файл обладает правильным форматом, и он должен быть опубликован в приложении-функции с помощью принудительного развертывания из ZIP-файла.The downloaded .zip file is in the correct format to be republished to your function app by using .zip push deployment. В этом случае вы также загружаете файлы, позволяющие открыть приложение-функцию непосредственно в Visual Studio.The portal download can also add the files needed to open your function app directly in Visual Studio.

  • Использование API-интерфейсов RESTFUL:Using REST APIs:

    Чтобы загрузить файлы из проекта <function_app>, выполните следующий вызов GET в API развертывания:Use the following deployment GET API to download the files from your <function_app> project:

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

    Добавление части /site/wwwroot/ гарантирует, что ZIP-файл содержит только файлы проекта приложения-функции, а не всего сайта.Including /site/wwwroot/ makes sure your zip file includes only the function app project files and not the entire site. Если вы еще не вошли в Azure, появится соответствующий запрос.If you are not already signed in to Azure, you will be asked to do so.

ZIP-файл также можно загрузить из репозитория GitHub.You can also download a .zip file from a GitHub repository. При загрузке репозитория GitHub как ZIP-файла GitHub добавляет еще один уровень папки для ветви.When you download a GitHub repository as a .zip file, GitHub adds an extra folder level for the branch. Этот дополнительный уровень папки означает, что нельзя просто напрямую развернуть ZIP-файл после его загрузки из GitHub.This extra folder level means that you can't deploy the .zip file directly as you downloaded it from GitHub. Если вы используете репозиторий GitHub для поддержки приложения-функции, для развертывания своего приложения следует использовать непрерывную интеграцию.If you're using a GitHub repository to maintain your function app, you should use continuous integration to deploy your app.

Развертывание с помощью Azure CLIDeploy by using Azure CLI

Azure CLI можно использовать для активации принудительного развертывания.You can use Azure CLI to trigger a push deployment. Активируйте принудительное развертывание ZIP-файла в свое приложение-функцию с помощью команды az functionapp deployment source config-zip.Push deploy a .zip file to your function app by using the az functionapp deployment source config-zip command. Чтобы использовать эту команду, необходимо использовать Azure CLI версии 2.0.21 или более поздней версии.To use this command, you must use Azure CLI version 2.0.21 or later. Чтобы просмотреть версию Azure CLI, воспользуйтесь командой az --version.To see what Azure CLI version you are using, use the az --version command.

В следующей команде вместо заполнителя <zip_file_path> укажите путь к расположению ZIP-файла.In the following command, replace the <zip_file_path> placeholder with the path to the location of your .zip file. Кроме того, замените на <app_name> уникальное имя приложения функции и замените на <resource_group> имя группы ресурсов.Also, replace <app_name> with the unique name of your function app and replace <resource_group> with the name of your resource group.

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

Эта команда выполняет развертывание файлов проекта из загруженного ZIP-файла для приложения-функции в Azure.This command deploys project files from the downloaded .zip file to your function app in Azure. Затем приложение перезапускается.It then restarts the app. Чтобы просмотреть список развертываний для этого приложения-функции, необходимо использовать REST API.To view the list of deployments for this function app, you must use the REST APIs.

Если вы используете Azure CLI на локальном компьютере, <zip_file_path> — это путь к ZIP-файлу на компьютере.When you're using Azure CLI on your local computer, <zip_file_path> is the path to the .zip file on your computer. Можно также запустить Azure CLI в Azure Cloud Shell.You can also run Azure CLI in Azure Cloud Shell. При использовании Cloud Shell необходимо сначала отправить ZIP-файл развертывания в учетную запись Файлы Azure, связанную с Cloud Shell.When you use Cloud Shell, you must first upload your deployment .zip file to the Azure Files account that's associated with your Cloud Shell. В этом случае <zip_file_path> — это место хранения, используемое в учетной записи Cloud Shell.In that case, <zip_file_path> is the storage location that your Cloud Shell account uses. Дополнительные сведения см. в статье Сохранение файлов в Azure Cloud Shell.For more information, see Persist files in Azure Cloud Shell.

Развертывание ZIP-файла с помощью с REST APIDeploy ZIP file with REST APIs

Вы можете использовать REST API службы развертывания, чтобы развернуть ZIP-файл в приложении в Azure.You can use the deployment service REST APIs to deploy the .zip file to your app in Azure. Для развертывания отправьте запрос POST по адресу https://<имя_приложения>.scm.azurewebsites.net/api/zipdeploy.To deploy, send a POST request to https://<app_name>.scm.azurewebsites.net/api/zipdeploy. В тексте сообщения запроса POST должен содержаться ZIP-файл.The POST request must contain the .zip file in the message body. Учетные данные развертывания для приложения указываются в запросе с использованием обычной проверки подлинности HTTP.The deployment credentials for your app are provided in the request by using HTTP BASIC authentication. Дополнительные сведения см. в справочнике по принудительному развертыванию из ZIP-файлов.For more information, see the .zip push deployment reference.

Для обычной аутентификации HTTP требуются учетные данные развертывания службы приложений.For the HTTP BASIC authentication, you need your App Service deployment credentials. См. дополнительные сведения об установке и сбросе учетных данных на уровне пользователя.To see how to set your deployment credentials, see Set and reset user-level credentials.

Использование cURLWith cURL

В примере ниже для развертывания ZIP-файла используется средство cURL.The following example uses the cURL tool to deploy a .zip file. Замените заполнители <deployment_user>, <zip_file_path> и <app_name>.Replace the placeholders <deployment_user>, <zip_file_path>, and <app_name>. Когда в cURL появится запрос, введите пароль.When prompted by cURL, type in the password.

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

Этот запрос позволяет активировать принудительное развертывание из отправленного ZIP-файла.This request triggers push deployment from the uploaded .zip file. Вы можете просмотреть текущие и предыдущие развертывания, используя конечную точку https://<app_name>.scm.azurewebsites.net/api/deployments, как показано в примере cURL ниже.You can review the current and past deployments by using the https://<app_name>.scm.azurewebsites.net/api/deployments endpoint, as shown in the following cURL example. Точно так же замените <app_name> именем приложения и <deployment_user> — именем пользователя из учетных данных развертывания.Again, replace <app_name> with the name of your app and <deployment_user> with the username of your deployment credentials.

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

С помощью PowerShellWith PowerShell

В следующем примере используется Публикация-азвебапп .The following example uses Publish-AzWebapp upload the .zip file. Замените заполнители <group-name>, <app-name> и <zip-file-path>.Replace the placeholders <group-name>, <app-name>, and <zip-file-path>.

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

Этот запрос позволяет активировать принудительное развертывание из отправленного ZIP-файла.This request triggers push deployment from the uploaded .zip file.

Чтобы просмотреть текущие и прошлые развертывания, выполните следующие команды.To review the current and past deployments, run the following commands. Опять же, замените <deployment-user> <deployment-password> <app-name> заполнители, и.Again, replace the <deployment-user>, <deployment-password>, and <app-name> placeholders.

$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

Выполнение функций из пакета развертыванияRun functions from the deployment package

Выполнять функции можно также непосредственно из файла пакета развертывания.You can also choose to run your functions directly from the deployment package file. Этот метод не предусматривает шаг развертывания, на котором файлы копируются из пакета в каталог wwwroot приложения-функции.This method skips the deployment step of copying files from the package to the wwwroot directory of your function app. Вместо этого файл пакета подключается с помощью среды выполнения Функций, а содержимое каталога wwwroot становится доступным только для чтения.Instead, the package file is mounted by the Functions runtime, and the contents of the wwwroot directory become read-only.

Развертывание из ZIP-файла интегрируется с этой возможностью. Ее можно включить, задав для параметра приложения-функции WEBSITE_RUN_FROM_PACKAGE значение 1.Zip deployment integrates with this feature, which you can enable by setting the function app setting WEBSITE_RUN_FROM_PACKAGE to a value of 1. Дополнительные сведения см. в разделе Run your Azure Functions from a package file (Запуск Функций Azure из файла пакета).For more information, see Run your functions from a deployment package file.

Настройка развертыванияDeployment customization

При развертывании предполагается, что отправляемый ZIP-файл содержит готовое к запуску приложение.The deployment process assumes that the .zip file that you push contains a ready-to-run app. По умолчанию настройки не задаются.By default, no customizations are run. Чтобы включить те же процессы компиляции, что и при непрерывной интеграции, добавьте в параметры приложения следующее:To enable the same build processes that you get with continuous integration, add the following to your application settings:

SCM_DO_BUILD_DURING_DEPLOYMENT=true

При развертывании из отправленного ZIP-файла для этого параметра по умолчанию установлено значение false.When you use .zip push deployment, this setting is false by default. Для развертываний с непрерывной интеграцией значение по умолчанию — true.The default is true for continuous integration deployments. Если установлено значение true, при развертывании используются связанные с ним параметры, которые вы задали.When set to true, your deployment-related settings are used during deployment. Эти параметры можно настроить как параметры приложения, или указать в файле конфигурации .deployment, который находится в корневом каталоге ZIP-файла.You can configure these settings either as app settings or in a .deployment configuration file that's located in the root of your .zip file. Дополнительные сведения см. в разделе о параметрах, связанных с репозиторием и развертыванием, справочника по развертыванию.For more information, see Repository and deployment-related settings in the deployment reference.

Дальнейшие действияNext steps