Запуск функций из файла пакета в Azure
В Azure можно запустить функции непосредственно из файла пакета развертывания в приложении-функции. Другой вариант — развернуть файлы в каталоге c:\home\site\wwwroot
(Windows) или /home/site/wwwroot
(Linux) функции-приложения.
В этой статье описываются преимущества запуска функций из пакета. Здесь также показано, как включить эту функцию в приложении-функции.
Преимущества запуска из файла пакета
Существует несколько преимуществ выполнения функций из файла пакета:
- Снижается риск возникновения проблем из-за блокировки копирования файлов.
- Можно выполнить развертывание в рабочее приложение (с помощью перезапуска).
- Проверяет файлы, работающие в приложении.
- Повышается производительность развертываний Azure Resource Manager.
- Сокращает время холодного запуска, особенно для функций JavaScript с большими деревьями пакетов npm.
Дополнительные сведения см. в этом объявлении.
Настройка запуска функций из пакета
Чтобы включить запуск приложения-функции из пакета, добавьте 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
значения для развертывания в определенной операционной системе и плане размещения:
План размещения | Windows | Linux |
---|---|---|
Потребление | 1 настоятельно рекомендуется. |
Поддерживается только <URL> . |
Премиум | Рекомендуется1 . |
Рекомендуется1 . |
Преданный | Рекомендуется1 . |
Рекомендуется1 . |
Общие рекомендации
- Файл пакета должен быть в формате .zip. Форматы Tar и gzip не поддерживаются.
- Рекомендуется развернуть ZIP-файл.
- При развертывании приложения-функции в Windows для
WEBSITE_RUN_FROM_PACKAGE
необходимо установить значение1
и выполнить публикацию с ZIP-развертыванием. - При запуске из пакета папка доступна только для чтения,
wwwroot
и при записи файлов в этот каталог возникает ошибка. Файлы также доступны только для чтения на портале Azure. - Максимальный размер файла пакета развертывания составляет 1 ГБ.
- При запуске из пакета развертывания нельзя использовать локальный кэш.
- Если в проекте необходимо использовать удаленную сборку, не используйте
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
- TypeScript
- 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
параметра приложения API-интерфейсы zip-развертывания копируют пакет в c:\home\data\SitePackages
папку (Windows) или /home/data/SitePackages
(Linux) вместо извлечения файлов в c:\home\site\wwwroot
(Windows) или /home/site/wwwroot
(Linux). Также создается файл packagename.txt
. После автоматического перезапуска приложения-функции пакет подключается к wwwroot
файловой системе только для чтения. Дополнительные сведения о развертывании из ZIP-файла см. в статье Непрерывное развертывание Функций Azure из ZIP-файла.
Примечание.
Когда происходит развертывание, выполняется перезапуск приложения-функции. Выполнение текущих функций во время развертывания прекращается. Сведения о том, как записывать функции без отслеживания состояния и оборонительные функции, задайте для функции записи без отслеживания состояния.
Использование WEBSITE_RUN_FROM_PACKAGE = URL-адрес
В этом разделе содержатся сведения о том, как запустить приложение-функцию из пакета, развернутого в URL-адресе конечной точки. Этот параметр является единственным, поддерживаемым для запуска из размещенного в Linux пакета с планом потребления.
Рекомендации по развертыванию из URL-адреса
- Приложения-функции, работающие в Windows, увеличивают время холодного запуска при развертывании пакета приложения в конечной точке URL-адреса через
WEBSITE_RUN_FROM_PACKAGE = <URL>
. - При указании URL-адреса необходимо также вручную синхронизировать триггеры после публикации обновленного пакета.
- Среда выполнения Функций должна иметь разрешения на доступ к URL-адресу пакета.
- Не развертывайте пакет в Хранилище BLOB-объектов Azure как общедоступный большой двоичный объект. Вместо этого используйте частный контейнер с подписанным URL-адресом (SAS) или используйте управляемое удостоверение , чтобы включить среду выполнения Функций для доступа к пакету.
- Необходимо поддерживать все URL-адреса SAS, используемые для развертывания. По истечении срока действия SAS пакет больше не может быть развернут. В этом случае необходимо создать новый SAS и обновить параметр в приложении-функции. Это бремя управления можно устранить с помощью управляемого удостоверения.
- При выполнении в плане Premium не забудьте исключить холодные запуски.
- При выполнении выделенного плана убедитесь, что вы включите AlwaysOn.
- Вы можете использовать обозреватель служба хранилища Azure для отправки файлов пакетов в контейнеры BLOB-объектов в учетной записи хранения.
Отправка пакета вручную в хранилище BLOB-объектов
Чтобы развернуть zip-пакет, используя параметр URL-адреса, необходимо создать сжатый пакет развертывания в формате .zip и загрузить его в место назначения. Следующая процедура развертывается в контейнере в хранилище BLOB-объектов:
Создайте пакет .zip для проекта с помощью программы, которую предпочитаете.
В портал Azure найдите имя учетной записи хранения или найдите ее в списке учетных записей хранения.
В учетной записи хранения выберите Контейнеры вХранилище данных.
Выберите + Контейнер, чтобы создать контейнер большого двоичного объекта в вашей учетной записи.
На странице "Создать контейнер" укажите имя (например, развертывания), убедитесь, что уровень анонимного доступа является закрытым, а затем нажмите кнопку "Создать".
Выберите созданный контейнер, выберите "Отправить", перейдите к расположению файла .zip, созданного в проекте, и нажмите кнопку "Отправить".
После завершения загрузки выберите отправленный большой двоичный объект и скопируйте URL-адрес. Если вы не используете управляемое удостоверение, может потребоваться создать URL-адрес SAS.
Найдите приложение-функцию или выберите его на странице приложения-функции.
В приложении-функции разверните узел "Параметры" и выберите переменные среды.
На вкладке "Параметры приложения" нажмите кнопку "+ Добавить".
Введите значение
WEBSITE_RUN_FROM_PACKAGE
имени и вставьте URL-адрес пакета в хранилище BLOB-объектов для значения.Выберите "Применить", а затем нажмите кнопку "Применить" и "Подтвердить", чтобы сохранить параметр и перезапустить приложение-функцию.
Теперь можно запустить функцию в Azure, чтобы убедиться, что развертывание пакета развертывания .zip файла выполнено успешно.
Получение пакета из Хранилища BLOB-объектов Azure с помощью управляемого удостоверения
Вы можете настроить Хранилище BLOB-объектов Azure для авторизации запросов с помощью идентификатора Microsoft Entra. Эта конфигурация означает, что вместо создания ключа 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}
или аналогичным.