Технологии развертывания в функциях AzureDeployment technologies in Azure Functions

Вы можете использовать несколько различных технологий для развертывания кода проекта функций Azure в Azure.You can use a few different technologies to deploy your Azure Functions project code to Azure. Эта статья содержит исчерпывающий список технологий, описывает, какие технологии доступны для каких разновидностей функций, объясняет, что происходит при использовании каждого метода, и предоставляет рекомендации для лучшего способа использования в различных сценариях. .This article provides an exhaustive list of those technologies, describes which technologies are available for which flavors of Functions, explains what happens when you use each method, and provides recommendations for the best method to use in various scenarios. Различные средства, поддерживающие развертывание в функции Azure, настроены на правильную технологию в зависимости от контекста.The various tools that support deploying to Azure Functions are tuned to the right technology based on their context. Как правило, развертывание ZIP является рекомендуемой технологией развертывания для функций Azure.In general, zip deployment is the recommended deployment technology for Azure Functions.

Доступность технологии развертыванияDeployment technology availability

Функции Azure поддерживают локальную разработку и размещение на разных платформах в Windows и Linux.Azure Functions supports cross-platform local development and hosting on Windows and Linux. Сейчас доступны три плана размещения:Currently, three hosting plans are available:

Каждый план имеет разные поведения.Each plan has different behaviors. Для каждой разновидности функций Azure доступны не все технологии развертывания.Not all deployment technologies are available for each flavor of Azure Functions. На следующей диаграмме показано, какие технологии развертывания поддерживаются для каждого сочетания операционной системы и плана размещения.The following chart shows which deployment technologies are supported for each combination of operating system and hosting plan:

Технология развертыванияDeployment technology Использование WindowsWindows Consumption Windows PremiumWindows Premium Выделенные WindowsWindows Dedicated Использование LinuxLinux Consumption Linux PremiumLinux Premium Выделенные LinuxLinux Dedicated
URL-адрес внешнего пакета1External package URL1
ZIP-развертываниеZip deploy
Контейнер DockerDocker container
веб-развертываниеWeb Deploy
Система управления версиямиSource control
Локальный Git1Local Git1
Синхронизация Cloud1Cloud sync1
FTP1FTP1
Редактирование на порталеPortal editing 22 22

1 технология развертывания, требующая синхронизации триггеров вручную.1 Deployment technology that requires manual trigger syncing.
2 редактирование на портале включено только для триггеров HTTP и таймера для функций в Linux, использующих Premium и выделенные планы.2 Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and dedicated plans.

Основные понятияKey concepts

Некоторые ключевые понятия важны для понимания работы развертываний в функциях Azure.Some key concepts are critical to understanding how deployments work in Azure Functions.

Синхронизация триггеровTrigger syncing

При изменении любого из триггеров инфраструктура функций должна учитывать изменения.When you change any of your triggers, the Functions infrastructure must be aware of the changes. Синхронизация происходит автоматически для многих технологий развертывания.Synchronization happens automatically for many deployment technologies. Однако в некоторых случаях необходимо вручную синхронизировать триггеры.However, in some cases, you must manually sync your triggers. При развертывании обновлений путем ссылки на внешний URL-адрес пакета, локальный репозиторий Git, облачная синхронизация или FTP, необходимо вручную синхронизировать триггеры.When you deploy your updates by referencing an external package URL, local Git, cloud sync, or FTP, you must manually sync your triggers. Синхронизировать триггеры можно одним из трех способов:You can sync triggers in one of three ways:

  • Перезапустите приложение функции в портал AzureRestart your function app in the Azure portal
  • Отправка запроса HTTP POST в https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> с помощью главного ключа.Send an HTTP POST request to https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> using the master key.
  • Отправьте запрос HTTP POST в https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01.Send an HTTP POST request to https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Замените заполнители ИДЕНТИФИКАТОРом подписки, именем группы ресурсов и именем приложения функции.Replace the placeholders with your subscription ID, resource group name, and the name of your function app.

Удаленная сборкаRemote build

