Поделиться через


Запуск функций из файла пакета в 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 в корне извлеченной папки. Выбранный стек языков для приложения-функции создает дополнительные требования:

Внимание

Для языков, создающих скомпилированные выходные данные для развертывания, обязательно сжимайте содержимое выходной папки, которую планируется опубликовать, а не всю папку проекта. Когда Функции извлекают содержимое 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-объектов:

  1. Создайте пакет .zip для проекта с помощью программы, которую предпочитаете.

  2. В портал Azure найдите имя учетной записи хранения или найдите ее в списке учетных записей хранения.

  3. В учетной записи хранения выберите Контейнеры вХранилище данных.

  4. Выберите + Контейнер, чтобы создать контейнер большого двоичного объекта в вашей учетной записи.

  5. На странице "Создать контейнер" укажите имя (например, развертывания), убедитесь, что уровень анонимного доступа является закрытым, а затем нажмите кнопку "Создать".

  6. Выберите созданный контейнер, выберите "Отправить", перейдите к расположению файла .zip, созданного в проекте, и нажмите кнопку "Отправить".

  7. После завершения загрузки выберите отправленный большой двоичный объект и скопируйте URL-адрес. Если вы не используете управляемое удостоверение, может потребоваться создать URL-адрес SAS.

  8. Найдите приложение-функцию или выберите его на странице приложения-функции.

  9. В приложении-функции разверните узел "Параметры" и выберите переменные среды.

  10. На вкладке "Параметры приложения" нажмите кнопку "+ Добавить".

  11. Введите значение WEBSITE_RUN_FROM_PACKAGE имени и вставьте URL-адрес пакета в хранилище BLOB-объектов для значения.

  12. Выберите "Применить", а затем нажмите кнопку "Применить" и "Подтвердить", чтобы сохранить параметр и перезапустить приложение-функцию.

Теперь можно запустить функцию в Azure, чтобы убедиться, что развертывание пакета развертывания .zip файла выполнено успешно.

Получение пакета из Хранилища BLOB-объектов Azure с помощью управляемого удостоверения

Вы можете настроить Хранилище BLOB-объектов Azure для авторизации запросов с помощью идентификатора Microsoft Entra. Эта конфигурация означает, что вместо создания ключа SAS с истечением срока действия можно использовать управляемое удостоверение приложения. По умолчанию используется назначаемое системой удостоверение приложения. Если вы хотите указать назначаемое пользователем удостоверение, можно задать параметр приложения WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID для ИД ресурса этого удостоверения. Параметр также может принимать SystemAssigned в качестве значения, что эквивалентно опущению параметра.

Чтобы разрешить получение пакета с помощью удостоверения, выполните следующие действия:

  1. Убедитесь, что большой двоичный объект настроен для частного доступа.

  2. Предоставьте удостоверению роль Читатель данных больших двоичных объектов хранилища с областью действия для большого двоичного объекта пакета. Дополнительные сведения о создании назначения ролей см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.

  3. Задайте параметр приложения WEBSITE_RUN_FROM_PACKAGE для URL-адреса большого двоичного объекта пакета. Этот URL-адрес обычно является формой https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package} или аналогичным.