Управление приложением-функцией

В функциях Azure приложение-функция предоставляет контекст выполнения для отдельных функций. Поведение приложения-функции применяется ко всем содержащимся в нем функциям. Все функции в приложении-функции должны использовать один и тот же язык.

Отдельные функции в приложении-функции развертываются и масштабируются вместе. Все функции в одном и том же приложении-функции совместно используют ресурсы для каждого экземпляра по мере масштабирования приложения-функции.

Строки подключения, переменные среды и другие параметры приложения определяются отдельно для каждого приложения-функции. Все данные, которые должны совместно использоваться приложениями-функциями, должны храниться на внешних ресурсах в постоянном хранилище.

Начните работу на портале Azure

Примечание.

Из-за ограничений на редактирование кода функции в портал Azure следует разрабатывать функции локально и публиковать проект кода в приложении-функции в Azure. Дополнительные сведения см. в разделе об ограничениях разработки в портал Azure

  1. Для начала войдите в портал Azure с помощью учетной записи Azure. На панели поиска в верхней части портала введите имя приложения-функции и выберите его в списке.

  2. В разделе Параметры в левой области выберите Конфигурация.

    Function app overview in the Azure portal

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

Работа с параметрами приложения

Вы можете создать любое количество параметров приложения, требуемых вашим кодом функции. Существуют также предопределенные параметры приложений, используемые Функциями. Дополнительные сведения см. в статье Справочник по параметрам приложений для Функций Azure.

Эти параметры хранятся в зашифрованном виде. Подробнее см. в разделе Безопасность параметров приложения.

Параметрами приложения можно управлять на портале Microsoft Azure и с помощью Azure CLI и Azure PowerShell. Для этого также можно использовать Visual Studio Code и Visual Studio.

Чтобы найти параметры приложения, см. раздел Начало работы на портале Microsoft Azure.

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

Function app settings in the Azure portal.

Использование параметров приложения

Эти значения параметров приложения-функции также могут считываться в коде как переменные среды. Дополнительные сведения см. в разделе о переменных среды в этих справочниках для определенного языка:

При разработке приложения-функции локально необходимо сохранить локальные копии этих значений в файле проекта local.settings.json. Подробнее см. в разделе Локальный файл параметров.

Параметры развертывания FTPS

Функции Azure поддерживает развертывание кода проекта в приложении-функции с помощью FTPS. Так как этот метод развертывания требует синхронизации триггеров, этот метод не рекомендуется. Для безопасной передачи файлов проекта всегда используйте FTPS, а не FTP.

Учетные данные, необходимые для развертывания FTPS, можно получить с помощью одного из следующих методов:

Учетные данные публикации FTPS можно получить в портал Azure, скачав профиль публикации для приложения-функции.

Внимание

Профиль публикации содержит важные учетные данные безопасности. Вы всегда должны защитить скачанный файл на локальном компьютере.

Чтобы скачать профиль публикации приложения-функции, сделайте следующее:

  1. Выберите страницу Обзор приложения-функции, затем выберите Получить профиль публикации.

    Download publish profile

  2. Сохраните и скопируйте содержимое файла.

  1. В файле найдите publishProfile элемент с атрибутом publishMethod="FTP". В этом элементе publishUrluserNameатрибуты и userPWD атрибуты содержат целевой URL-адрес и учетные данные для публикации FTPS.

Тип плана размещения

При создании приложения-функции вы также создаете план размещения, в котором выполняется приложение. План может содержать одно или несколько приложений-функций. Функциональные возможности, масштабирование и цены на функции зависят от типа плана. Подробнее см. в разделе Варианты размещения в Функциях Azure.

Вы можете определить тип плана, используемого приложением-функцией, на портале Microsoft Azure или с помощью программных интерфейсов Azure CLI или Azure PowerShell.

Тип плана определяется следующими значениями:

Тип плана Портал Azure CLI/PowerShell
Потребление Потребление Dynamic
Премиум Эластичный Премиум ElasticPremium
Выделенный (Служба приложений) Various Various

Чтобы определить тип плана, используемый приложением-функцией, на портале Microsoft Azure просмотрите для приложения-функции раздел План службы приложений на вкладке Обзор. Чтобы просмотреть ценовую категорию, выберите имя плана службы приложений, а затем в области слева выберите Свойства.

View scaling plan in the portal

Планирование миграции

Вы можете использовать команды портал Azure или Azure CLI для переноса приложения-функции между планом потребления и планом "Премиум" в Windows. При миграции между планами помните следующее:

  • Прямой перенос в план "Выделенный (Служба приложений)" сейчас не поддерживается.
  • Миграция не поддерживается в Linux.
  • Исходный план и целевой план должны находиться в одной группе ресурсов и географическом регионе. Дополнительные сведения см. в разделе о перемещении приложения в другой план службы приложений.
  • Определенные команды CLI зависят от направления миграции.
  • Время простоя в выполнении функции происходит, так как приложение-функция переносится между планами.
  • Поддерживается состояние и другое содержимое для конкретного приложения, так как один и тот же Файлы Azure общий ресурс используется приложением до и после миграции.

Миграция на портале

В портал Azure перейдите к приложению плана "Потребление" или "Премиум" и выберите "Изменить Служба приложений" в Служба приложений плане. Выберите другой тип плана, создайте новый Служба приложений план нового типа и нажмите кнопку "ОК". Дополнительные сведения см. в разделе о перемещении приложения в другой план службы приложений.

Из плана "Потребление" в план "Премиум"

Для переноса из плана "Потребление" в план "Премиум" в системе Windows используйте следующую процедуру.

  1. Выполните команду az functionapp plan create, чтобы создать новый план Службы приложений ("Эластичный Премиум") в тех же регионе и группе ресурсов, в которых находится существующее приложение-функция.

    az functionapp plan create --name <NEW_PREMIUM_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP> --location <REGION> --sku EP1
    
  2. Выполните команду az functionapp update, чтобы перенести существующее приложение-функцию в новый план "Премиум".

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_PREMIUM_PLAN>
    
  3. Если предыдущий план "Потребление" приложения-функции больше не нужен, удалите исходный план приложения-функции после подтверждения успешного перехода на новый. Выполните команду az functionapp plan list, чтобы получить список всех планов "Потребление" в группе ресурсов.

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='Y'].{PlanName:name,Sites:numberOfSites}" -o table
    

    Вы можете безопасно удалить план с нулевым количеством сайтов (это тот план, из которого вы перешли).

  4. Выполните команду az functionapp plan delete, как показано ниже, чтобы удалить перенесенный план "Потребление".

    az functionapp plan delete --name <CONSUMPTION_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP>
    

Из плана "Премиум" в план "Потребление"

Для переноса из плана "Премиум" в план "Потребление" в системе Windows используйте следующую процедуру.

  1. Выполните команду az functionapp plan create, чтобы создать приложение-функцию ("Потребление") в тех же регионе и группе ресурсов, в которых находится существующее приложение-функция. Эта команда также создает новый план "Потребление", в котором выполняется приложение-функция.

    az functionapp create --resource-group <MY_RESOURCE_GROUP> --name <NEW_CONSUMPTION_APP_NAME> --consumption-plan-location <REGION> --runtime dotnet --functions-version 3 --storage-account <STORAGE_NAME>
    
  2. Выполните команду az functionapp update, чтобы перенести существующее приложение-функцию в новый план "Потребление".

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_CONSUMPTION_PLAN> --force
    
  3. Выполните команду az functionapp delete, чтобы удалить приложение-функцию, созданное на шаге 1, так как вам понадобится только план, созданный для выполнения существующего приложения-функции.

    az functionapp delete --name <NEW_CONSUMPTION_APP_NAME> --resource-group <MY_RESOURCE_GROUP>
    
  4. Если вы предыдущий план "Премиум" приложения-функции больше не нужен, удалите исходный план после подтверждения успешного перехода в новый. Пока план Premium не будет удален, плата за него будет взиматься. Выполните команду az functionapp plan list, чтобы получить список всех планов "Премиум" в группе ресурсов.

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='EP'].{PlanName:name,Sites:numberOfSites}" -o table
    
  5. Выполните команду az functionapp plan delete, как показано ниже, чтобы удалить перенесенный план "Премиум".

    az functionapp plan delete --name <PREMIUM_PLAN> --resource-group <MY_RESOURCE_GROUP>
    

Получение ключей доступа к функции

