Запуск функций из файла пакета в Azure
В Azure можно запустить функции непосредственно из файла пакета развертывания в приложении-функции. Другой вариант — развернуть файлы в каталоге d:\home\site\wwwroot
(Windows) или /home/site/wwwroot
(Linux) функции-приложения.
В этой статье описываются преимущества запуска функций из пакета. Здесь также показано, как включить эту функцию в приложении-функции.
Преимущества запуска из файла пакета
Запуск функции из файла пакета обеспечивает несколько преимуществ:
- Снижается риск возникновения проблем из-за блокировки копирования файлов.
- Можно выполнить развертывание в рабочее приложение (с помощью перезапуска).
- Обеспечивается надежность файлов, выполняемых в приложении.
- Повышается производительность развертываний Azure Resource Manager.
- Может сократиться время "холодного запуска", особенно для функций JavaScript с большими деревьями пакетов npm.
Дополнительные сведения см. в этом объявлении.
Настройка запуска функций из пакета
Чтобы настроить запуск приложения-функции из пакета, добавьте WEBSITE_RUN_FROM_PACKAGE
в параметрах приложения-функции. Параметр WEBSITE_RUN_FROM_PACKAGE
может иметь одно из следующих значений:
Стоимость | Description |
---|---|
1 |
Указывает, что приложение-функция выполняется из локального файла пакета, развернутого в d:\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, как описано здесь. Во время развертывания ARM-MSDeploy Deploy Failed
вы получите ошибку. Измените /MSDeploy на /ZipDeploy, и эта ошибка будет устранена.
Добавление параметра WEBSITE_RUN_FROM_PACKAGE
Существует несколько способов для добавления, обновления и удаления параметров приложения-функции.
После изменения параметров приложения-функции нужно перезапустить приложение-функцию.
Использование WEBSITE_RUN_FROM_PACKAGE = 1
В этом разделе содержатся сведения о том, как запустить приложение-функцию из локального файла пакета.
Рекомендации по развертыванию из пакета на сайте
- Использование локального пакета на сайте является рекомендуемым вариантом запуска из пакета развертывания, за исключением работы с Linux, размещенной в плане потребления.
- Развертывание ZIP — это рекомендуемый способ загрузки пакета развертывания на сайт.
- Если развертывание ZIP не используется, убедитесь, что в папке
d:\home\data\SitePackages
(Windows) или/home/data/SitePackages
(Linux) есть файл с именемpackagename.txt
. Этот файл содержит только имя (без пробелов) файла пакета в этой папке, которая выполняется в данный момент.
Интеграция с помощью развертывания из ZIP-файла
Развертывание из ZIP-файла — это функция Службы приложений Azure, которая позволяет развертывать проект приложения-функции в каталог wwwroot
. Проект упакован как ZIP-файл развертывания. Те же API можно использовать для развертывания пакета в папку d:\home\data\SitePackages
(Windows) или /home/data/SitePackages
(Linux).
Если для WEBSITE_RUN_FROM_PACKAGE
параметра приложения задано значение 1
, API-интерфейсы ZIP-развертывания копируют пакет в папку d:\home\data\SitePackages
(Windows) или /home/data/SitePackages
(Linux), а не извлекают файлы в d:\home\site\wwwroot
(Windows) или /home/site/wwwroot
(Linux). Также создается файл packagename.txt
. После перезагрузки пакет монтируется в wwwroot
в виде файловой системы, предназначенной только для чтения. Дополнительные сведения о развертывании из ZIP-файла см. в статье Непрерывное развертывание Функций Azure из ZIP-файла.
Примечание.
Когда происходит развертывание, выполняется перезапуск приложения-функции. Выполнение текущих функций во время развертывания прекращается. Ознакомьтесь с разделом Повышение производительности и надежности Функций Azure, чтобы узнать, как создавать защищенные функции и функции без отслеживания состояния.
Использование WEBSITE_RUN_FROM_PACKAGE
В этом разделе содержатся сведения о том, как запустить приложение-функцию из пакета, развернутого в URL-адресе конечной точки. Этот параметр поддерживается только для запуска из пакета в Linux, размещенного в плане потребления.
Рекомендации по развертыванию из URL-адреса
- При запуске приложения-функции на Windows параметр
WEBSITE_RUN_FROM_PACKAGE = <URL>
приложения обеспечивает более низкую производительность холодного запуску и не рекомендуется. - При указании URL-адреса необходимо также вручную синхронизировать триггеры после публикации обновленного пакета.
- Среда выполнения Функций должна иметь разрешения на доступ к URL-адресу пакета.
- Не следует развертывать пакет для хранилища BLOB-объектов Azure как общедоступный BLOB-объект. Вместо этого следует использовать закрытый контейнер с подписанным URL-адресом (SAS) или управляемое удостоверение, чтобы предоставить среде выполнения Функций доступ к пакету.
- Необходимо поддерживать все URL-адреса SAS, используемые для развертывания. По истечении срока действия SAS пакет больше не может быть развернут. В этом случае необходимо создать новый SAS и обновить параметр в приложении-функции. Это бремя управления можно устранить с помощью управляемого удостоверения.
- При выполнении в плане Premium не забудьте исключить холодные запуски.
- При выполнении в выделенном плане убедитесь, что вы включили Always On.
- Можно использовать Обозреватель службы хранилища Azure для передачи файлов пакета в учетную запись хранения контейнеров больших двоичных объектов.
Отправка пакета вручную в хранилище BLOB-объектов
Чтобы развернуть zip-пакет, используя параметр URL-адреса, необходимо создать сжатый пакет развертывания в формате .zip и загрузить его в место назначения. В этом примере выполняется развертывание в контейнер в службе хранилища BLOB-объектов.
Создайте пакет .zip для проекта с помощью программы, которую предпочитаете.
На портале Azure найдите имя учетной записи хранения или найдите ее в учетных записях хранения.
В учетной записи хранения выберите Контейнеры вХранилище данных.
Выберите + Контейнер, чтобы создать контейнер большого двоичного объекта в вашей учетной записи.
На странице Создать контейнер укажите Имя (например, "развертывания"), убедитесь, что Уровень общего доступазакрыт, и нажмите кнопку Создать.
Выберите созданный контейнер, щелкните Загрузить, перейдите к расположению файла .zip, созданного в проекте, и выберите Загрузить.
После завершения загрузки выберите отправленный большой двоичный объект и скопируйте URL-адрес. Возможно, потребуется создать URL-адрес SAS, если вы не используете удостоверение
Найдите приложение-функцию или выберите его на странице приложения-функции.
Для приложения-функции выберите Конфигурация в разделе Параметры.
На вкладке Параметры приложения выберите Новый параметр приложения.
Введите значение
WEBSITE_RUN_FROM_PACKAGE
Имени и вставьте URL-адрес пакета в хранилище BLOB-объектов в качестве значения.Нажмите ОК. Затем нажмите кнопку Сохранить>Продолжить, чтобы сохранить параметр и перезапустить приложение.
Теперь вы можете запустить функцию в Azure, чтобы убедиться, что развертывание прошло успешно с помощью пакета развертывания .zip файла.
Далее показано приложение-функция, настроенное для запуска из ZIP-файла, размещенного в хранилище BLOB-объектов Azure:
Получение пакета из Хранилища 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://{имя_учетной_записи_хранения}.blob.core.windows.net/{имя_контейнера}/{путь_к_пакету} (или подобном).