Функции Azure могут автоматически выполнять сборки по коду, который он получает после развертывания ZIP.Azure Functions can automatically perform builds on the code it receives after zip deployments. Эти сборки ведут себя немного иначе в зависимости от того, выполняется ли приложение в Windows или Linux.These builds behave slightly differently depending on whether your app is running on Windows or Linux. Удаленные сборки не выполняются, если приложение ранее было настроено для запуска в режиме запуска из пакета .Remote builds are not performed when an app has previously been set to run in Run From Package mode. Чтобы узнать, как использовать удаленную сборку, перейдите к папке ZIP Deploy.To learn how to use remote build, navigate to zip deploy.

Примечание

Если возникают проблемы с удаленной сборкой, это может быть вызвано тем, что приложение было создано до того, как функция стала доступной (1 августа 2019 г.).If you're having issues with remote build, it might be because your app was created before the feature was made available (August 1, 2019). Попробуйте создать новое приложение-функцию или запустите az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME>, чтобы обновить приложение-функцию.Try creating a new function app, or running az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> to update your function app. Для выполнения этой команды может потребоваться две попытки.This command might take two tries to succeed.

Удаленная сборка в WindowsRemote build on Windows

Все приложения-функции, работающие в Windows, имеют небольшое приложение управления, SCM (или KUDU).All function apps running on Windows have a small management app, the SCM (or Kudu) site. Этот сайт обрабатывает большую часть логики развертывания и сборки для функций Azure.This site handles much of the deployment and build logic for Azure Functions.

