Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В 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) приложения-функции. Это параметр по умолчанию при использовании Функции Azure Core Tools. |
<URL> |
Задает URL-адрес, который является удаленным расположением определенного файла пакета, который требуется запустить. Требуется для функций приложений, работающих в Linux в тарифе потребления. |
В следующей таблице указаны рекомендуемые WEBSITE_RUN_FROM_PACKAGE значения для развертывания в определенной операционной системе и плане размещения:
| План размещения | Windows | Линукс |
|---|---|---|
| Потребление |
1 настоятельно рекомендуется. |
Поддерживается только <URL>. |
| Премиум |
1 рекомендуется. |
1 рекомендуется. |
| Преданный |
1 рекомендуется. |
1 рекомендуется. |
Общие рекомендации
- Не добавляйте
WEBSITE_RUN_FROM_PACKAGEпараметр приложения в приложения на плане Flex Consumption. - Файл пакета должен быть отформатирован .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 (внутрипроцессная модель)
- Java
- JavaScript
- Машинописный текст
- PowerShell
- Python
Это важно
Для языков, создающих скомпилированные выходные данные для развертывания, обязательно сжимайте содержимое выходной папки, которую планируется опубликовать, а не всю папку проекта. Когда Функции извлекают содержимое 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, ZIP API-интерфейсы развертывания скопируют ваш пакет в папку c:\home\data\SitePackages (Windows) или /home/data/SitePackages (Linux) вместо извлечения файлов в папку c:\home\site\wwwroot (Windows) или /home/site/wwwroot (Linux). Он также создает файл packagename.txt . После автоматического перезапуска приложения-функции пакет подключается к wwwroot файловой системе только для чтения. Дополнительные сведения о развертывании ZIP см. в статье Zip deployment for Функции Azure.
Замечание
При развертывании активируется перезапуск приложения-функции. Выполнение функций, выполняемых в настоящее время во время развертывания, завершается. Для получения информации о том, как писать функции, не хранящие состояния, и защитные функции, установите Напишите функции, чтобы они были без состояния.
Использование WEBSITE_RUN_FROM_PACKAGE = <URL-адрес>
В этом разделе содержатся сведения о том, как запустить приложение-функцию из пакета, развернутого в конечной точке URL-адреса. Этот параметр является единственным, поддерживаемым для запуска из размещенного в Linux пакета с планом потребления. Этот параметр не поддерживается в плане Flex Consumption.
Рекомендации по развертыванию из URL-адреса
- Не устанавливайте
WEBSITE_RUN_FROM_PACKAGE = <URL>в приложениях на плане потребления Flex. Этот параметр не поддерживается. - Приложения-функции, работающие на Windows, испытывают небольшое увеличение времени холодного запуска при развертывании пакета приложения в конечной точке URL-адреса, используя
WEBSITE_RUN_FROM_PACKAGE = <URL>. - При указании URL-адреса необходимо также вручную синхронизировать триггеры после публикации обновленного пакета.
- Среда выполнения Функций должна иметь разрешения на доступ к URL-адресу пакета.
- Не добавляйте ваш пакет в Хранилище BLOB-объектов Azure как публичный блоб. Вместо этого используйте частный контейнер с подписанной строкой доступа (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для Name и вставьте URL-адрес пакета в Хранилище BLOB-объектов для Value.Выберите "Применить", а затем нажмите кнопку "Применить " и " Подтвердить ", чтобы сохранить параметр и перезапустить приложение-функцию.
Теперь можно запустить функцию в Azure, чтобы убедиться, что развертывание пакета развертывания .zip файла выполнено успешно.
Получение пакета из Хранилище BLOB-объектов Azure с помощью управляемого удостоверения
Можно настроить Хранилище 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/Майкрософт.ManagedIdentity/userAssignedIdentities/identity-name. Идентификатор ресурса управляемого удостоверения, назначаемого пользователем, можно получить в Параметры>Свойства>ID для назначаемого пользователем управляемого удостоверения.
Связанный контент
- непрерывное развертывание для Функции Azure