Управление приложением-функцией
В функциях Azure приложение-функция предоставляет контекст выполнения для отдельных функций. Поведение приложения-функции применяется ко всем содержащимся в нем функциям. Все функции в приложении-функции должны использовать один и тот же язык.
Отдельные функции в приложении-функции развертываются и масштабируются вместе. Все функции в одном и том же приложении-функции совместно используют ресурсы для каждого экземпляра по мере масштабирования приложения-функции.
Строки подключения, переменные среды и другие параметры приложения определяются отдельно для каждого приложения-функции. Все данные, которые должны совместно использоваться приложениями-функциями, должны храниться на внешних ресурсах в постоянном хранилище.
Начните работу на портале Azure
Примечание.
Из-за ограничений на редактирование кода функции в портал Azure следует разрабатывать функции локально и публиковать проект кода в приложении-функции в Azure. Дополнительные сведения см. в разделе об ограничениях разработки в портал Azure
Для начала войдите в портал Azure с помощью учетной записи Azure. На панели поиска в верхней части портала введите имя приложения-функции и выберите его в списке.
В разделе Параметры в левой области выберите Конфигурация.
Все необходимое для управления приложением-функцией можно выбрать на странице обзора, в частности Параметры приложения и Функции платформы.
Работа с параметрами приложения
Вы можете создать любое количество параметров приложения, требуемых вашим кодом функции. Существуют также предопределенные параметры приложений, используемые Функциями. Дополнительные сведения см. в статье Справочник по параметрам приложений для Функций Azure.
Эти параметры хранятся в зашифрованном виде. Подробнее см. в разделе Безопасность параметров приложения.
Параметрами приложения можно управлять на портале Microsoft Azure и с помощью Azure CLI и Azure PowerShell. Для этого также можно использовать Visual Studio Code и Visual Studio.
Чтобы найти параметры приложения, см. раздел Начало работы на портале Microsoft Azure.
Вкладка Параметры приложения содержит параметры, используемые приложением-функцией. Для просмотра значений на портале выберите Показать значения. Чтобы добавить параметр на портале, выберите Создать параметр приложения и добавьте новую пару "ключ-значение".
Использование параметров приложения
Эти значения параметров приложения-функции также могут считываться в коде как переменные среды. Дополнительные сведения см. в разделе о переменных среды в этих справочниках для определенного языка:
При разработке приложения-функции локально необходимо сохранить локальные копии этих значений в файле проекта local.settings.json. Подробнее см. в разделе Локальный файл параметров.
Параметры развертывания FTPS
Функции Azure поддерживает развертывание кода проекта в приложении-функции с помощью FTPS. Так как этот метод развертывания требует синхронизации триггеров, этот метод не рекомендуется. Для безопасной передачи файлов проекта всегда используйте FTPS, а не FTP.
Учетные данные, необходимые для развертывания FTPS, можно получить с помощью одного из следующих методов:
Учетные данные публикации FTPS можно получить в портал Azure, скачав профиль публикации для приложения-функции.
Внимание
Профиль публикации содержит важные учетные данные безопасности. Вы всегда должны защитить скачанный файл на локальном компьютере.
Чтобы скачать профиль публикации приложения-функции, сделайте следующее:
Выберите страницу Обзор приложения-функции, затем выберите Получить профиль публикации.
Сохраните и скопируйте содержимое файла.
- В файле найдите
publishProfile
элемент с атрибутомpublishMethod="FTP"
. В этом элементеpublishUrl
userName
атрибуты иuserPWD
атрибуты содержат целевой URL-адрес и учетные данные для публикации FTPS.
Тип плана размещения
При создании приложения-функции вы также создаете план размещения, в котором выполняется приложение. План может содержать одно или несколько приложений-функций. Функциональные возможности, масштабирование и цены на функции зависят от типа плана. Подробнее см. в разделе Варианты размещения в Функциях Azure.
Вы можете определить тип плана, используемого приложением-функцией, на портале Microsoft Azure или с помощью программных интерфейсов Azure CLI или Azure PowerShell.
Тип плана определяется следующими значениями:
Тип плана | Портал | Azure CLI/PowerShell |
---|---|---|
Потребление | Потребление | Dynamic |
Премиум | Эластичный Премиум | ElasticPremium |
Выделенный (Служба приложений) | Various | Various |
Чтобы определить тип плана, используемый приложением-функцией, на портале Microsoft Azure просмотрите для приложения-функции раздел План службы приложений на вкладке Обзор. Чтобы просмотреть ценовую категорию, выберите имя плана службы приложений, а затем в области слева выберите Свойства.
Планирование миграции
Вы можете использовать команды портал Azure или Azure CLI для переноса приложения-функции между планом потребления и планом "Премиум" в Windows. При миграции между планами помните следующее:
- Прямой перенос в план "Выделенный (Служба приложений)" сейчас не поддерживается.
- Миграция не поддерживается в Linux.
- Исходный план и целевой план должны находиться в одной группе ресурсов и географическом регионе. Дополнительные сведения см. в разделе о перемещении приложения в другой план службы приложений.
- Определенные команды CLI зависят от направления миграции.
- Время простоя в выполнении функции происходит, так как приложение-функция переносится между планами.
- Поддерживается состояние и другое содержимое для конкретного приложения, так как один и тот же Файлы Azure общий ресурс используется приложением до и после миграции.
Миграция на портале
В портал Azure перейдите к приложению плана "Потребление" или "Премиум" и выберите "Изменить Служба приложений" в Служба приложений плане. Выберите другой тип плана, создайте новый Служба приложений план нового типа и нажмите кнопку "ОК". Дополнительные сведения см. в разделе о перемещении приложения в другой план службы приложений.
Из плана "Потребление" в план "Премиум"
Для переноса из плана "Потребление" в план "Премиум" в системе Windows используйте следующую процедуру.
Выполните команду az functionapp plan create, чтобы создать новый план Службы приложений ("Эластичный Премиум") в тех же регионе и группе ресурсов, в которых находится существующее приложение-функция.
az functionapp plan create --name <NEW_PREMIUM_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP> --location <REGION> --sku EP1
Выполните команду az functionapp update, чтобы перенести существующее приложение-функцию в новый план "Премиум".
az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_PREMIUM_PLAN>
Если предыдущий план "Потребление" приложения-функции больше не нужен, удалите исходный план приложения-функции после подтверждения успешного перехода на новый. Выполните команду az functionapp plan list, чтобы получить список всех планов "Потребление" в группе ресурсов.
az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='Y'].{PlanName:name,Sites:numberOfSites}" -o table
Вы можете безопасно удалить план с нулевым количеством сайтов (это тот план, из которого вы перешли).
Выполните команду az functionapp plan delete, как показано ниже, чтобы удалить перенесенный план "Потребление".
az functionapp plan delete --name <CONSUMPTION_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP>
Из плана "Премиум" в план "Потребление"
Для переноса из плана "Премиум" в план "Потребление" в системе Windows используйте следующую процедуру.
Выполните команду 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>
Выполните команду az functionapp update, чтобы перенести существующее приложение-функцию в новый план "Потребление".
az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_CONSUMPTION_PLAN> --force
Выполните команду az functionapp delete, чтобы удалить приложение-функцию, созданное на шаге 1, так как вам понадобится только план, созданный для выполнения существующего приложения-функции.
az functionapp delete --name <NEW_CONSUMPTION_APP_NAME> --resource-group <MY_RESOURCE_GROUP>
Если вы предыдущий план "Премиум" приложения-функции больше не нужен, удалите исходный план после подтверждения успешного перехода в новый. Пока план Premium не будет удален, плата за него будет взиматься. Выполните команду az functionapp plan list, чтобы получить список всех планов "Премиум" в группе ресурсов.
az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='EP'].{PlanName:name,Sites:numberOfSites}" -o table
Выполните команду 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=
, или в заголовке запроса. Дополнительные сведения о ключах доступа к функциям см. здесь. Получить ключи доступа можно несколькими способами.
Войдите на портал Azure, а затем найдите и выберите Приложение-функция.
Выберите функцию, которую нужно проверить.
В области навигации слева в разделе Функции выберите Ключи приложения.
Отобразятся ключи узла, которые можно использовать для доступа к любой функции в приложении. Кроме того, отобразится системный ключ, который предоставляет доступ на уровне администратора ко всем интерфейсам 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, позволяет обновлять код функции и файлы конфигурации непосредственно на портале.
- Выберите приложение-функцию, а затем в разделе Функции выберите Функции.
- Выберите функцию и нажмите Код и тестирование в разделе Разработчик.
- Выберите файл для редактирования и нажмите кнопку Сохранить, когда все будет готово.
Файлы в корне приложения, такие как function.proj или extensions.csproj, необходимо создать и отредактировать с помощью расширенных инструментов (Kudu).
В меню ресурсов приложения-функции в разделе Средства разработки выберите Расширенные инструменты>Перейти.
При появлении запроса войдите на сайт SCM с помощью учетных данных Azure.
В меню консоли отладки выберите CMD.
Перейдите в
.\site\wwwroot
, нажмите кнопку "плюс" (+) вверху и выберите Создать файл.Назовите файл (например,
extensions.csproj
) и нажмите клавишу ВВОД.Нажмите кнопку редактирования рядом с новым файлом, добавьте или обновите код в нем и выберите Сохранить.
Для файла проекта, например 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 |
Ниже приводится более подробное описание следующих функций на портале, которые могут пригодиться при работе с приложениями-функциями:
- Редактор службы приложений
- Консоль
- Дополнительные инструменты (Kudu)
- Варианты развертывания
- CORS
- Аутентификация
Дополнительные сведения о работе с параметрами службы приложений см. в статье Настройка параметров в службе приложений Azure.
Редактор службы приложений
Редактор службы приложений — это расширенный редактор на портале, который можно использовать для изменения JSON-файлов конфигурации и файлов с кодом. При выборе этого параметра откроется отдельная вкладка браузера с базовым редактором. Он позволяет выполнять интеграцию с репозиторием Git, запускать и отлаживать код и изменять параметры приложения-функции. Этот редактор предоставляет расширенную среду разработки для функций по сравнению со встроенным редактором функций.
Мы рекомендуем разрабатывать функции на локальном компьютере. Если вы ведете разработку локально и публикуете в Azure, файлы проекта на портале доступны только для чтения. Подробнее см. в статье Программирование и тестирование Функций Azure в локальной среде.
Консоль
Консоль на портале оптимально подходит разработчикам, желающим взаимодействовать с приложением-функцией из командной строки. Стандартные команды включают создание каталогов и файлов и навигацию по ним, а также выполнение пакетных файлов и сценариев.
При локальной разработке мы рекомендуем использовать Azure Functions Core Tools и Azure CLI.
Дополнительные инструменты (Kudu)
Дополнительные средства для службы приложений (которые также называются Kudu) предоставляют доступ к расширенным административным функциям для приложения-функции. С помощью Kudu можно управлять системными сведениями, параметрами приложения, переменными среды, заголовками HTTP и переменными сервера. Кроме того, можно также запустить Kudu, перейдя на конечную точку SCM для приложения-функции, например https://<myfunctionapp>.scm.azurewebsites.net/
.
Центр развертывания
Если вы используете систему управления версиями для разработки и сопровождения кода функции, Центр развертывания позволяет выполнять сборку и развертывание из системы управления версиями. После внесения обновлений будет выполнены сборка и развертывание проекта в Azure. Дополнительные сведения см. в статье Технологии развертывания в Функциях Azure.
Предоставление общего доступа к ресурсам независимо от источника
Чтобы предотвратить выполнение вредоносного кода на клиенте, современные браузеры блокируют запросы от веб-приложений к ресурсам, выполняемым в отдельном домене. Общий доступ к ресурсам независимо от источника (CORS) позволяет заголовку Access-Control-Allow-Origin
объявить, какие источники могут вызывать конечные точки в вашем приложении-функции.
Портал
При настройке списка разрешенных источников для приложения-функции ко всем ответам от конечных точек HTTP в приложении-функции автоматически добавляется заголовок Access-Control-Allow-Origin
.
Дикий карта (*) игнорируется, если есть другая запись домена.
Используйте команду 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
для вывода списка текущих разрешенных источников.
Проверка подлинности
Если функции используют триггер HTTP, можно настроить обязательную предварительную проверку подлинности для вызовов. Служба приложений поддерживает проверку подлинности Microsoft Entra и вход с помощью социальных поставщиков, таких как Facebook, Microsoft и Twitter. Дополнительные сведения о настройке определенных поставщиков аутентификации см. в разделе Проверка подлинности и авторизация в службе приложений Azure.