При развертывании приложения в Windows выполняются команды для конкретного языка, такие как dotnet restore (C#) или npm install (JavaScript).When an app is deployed to Windows, language-specific commands, like dotnet restore (C#) or npm install (JavaScript) are run.

Удаленная сборка в LinuxRemote build on Linux

Чтобы включить удаленную сборку в Linux, необходимо задать следующие Параметры приложения :To enable remote build on Linux, the following application settings must be set:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

По умолчанию как Azure functions Core Tools , так и расширение функций Azure для Visual Studio Code выполнять удаленные сборки при развертывании в Linux.By default, both Azure Functions Core Tools and the Azure Functions Extension for Visual Studio Code perform remote builds when deploying to Linux. По этой причине оба средства автоматически создают эти параметры в Azure.Because of this, both tools automatically create these settings for you in Azure.

Когда приложения создаются удаленно в Linux, они запускаются из пакета развертывания.When apps are built remotely on Linux, they run from the deployment package.

План потребленияConsumption plan

В приложениях-функциях Linux, выполняющихся в плане потребления, отсутствует сайт SCM или KUDU, который ограничивает возможности развертывания.Linux function apps running in the Consumption plan don't have an SCM/Kudu site, which limits the deployment options. Однако приложения функций в Linux, работающие в плане потребления, поддерживают удаленные сборки.However, function apps on Linux running in the Consumption plan do support remote builds.

Планы "Специальный" и "Премиум"Dedicated and Premium plans

Приложения-функции, работающие в Linux в специальном плане (служба приложений) и план Premium , также имеют ограниченный сайт SCM или KUDU.Function apps running on Linux in the Dedicated (App Service) plan and the Premium plan also have a limited SCM/Kudu site.

Сведения о технологии развертыванияDeployment technology details

В функциях Azure доступны следующие методы развертывания.The following deployment methods are available in Azure Functions.

URL-адрес внешнего пакетаExternal package URL

URL-адрес внешнего пакета можно использовать для ссылки на файл удаленного пакета (ZIP), содержащий приложение-функцию.You can use an external package URL to reference a remote package (.zip) file that contains your function app. Файл загружается по указанному URL-адресу, и приложение запускается в режиме запуска из пакета .The file is downloaded from the provided URL, and the app runs in Run From Package mode.

Как его использовать: Добавьте WEBSITE_RUN_FROM_PACKAGE в параметры приложения.How to use it: Add WEBSITE_RUN_FROM_PACKAGE to your application settings. Значение этого параметра должно быть URL-адресом (расположением определенного файла пакета, который требуется выполнить).The value of this setting should be a URL (the location of the specific package file you want to run). Параметры можно добавить либо на портале , либо с помощью Azure CLI.You can add settings either in the portal or by using the Azure CLI.

При использовании хранилища BLOB-объектов Azure используйте частный контейнер с подписанным URL-адресом (SAS) , чтобы предоставить функциям доступ к пакету.If you use Azure Blob storage, use a private container with a shared access signature (SAS) to give Functions access to the package. При каждом перезапуске приложения он получает копию содержимого.Any time the application restarts, it fetches a copy of the content. Ссылка должна быть действительна в течение времени существования приложения.Your reference must be valid for the lifetime of the application.

Когда его использовать: URL-адрес внешнего пакета — это единственный поддерживаемый метод развертывания для функций Azure, выполняющихся в Linux в плане потребления, если пользователь не хочет, чтобы удаленная сборка выполнялась.When to use it: External package URL is the only supported deployment method for Azure Functions running on Linux in the Consumption plan, if the user doesn't want a remote build to occur. При обновлении файла пакета, на который ссылается приложение-функция, необходимо вручную синхронизировать триггеры , чтобы сообщить Azure о том, что ваше приложение изменилось.When you update the package file that a function app references, you must manually sync triggers to tell Azure that your application has changed.

ZIP-развертываниеZip deploy

Используйте ZIP deploy, чтобы отправить zip-файл, содержащий приложение-функцию, в Azure.Use zip deploy to push a .zip file that contains your function app to Azure. При необходимости можно настроить приложение для запуска из пакетаили указать, что выполняется удаленная сборка .Optionally, you can set your app to start running from package, or specify that a remote build occurs.

Как его использовать: Развертывание с помощью любимого клиентского средства: Visual Studio Code, Visual Studio, Azure functions Core Toolsили Azure CLI.How to use it: Deploy by using your favorite client tool: Visual Studio Code, Visual Studio, the Azure Functions Core Tools, or the Azure CLI. По умолчанию эти средства используют ZIP-развертывание и запускаются из пакета.By default, these tools use zip deployment and run from package. Основные средства и расширение Visual Studio Code позволяют включить удаленную сборку при развертывании в Linux.Core Tools and the Visual Studio Code extension both enable remote build when deploying to Linux. Чтобы вручную развернуть ZIP-файл в приложении-функции, следуйте инструкциям в разделе развертывание из файла с расширением ZIP или URL-адреса.To manually deploy a .zip file to your function app, follow the instructions in Deploy from a .zip file or URL.

При развертывании с помощью ZIP-развертывания можно настроить приложение для запуска из пакета.When you deploy by using zip deploy, you can set your app to run from package. Чтобы запустить из пакета, задайте для параметра приложения WEBSITE_RUN_FROM_PACKAGE значение 1.To run from package, set the WEBSITE_RUN_FROM_PACKAGE application setting value to 1. Рекомендуется использовать ZIP-развертывание.We recommend zip deployment. Это позволяет ускорить загрузку приложений, и это значение по умолчанию для VS Code, Visual Studio и Azure CLI.It yields faster loading times for your applications, and it's the default for VS Code, Visual Studio, and the Azure CLI.

Когда его использовать: ZIP Deploy — это рекомендуемая технология развертывания для функций Azure.When to use it: Zip deploy is the recommended deployment technology for Azure Functions.

Контейнер DockerDocker container

Вы можете развернуть образ контейнера Linux, содержащий приложение-функцию.You can deploy a Linux container image that contains your function app.

Как его использовать: Создайте приложение-функцию Linux в плане "Премиум" или "выделенный" и укажите образ контейнера для запуска.How to use it: Create a Linux function app in the Premium or Dedicated plan and specify which container image to run from. Это можно сделать двумя способами.You can do this in two ways:

  • Создайте приложение-функцию Linux в плане службы приложений Azure на портал Azure.Create a Linux function app on an Azure App Service plan in the Azure portal. Для публикациивыберите образ DOCKER, а затем настройте контейнер.For Publish, select Docker Image, and then configure the container. Введите расположение, в котором размещен образ.Enter the location where the image is hosted.
  • Создайте приложение-функцию Linux в плане службы приложений с помощью Azure CLI.Create a Linux function app on an App Service plan by using the Azure CLI. Дополнительные сведения см. в статье Создание функции в Linux с помощью пользовательского образа.To learn how, see Create a function on Linux by using a custom image.

Чтобы выполнить развертывание в существующем приложении с помощью пользовательского контейнера, в Azure functions Core Toolsиспользуйте команду func deploy .To deploy to an existing app by using a custom container, in Azure Functions Core Tools, use the func deploy command.

Когда его использовать: Используйте параметр контейнер DOCKER, если требуется больший контроль над средой Linux, в которой выполняется приложение функции.When to use it: Use the Docker container option when you need more control over the Linux environment where your function app runs. Этот механизм развертывания доступен только для функций, работающих в Linux.This deployment mechanism is available only for Functions running on Linux.

Веб-развертывание (MSDeploy)Web Deploy (MSDeploy)

Веб-развертывание пакеты и развертывает приложения Windows на любом сервере IIS, включая приложения функций, работающие в Windows в Azure.Web Deploy packages and deploys your Windows applications to any IIS server, including your function apps running on Windows in Azure.

Как его использовать: Используйте инструменты Visual Studio для функций Azure.How to use it: Use Visual Studio tools for Azure Functions. Снимите флажок запускать из файла пакета (рекомендуется) .Clear the Run from package file (recommended) check box.

Можно также загрузить веб-развертывание 3,6 и вызвать MSDeploy.exe напрямую.You can also download Web Deploy 3.6 and call MSDeploy.exe directly.

Когда его использовать: Веб-развертывание поддерживается и не имеет проблем, но предпочтительным механизмом является развертывание ZIP с включенным запуском из пакета.When to use it: Web Deploy is supported and has no issues, but the preferred mechanism is zip deploy with Run From Package enabled. Дополнительные сведения см. в разделе с руководством по разработке для Visual Studio.To learn more, see the Visual Studio development guide.

Система управления версиямиSource control

Используйте систему управления версиями для подключения приложения-функции к репозиторию Git.Use source control to connect your function app to a Git repository. Обновление кода в этом репозитории активирует развертывание.An update to code in that repository triggers deployment. Дополнительные сведения см. на вики-сайте KUDU.For more information, see the Kudu Wiki.

Как его использовать: Используйте центр развертывания в области "функции" на портале, чтобы настроить публикацию из системы управления версиями.How to use it: Use Deployment Center in the Functions area of the portal to set up publishing from source control. Дополнительные сведения см. в статье Непрерывное развертывание для функций Azure.For more information, see Continuous deployment for Azure Functions.

Когда его использовать: Использование системы управления версиями — это оптимальная практика для команд, совместно работающих с приложениями-функциями.When to use it: Using source control is the best practice for teams that collaborate on their function apps. Система управления версиями — хороший вариант развертывания, обеспечивающий более сложные конвейеры развертывания.Source control is a good deployment option that enables more sophisticated deployment pipelines.

локальный репозиторий Git;Local Git

Вы можете использовать локальный Git для отправки кода с локального компьютера в функции Azure с помощью Git.You can use local Git to push code from your local machine to Azure Functions by using Git.

Как его использовать: Следуйте инструкциям в локальном развертывании Git в службе приложений Azure.How to use it: Follow the instructions in Local Git deployment to Azure App Service.

Когда его использовать: Как правило, рекомендуется использовать другой метод развертывания.When to use it: In general, we recommend that you use a different deployment method. При публикации из локального репозитория Git необходимо вручную синхронизировать триггеры.When you publish from local Git, you must manually sync triggers.

Синхронизация в облакеCloud sync

Используйте облачную синхронизацию для синхронизации содержимого из Dropbox и OneDrive в функции Azure.Use cloud sync to sync your content from Dropbox and OneDrive to Azure Functions.

Как его использовать: Следуйте инструкциям в разделе Синхронизация содержимого из облачной папки.How to use it: Follow the instructions in Sync content from a cloud folder.

Когда его использовать: Как правило, мы рекомендуем использовать другие методы развертывания.When to use it: In general, we recommend other deployment methods. При публикации с помощью синхронизации Cloud необходимо вручную синхронизировать триггеры.When you publish by using cloud sync, you must manually sync triggers.

FTPFTP

Вы можете использовать FTP для непосредственного перемещения файлов в функции Azure.You can use FTP to directly transfer files to Azure Functions.

Как его использовать: Следуйте инструкциям в разделе развертывание содержимого с помощью FTP/s.How to use it: Follow the instructions in Deploy content by using FTP/s.

Когда его использовать: Как правило, мы рекомендуем использовать другие методы развертывания.When to use it: In general, we recommend other deployment methods. При публикации с помощью FTP необходимо вручную синхронизировать триггеры.When you publish by using FTP, you must manually sync triggers.

Редактирование на порталеPortal editing

В редакторе на основе портала можно изменять файлы, которые находятся в приложении-функции (по сути, развертывая каждый раз при сохранении изменений).In the portal-based editor, you can directly edit the files that are in your function app (essentially deploying every time you save your changes).

Как его использовать: Чтобы иметь возможность изменять функции в портал Azure, необходимо создать функции на портале.How to use it: To be able to edit your functions in the Azure portal, you must have created your functions in the portal. Чтобы сохранить один источник истинности, использование любого другого метода развертывания сделает функцию только для чтения и не позволит продолжить редактирование на портале.To preserve a single source of truth, using any other deployment method makes your function read-only and prevents continued portal editing. Чтобы вернуться в состояние, в котором можно изменить файлы в портал Azure, можно вручную снова включить режим изменения в Read/Write и удалить все параметры приложения, связанные с развертыванием (например, WEBSITE_RUN_FROM_PACKAGE).To return to a state in which you can edit your files in the Azure portal, you can manually turn the edit mode back to Read/Write and remove any deployment-related application settings (like WEBSITE_RUN_FROM_PACKAGE).

Когда его использовать: Портал — хороший способ начать работу с функциями Azure.When to use it: The portal is a good way to get started with Azure Functions. Для более интенсивной работы по разработке рекомендуется использовать одно из следующих клиентских средств:For more intense development work, we recommend that you use one of the following client tools:

В следующей таблице показаны операционные системы и языки, поддерживающие редактирование на портале.The following table shows the operating systems and languages that support portal editing:

Использование WindowsWindows Consumption Windows PremiumWindows Premium Выделенные WindowsWindows Dedicated Использование LinuxLinux Consumption Linux PremiumLinux Premium Выделенные LinuxLinux Dedicated
C#C#
Скрипт C#C# Script ** **
F#F#
Java:Java
JavaScript (Node.js)JavaScript (Node.js) ** **
Python (предварительная версия)Python (Preview)
PowerShell (Предварительная версия)PowerShell (Preview)
TypeScript (Node. js)TypeScript (Node.js)

* Редактирование на портале включено только для триггеров HTTP и таймера для функций в Linux, использующих Premium и выделенные планы.* Portal editing is enabled only for HTTP and Timer triggers for Functions on Linux using Premium and dedicated plans.

Слоты развертыванияDeployment slots

При развертывании приложения-функции в Azure можно выполнить развертывание в отдельном слоте развертывания, а не непосредственно в рабочей среде.When you deploy your function app to Azure, you can deploy to a separate deployment slot instead of directly to production. Дополнительные сведения о слотах развертывания см. в документации по слотам развертывания функций Azure .For more information on deployment slots, see the Azure Functions Deployment Slots documentation for details.

Дополнительная информацияNext steps

Ознакомьтесь со следующими статьями, чтобы узнать больше о развертывании приложений функций.Read these articles to learn more about deploying your function apps: