Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Azure функции можно запускать непосредственно из файла пакета развертывания в приложении-функции. Другим вариантом является развертывание ваших файлов в директории c:\home\site\wwwroot
(Windows) или /home/site/wwwroot
(Linux) вашего приложения функций.
В этой статье описываются преимущества запуска функций из пакета. В нем также показано, как включить эту функцию в приложении-функции.
Преимущества запуска из файла пакета
Существует несколько преимуществ выполнения функций из файла пакета:
- Снижается риск возникновения проблем из-за блокировки копирования файлов.
- Можно выполнить развертывание в рабочее приложение с последующим перезапуском.
- Проверяет файлы, выполняющиеся в вашем приложении.
- Повышает производительность развертываний Azure Resource Manager.
- Сокращает время холодного запуска, особенно для функций JavaScript с большими деревьями пакетов npm.
Дополнительные сведения см. в этом объявлении.
Включение функций для запуска из пакета
Приложения-функции в плане размещения Flex Consumption выполняются из пакета по умолчанию. Не требуется выполнять специальную конфигурацию.
Чтобы ваше приложение-функция запускалось из пакета в планах размещения "Потребление", "Эластичная премиум" и "Служба приложений (выделенная)", добавьте WEBSITE_RUN_FROM_PACKAGE
параметр приложения в ваше приложение-функцию. Параметр WEBSITE_RUN_FROM_PACKAGE
приложения может иметь одно из следующих значений:
Ценность | Описание |
---|---|
1 |
Указывает, что приложение-функция запускается из локального файла пакета, развернутого в c:\home\data\SitePackages папке (Windows) или /home/data/SitePackages (Linux) приложения-функции. |
<URL> |
Задает URL-адрес, который является удаленным расположением определенного файла пакета, который требуется запустить. Требуется для функций приложений, работающих в Linux в тарифе потребления. |
В следующей таблице указаны рекомендуемые WEBSITE_RUN_FROM_PACKAGE
значения для развертывания в определенной операционной системе и плане размещения:
План размещения | Виндоус | Линукс |
---|---|---|
Потребление |
1 настоятельно рекомендуется. |
Поддерживается только <URL> . |
Премиум |
1 рекомендуется. |
1 рекомендуется. |
Преданный |
1 рекомендуется. |
1 рекомендуется. |
Общие рекомендации
- Не добавляйте
WEBSITE_RUN_FROM_PACKAGE
параметр приложения в приложения на плане Плата за использование Flex. - Файл пакета должен быть отформатирован .zip. Форматы Tar и gzip не поддерживаются.
- Развертывание ZIP рекомендуется.
- При развертывании функционального приложения в Windows следует установить
WEBSITE_RUN_FROM_PACKAGE
1
и опубликовать с помощью zip-развертывания. - При запуске из пакета папка
wwwroot
доступна только для чтения, и если попытаться записать файлы в эту папку, возникает ошибка. Файлы также доступны только для чтения на портале Azure. - Максимальный размер файла пакета развертывания составляет 1 ГБ.
- Развертывание использует временное хранилище при распаковке файлов проекта. Это означает, что ваше приложение-функция должно иметь достаточно свободного временного места для хранения содержимого пакета. Помните, что временное ограничение хранилища для плана потребления составляет 500 МБ на план. Сведения об устранении неполадок с временным хранилищем см. в статье "Устранение неполадок с временным хранилищем в Службе приложений Azure".
- При запуске из пакета развертывания нельзя использовать локальный кэш.
- Если проект должен использовать удаленную сборку, не используйте
WEBSITE_RUN_FROM_PACKAGE
параметр приложения. Вместо этого добавьтеSCM_DO_BUILD_DURING_DEPLOYMENT=true
параметр приложения настройки развертывания. Для Linux также добавьте этот параметрENABLE_ORYX_BUILD=true
. Дополнительные сведения см. в разделе "Удаленная сборка".
Замечание
Параметр WEBSITE_RUN_FROM_PACKAGE
приложения не работает с MSDeploy, как описано в MSDeploy VS. ZipDeploy. Во время развертывания вы получите ошибку, например ARM-MSDeploy Deploy Failed
. Чтобы устранить эту ошибку, перейдите /MSDeploy
на /ZipDeploy
.
Добавьте параметр WEBSITE_RUN_FROM_PACKAGE
Существует несколько способов для добавления, обновления и удаления параметров приложения-функции.
Изменения в параметрах функционального приложения требуют его перезапуска.
Создание ZIP-архива
Развернутый ZIP-архив должен содержать все файлы, необходимые для запуска функционального приложения. Вы можете вручную создать ZIP-архив из содержимого папки проекта "Функции" с помощью встроенных функций сжатия .zip или средств, отличных от Майкрософт.
Архив должен содержать файлhost.json в корне извлеченной папки. Выбранный стек языков для приложения-функции создает другие требования:
- .NET (изолированная рабочая модель)
- .NET (модель в процессе)
- Ява
- JavaScript
- Машинописный текст
- PowerShell
- Питон
Это важно
Для языков, создающих скомпилированные выходные данные для развертывания, обязательно сжимайте содержимое выходной папки, которую планируется опубликовать, а не всю папку проекта. Когда Функции извлекают содержимое ZIP-архива, host.json
файл должен существовать в корне пакета.
Установите WEBSITE_RUN_FROM_PACKAGE = 1
В этом разделе содержатся сведения о том, как запустить приложение-функцию из локального файла пакета.
Рекомендации по развертыванию из пакета на сайте
- Использование пакета на сайте является рекомендуемым вариантом запуска из пакета развертывания, за исключением случаев, когда выполняется на Linux, размещенной в плане потребления.
- Zip-развертывание — это рекомендуемый способ загрузки пакета развертывания на ваш сайт.
- Если вы не используете zip-развертывание, убедитесь, что
c:\home\data\SitePackages
папка (Windows) или/home/data/SitePackages
(Linux) содержит файл с именемpackagename.txt
. Этот файл содержит только имя файла пакета без пробелов, который находится в этой папке и в данный момент запущен.
Интеграция с zip-развертыванием
Развертывание Zip — это функция Службы приложений Azure, которая позволяет развернуть проект приложения-функции в каталоге wwwroot
. Проект упаковается в виде файла развертывания .zip. Те же API можно использовать для развертывания пакета в папке c:\home\data\SitePackages
(Windows) или /home/data/SitePackages
(Linux).
При задании WEBSITE_RUN_FROM_PACKAGE
значения 1
параметра приложения API-интерфейсы zip-развертывания копируют пакет в c:\home\data\SitePackages
папку (Windows) или /home/data/SitePackages
(Linux) вместо извлечения файлов в c:\home\site\wwwroot
(Windows) или /home/site/wwwroot
(Linux). Он также создает packagename.txt
файл. После автоматического перезапуска приложения-функции пакет подключается к wwwroot
файловой системе только для чтения. Дополнительные сведения о развертывании ZIP см. в статье о развертывании ZIP для Функций Azure.
Замечание
При развертывании активируется перезапуск приложения-функции. Выполнение функций, выполняемых в настоящее время во время развертывания, завершается. Чтобы узнать, как писать функции без состояния и оборонительные функции, смотрите Писать функции без состояния.
Используйте WEBSITE_RUN_FROM_PACKAGE = URL
В этом разделе содержатся сведения о том, как запустить приложение-функцию из пакета, развернутого в конечной точке URL-адреса. Этот параметр является единственным, поддерживаемым для запуска из размещенного в Linux пакета с планом потребления. В плане Flex Consumption этот параметр не поддерживается.
Рекомендации по развертыванию из URL-адреса
- Не устанавливайте
WEBSITE_RUN_FROM_PACKAGE = <URL>
в приложениях при использовании плана Flex Consumption. Этот параметр не поддерживается. - Приложения-функции, работающие на Windows, испытывают небольшое увеличение времени холодного запуска при развертывании пакета приложения на URL-адресе через
WEBSITE_RUN_FROM_PACKAGE = <URL>
. - При указании URL-адреса необходимо также вручную синхронизировать триггеры после публикации обновленного пакета.
- Среда выполнения Функций должна иметь разрешения на доступ к URL-адресу пакета.
- Не развертывайте пакет в хранилище BLOB-объектов Azure в качестве общедоступного BLOB-объекта. Вместо этого используйте частный контейнер с подписанной строкой доступа (SAS) или управляемое удостоверение, чтобы среда выполнения Функций могла получить доступ к пакету.
- Необходимо поддерживать все URL-адреса SAS, используемые для развертывания. По истечении срока действия SAS пакет больше не может быть развернут. В этом случае необходимо создать новый SAS и обновить параметр в приложении-функции. Это бремя управления можно устранить с помощью управляемого удостоверения.
- При выполнении плана "Премиум" не забудьте исключить холодные запуски.
- При использовании выделенного плана убедитесь, что вы включите Always On.
- Вы можете использовать Обозреватель хранения Azure для загрузки файлов пакетов данных в контейнеры BLOB в вашей учетной записи хранения.
Ручная загрузка пакета в хранилище BLOB-объектов
Чтобы развернуть пакет в формате ZIP при использовании параметра URL-адреса, необходимо создать сжатый пакет развертывания .zip и загрузить его в пункт назначения. Следующая процедура развертывается в контейнере в хранилище BLOB-объектов:
Создайте пакет .zip для проекта с помощью выбранной программы.
На портале Azure найдите имя учетной записи хранения или найдите ее в списке учетных записей хранения.
В учетной записи хранения выберите контейнеры в разделе хранилище данных.
Выберите +Контейнер, чтобы создать новый контейнер Blob-хранилища в вашей учетной записи.
На странице "Создать контейнер " укажите имя (например, развертывания), убедитесь, что уровень анонимного доступа является закрытым, а затем нажмите кнопку "Создать".
Выберите созданный контейнер, нажмите кнопку "Отправить", перейдите к расположению файла .zip, созданного в проекте, и нажмите кнопку "Отправить".
После завершения загрузки выберите загруженный файл типа blob и скопируйте URL-адрес. Если вы не используете управляемое удостоверение, возможно, потребуется создать URL-адрес SAS (Shared Access Signature).
Найдите приложение-функцию или просмотрите его на странице Приложение-функция.
В приложении-функции разверните узел "Параметры" и выберите переменные среды.
На вкладке "Параметры приложения " нажмите кнопку "+ Добавить".
Введите значение
WEBSITE_RUN_FROM_PACKAGE
для Имя и вставьте URL-адрес вашего пакета в хранилище BLOB-объектов для Значение.Выберите "Применить", а затем нажмите кнопку "Применить " и " Подтвердить ", чтобы сохранить параметр и перезапустить приложение-функцию.
Теперь вы можете запустить функцию в Azure, чтобы убедиться, что развертывание пакета развертывания .zip файла выполнено успешно.
Получение пакета из хранилища Azure Blob с помощью управляемого удостоверения
Вы можете настроить Хранилище BLOB-объектов Azure для авторизации запросов с помощью Microsoft Entra ID. Эта конфигурация означает, что вместо создания ключа SAS с истечением срока действия можно использовать управляемое удостоверение приложения. По умолчанию используется назначаемое системой удостоверение приложения. Если вы хотите указать пользовательское удостоверение, можно указать ИД ресурса этого удостоверения в параметре приложения WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID
. Параметр также может принимать SystemAssigned
в качестве значения, что эквивалентно опущению параметра.
Чтобы разрешить получение пакета с помощью удостоверения, выполните следующие действия:
Убедитесь, что большой двоичный объект настроен для частного доступа.
Предоставьте удостоверению роль Читатель данных больших двоичных объектов хранилища с областью действия для большого двоичного объекта пакета. Для получения подробной информации о назначении роли см. статью Назначение роли Azure для доступа к данным BLOB-объектов.
Задайте параметр приложения
WEBSITE_RUN_FROM_PACKAGE
для URL-адреса большого двоичного объекта пакета. Этот URL-адрес обычно является формойhttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}
или аналогичным.Если вы хотите указать пользовательское удостоверение, можно указать ИД ресурса этого удостоверения в параметре приложения
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID
. Параметр также может принимать "SystemAssigned" в качестве значения, хотя это то же самое, что и полное его отсутствие. Идентификатор ресурса — это стандартное представление ресурса в Azure. Для управляемого удостоверения, назначаемого пользователем, это будет/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name
. Идентификатор ресурса управляемого удостоверения, назначаемого пользователем, можно получить в разделе "Параметры ->Свойства ->Идентификатор назначенного пользователем управляемого удостоверения.