Функции для триггеров HTTP обычно можно вызывать с помощью URL-адреса в формате https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. Если для авторизации функции задано значение, отличное от anonymous, необходимо также предоставить в запросе ключ доступа. Ключ доступа можно указать в URL-адресе, используя строку запроса ?code=, или в заголовке запроса. Дополнительные сведения о ключах доступа к функциям см. здесь. Получить ключи доступа можно несколькими способами.

  1. Войдите на портал Azure, а затем найдите и выберите Приложение-функция.

  2. Выберите функцию, которую нужно проверить.

  3. В области навигации слева в разделе Функции выберите Ключи приложения.

    Отобразятся ключи узла, которые можно использовать для доступа к любой функции в приложении. Кроме того, отобразится системный ключ, который предоставляет доступ на уровне администратора ко всем интерфейсам API приложения-функции.

Вы можете также предоставить минимальные привилегии с помощью ключа только для конкретной функции, выбрав Ключи функции в разделе Разработчик в функции для триггеров HTTP.

Ограничения разработки в портал Azure

При разработке функций в портал Azure необходимо учитывать следующие ограничения:

  • Редактирование на портале поддерживается только для функций скриптов JavaScript, PowerShell, Python и C#.
  • Редактирование Python на портале поддерживается только при выполнении в плане потребления.
  • В настоящее время редактирование на портале поддерживается только для созданных или последних измененных функций на портале.
  • При развертывании кода в приложении-функции на портале больше не удается изменить любой код для этого приложения-функции на портале. В этом случае просто продолжайте использовать локальную разработку.
  • Для скомпилированных функций C#, функций Java и некоторых функций Python можно создать приложение-функцию и связанные ресурсы на портале. Однако необходимо создать проект кода функций локально, а затем опубликовать его в Azure.

По возможности следует разрабатывать функции локально и публиковать проект кода в приложении-функции в Azure. Дополнительные сведения см. в статье Как программировать и тестировать Функции Azure в локальной среде.

Установка расширений вручную

Функции библиотеки классов C# могут включать пакеты NuGet для расширений привязки непосредственно в проекте библиотеки классов. Для других non-.NET языков и скриптов C# следует использовать пакеты расширений. Если необходимо вручную установить расширения, это можно сделать с помощью Функции Azure Core Tools локально. Если вы не можете использовать пакеты расширений и работаете только на портале, необходимо вручную создать файл extensions.csproj непосредственно на сайте с помощью расширенных инструментов (Kudu). Сначала удалите элемент extensionBundle из файла host.json.

Этой же процедурой можно воспользоваться для любого другого файла, который необходимо добавить в приложение.

Внимание

По возможности не редактируйте файлы непосредственно в приложении-функции в Azure. Рекомендуется скачивать файлы приложения локально, использовать Core Tools для установки расширений и других пакетов, проверять изменения, а затем повторно публиковать приложение с помощью Core Tools или другого поддерживаемого метода развертывания.

Редактор функций, встроенный в портал Azure, позволяет обновлять код функции и файлы конфигурации непосредственно на портале.

  1. Выберите приложение-функцию, а затем в разделе Функции выберите Функции.
  2. Выберите функцию и нажмите Код и тестирование в разделе Разработчик.
  3. Выберите файл для редактирования и нажмите кнопку Сохранить, когда все будет готово.

Файлы в корне приложения, такие как function.proj или extensions.csproj, необходимо создать и отредактировать с помощью расширенных инструментов (Kudu).

  1. В меню ресурсов приложения-функции в разделе Средства разработки выберите Расширенные инструменты>Перейти.

  2. При появлении запроса войдите на сайт SCM с помощью учетных данных Azure.

  3. В меню консоли отладки выберите CMD.

  4. Перейдите в .\site\wwwroot, нажмите кнопку "плюс" (+) вверху и выберите Создать файл.

  5. Назовите файл (например, extensions.csproj) и нажмите клавишу ВВОД.

  6. Нажмите кнопку редактирования рядом с новым файлом, добавьте или обновите код в нем и выберите Сохранить.

  7. Для файла проекта, например extensions.csproj, выполните следующую команду, чтобы перестроить проект расширений:

    dotnet build extensions.csproj
    

Функции платформы

Приложения-функции выполняются на платформе Службы приложений Azure и обслуживаются ею. Поэтому они имеют доступ к большинству функций базовой платформы веб-хостинга Azure. При работе на портале Azure левая область предоставляет доступ ко многим функциям платформы Службы приложений Azure, которые можно использовать в приложениях-функциях.

Следующая таблица описывает поддержку функций портала в зависимости от плана размещения и операционной системы:

Функция План потребления План категории "Премиум" План ценовой категории "Выделенный"
Дополнительные инструменты (Kudu) Windows: ✔
Linux: X
Редактор службы приложений Windows: ✔
Linux: X
Windows: ✔
Linux: X
Windows: ✔
Linux: X
Резервные копии X X
Консоль Windows: командная строка
Linux: X
Windows: командная строка
Linux: SSH
Windows: командная строка
Linux: SSH

Ниже приводится более подробное описание следующих функций на портале, которые могут пригодиться при работе с приложениями-функциями:

Дополнительные сведения о работе с параметрами службы приложений см. в статье Настройка параметров в службе приложений Azure.

Редактор службы приложений

The App Service editor

Редактор службы приложений — это расширенный редактор на портале, который можно использовать для изменения JSON-файлов конфигурации и файлов с кодом. При выборе этого параметра откроется отдельная вкладка браузера с базовым редактором. Он позволяет выполнять интеграцию с репозиторием Git, запускать и отлаживать код и изменять параметры приложения-функции. Этот редактор предоставляет расширенную среду разработки для функций по сравнению со встроенным редактором функций.

Мы рекомендуем разрабатывать функции на локальном компьютере. Если вы ведете разработку локально и публикуете в Azure, файлы проекта на портале доступны только для чтения. Подробнее см. в статье Программирование и тестирование Функций Azure в локальной среде.

Консоль

Function app console

Консоль на портале оптимально подходит разработчикам, желающим взаимодействовать с приложением-функцией из командной строки. Стандартные команды включают создание каталогов и файлов и навигацию по ним, а также выполнение пакетных файлов и сценариев.

При локальной разработке мы рекомендуем использовать Azure Functions Core Tools и Azure CLI.

Дополнительные инструменты (Kudu)

Configure Kudu

Дополнительные средства для службы приложений (которые также называются Kudu) предоставляют доступ к расширенным административным функциям для приложения-функции. С помощью Kudu можно управлять системными сведениями, параметрами приложения, переменными среды, заголовками HTTP и переменными сервера. Кроме того, можно также запустить Kudu, перейдя на конечную точку SCM для приложения-функции, например https://<myfunctionapp>.scm.azurewebsites.net/.

Центр развертывания

Если вы используете систему управления версиями для разработки и сопровождения кода функции, Центр развертывания позволяет выполнять сборку и развертывание из системы управления версиями. После внесения обновлений будет выполнены сборка и развертывание проекта в Azure. Дополнительные сведения см. в статье Технологии развертывания в Функциях Azure.

Предоставление общего доступа к ресурсам независимо от источника

Чтобы предотвратить выполнение вредоносного кода на клиенте, современные браузеры блокируют запросы от веб-приложений к ресурсам, выполняемым в отдельном домене. Общий доступ к ресурсам независимо от источника (CORS) позволяет заголовку Access-Control-Allow-Origin объявить, какие источники могут вызывать конечные точки в вашем приложении-функции.

Портал

При настройке списка разрешенных источников для приложения-функции ко всем ответам от конечных точек HTTP в приложении-функции автоматически добавляется заголовок Access-Control-Allow-Origin.

Configure function app's CORS list

Дикий карта (*) игнорируется, если есть другая запись домена.

Используйте команду az functionapp cors add, чтобы добавить домен в список разрешенных источников. В следующем примере добавляется домен contoso.com:

az functionapp cors add --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--allowed-origins https://contoso.com

Используйте команду az functionapp cors show для вывода списка текущих разрешенных источников.

Проверка подлинности

Configure authentication for a function app

Если функции используют триггер HTTP, можно настроить обязательную предварительную проверку подлинности для вызовов. Служба приложений поддерживает проверку подлинности Microsoft Entra и вход с помощью социальных поставщиков, таких как Facebook, Microsoft и Twitter. Дополнительные сведения о настройке определенных поставщиков аутентификации см. в разделе Проверка подлинности и авторизация в службе приложений Azure.

Следующие шаги