Создание приложений-функций и управление ими в плане потребления Flex
В этой статье показано, как создавать приложения-функции, размещенные в плане потребления Flex в Функции Azure. В нем также показано, как управлять определенными функциями размещенного приложения плана потребления Flex.
Ресурсы приложения-функции зависят от langauge. Выберите предпочитаемый язык разработки кода в начале статьи.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Если ее нет, можно создать учетную запись бесплатно.
Azure CLI: используется для создания ресурсов и управления ими в Azure. При использовании Azure CLI на локальном компьютере обязательно используйте версию 2.60.0 или более позднюю версию. Вы также можете использовать Azure Cloud Shell, которая имеет правильную версию Azure CLI.
Visual Studio Code: используется для создания и разработки приложений, создания ресурсов Azure и развертывания проектов кода в Azure. При использовании Visual Studio Code также установите последнее расширение Функции Azure. Вы также можете установить пакет расширений средств Azure.
Хотя не требуется для создания приложения плана потребления Flex, вам потребуется проект кода для развертывания и проверки нового приложения-функции. Выполните первую часть одной из следующих статей краткого руководства, где вы создайте проект кода с активированной функцией HTTP:
- Создание проекта Функции Azure из командной строки
- Создание проекта Функций Azure в Visual Studio Code
Чтобы создать приложение в новом плане потребления Flex во время развертывания Maven, необходимо создать проект локального приложения, а затем обновить файл pom.xml проекта. Дополнительные сведения см. в статье "Создание приложения потребления Java Flex с помощью Maven"
Вернитесь к этой статье после создания и запуска локального проекта, но прежде чем вам будет предложено создать ресурсы Azure. Вы создадите приложение-функцию и другие ресурсы Azure в следующем разделе.
Создание приложения Flex Consumption
В этом разделе показано, как создать приложение-функцию в плане потребления Flex с помощью Azure CLI, портал Azure или Visual Studio Code. Пример создания приложения в плане потребления Flex с помощью шаблонов Bicep/ARM см. в репозитории Flex Consumption.
Этот раздел можно пропустить, если вы решили создать и развернуть приложение с помощью Maven.
Для поддержки кода функции необходимо создать три ресурса:
- группу ресурсов — логический контейнер связанных ресурсов;
- учетную запись хранения, которая используется для сохранения состояния и других сведений о функциях;
- Приложение-функция в плане потребления Flex, которое предоставляет среду для выполнения кода функции. Приложение-функция сопоставляется с проектом локальной функции и позволяет группировать функции как логическую единицу для упрощения управления, развертывания и совместного использования ресурсов в плане потребления Flex.
Войдите в Azure, если вы еще этого не сделали:
az login
Команда
az login
входит в учетную запись Azure.az functionapp list-flexconsumption-locations
Используйте команду для просмотра списка регионов, которые в настоящее время поддерживают Использование Flex.az functionapp list-flexconsumption-locations --output table
Создайте группу ресурсов в одном из поддерживаемых регионов:
az group create --name <RESOURCE_GROUP> --location <REGION>
В приведенной выше команде замените
<RESOURCE_GROUP>
значение, уникальное в подписке и<REGION>
одно из поддерживаемых в настоящее время регионов. Чтобы создать группу ресурсов, выполните команду az group create.В группе ресурсов и регионе создайте учетную запись хранения общего назначения:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access false
В предыдущем примере замените
<STORAGE_NAME>
соответствующим именем, которое является уникальным в службе хранилища Azure. Имена должны содержать от трех до 24 символов и только в нижнем регистре.Standard_LRS
указывает учетную запись общего назначения, которая поддерживается Функциями. Создайте учетную запись хранения с помощью команды az storage account create.Внимание
Учетная запись хранения используется для хранения важных данных приложения, иногда включая сам код приложения. Необходимо ограничить доступ от других приложений и пользователей к учетной записи хранения.
Создайте приложение-функцию в Azure:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0
Приложения C#, которые выполняются в процессе , в настоящее время не поддерживаются при выполнении в плане потребления Flex.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17
Для приложений Java в настоящее время поддерживается Java 11.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11
Для приложений Python в настоящее время поддерживается Python 3.10.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4
В этом примере замените как группу ресурсов, так
<RESOURCE_GROUP>
и<STORAGE_NAME>
имя учетной записи, используемой на предыдущем шаге, соответственно. Кроме того, замените<APP_NAME>
глобально уникальное имя, соответствующее вам. Это<APP_NAME>
также домен dns по умолчанию для приложения-функции. Командаaz functionapp create
создает приложение-функцию в Azure.Эта команда создает приложение-функцию, работающее в плане потребления Flex.
Так как вы создали приложение без указания всегда готовых экземпляров, ваше приложение будет нести затраты только при активном выполнении функций. Команда также создает связанный экземпляр приложение Azure Insights в той же группе ресурсов, с помощью которой можно отслеживать приложение-функцию и просматривать журналы. Дополнительные сведения см. в разделе Мониторинг функций Azure.
Развертывание проекта кода
Этот раздел можно пропустить, если вы решили создать и развернуть приложение с помощью Maven.
Вы можете развернуть код проекта в существующем приложении-функции с помощью различных средств:
Внимание
Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.
В палитре команд введите и выберите Функции Azure: Развернуть в приложении-функции.
Выберите только что созданное приложение-функцию. При появлении запроса на перезапись предыдущих развертываний выберите "Развернуть ", чтобы развернуть код функции в новом ресурсе приложения-функции.
После завершения развертывания выберите "Просмотреть выходные данные ", чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.
Создание и развертывание приложения с помощью Maven
С помощью Maven можно создать размещенное приложение-функцию Flex Consumption и необходимые ресурсы во время развертывания, изменив файл pom.xml.
Создайте проект кода Java, выполнив первую часть одной из следующих статей краткого руководства:
В проекте кода Java откройте файл pom.xml и внесите эти изменения, чтобы создать приложение-функцию в плане потребления Flex:
Измените значение атрибута
<properties>.<azure.functions.maven.plugin.version>
на1.34.0
.<plugin>.<configuration>
В разделе дляazure-functions-maven-plugin
элемента добавьте или раскомментируйте<pricingTier>
элемент следующим образом:<pricingTier>Flex Consumption</pricingTier>
(Необязательно) Настройте план потребления Flex в развертывании Maven, включив в раздел следующие элементы
<plugin>.<configuration>
:<instanceSize>
— задает размер памяти экземпляра для приложения-функции. Значение по умолчанию —2048
.<maximumInstances>
— задает наибольшее значение для максимального количества экземпляров приложения-функции.<alwaysReadyInstances>
— задает количество всегда готовых экземпляров с дочерними элементами для групп триггеров HTTP (<http>
), Устойчивые функции групп (<durable>
) и других конкретных триггеров (<my_function>
). При установке любого числа экземпляров больше нуля плата взимается за эти экземпляры независимо от того, выполняются ли ваши функции. Дополнительные сведения см. в разделе о выставлении счетов.
Перед развертыванием войдите в подписку Azure с помощью Azure CLI.
az login
Команда
az login
входит в учетную запись Azure.Используйте следующую команду, чтобы развернуть проект кода в новом приложении-функции в Flex Consumption.
mvn azure-functions:deploy
Maven использует параметры в шаблоне pom.xml для создания приложения-функции в плане потребления Flex в Azure вместе с другими необходимыми ресурсами. Если эти ресурсы уже существуют, код развертывается в приложении-функции, перезаписав любой существующий код.
Включение интеграции с виртуальной сетью
Вы можете включить интеграцию виртуальной сети для приложения в плане потребления Flex. В примерах этого раздела предполагается, что вы уже создали виртуальную сеть с подсетью в учетной записи. Вы можете включить интеграцию виртуальной сети при создании приложения или позже.
Внимание
План потребления Flex в настоящее время не поддерживает подсети с именами, содержащими символы подчеркивания (_
).
Чтобы включить виртуальную сеть при создании приложения, выполните следующие действия.
Вы можете включить интеграцию виртуальной сети, выполнив az functionapp create
команду и включив параметры --vnet
--subnet
.
Создайте виртуальную сеть и подсеть, если это еще не сделано.
Выполните шаги 1–4 в разделе "Создание приложения потребления Flex", чтобы создать ресурсы, необходимые для приложения.
az functionapp create
Выполните команду, включая--vnet
параметры и--subnet
параметры, как в следующем примере:az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
Значением
<VNET_RESOURCE_ID>
является идентификатор ресурса для виртуальной сети, который находится в формате:/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCER_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>
Эту команду можно использовать для получения списка идентификаторов виртуальных сетей, отфильтрованных по<RESOURCE_GROUP>
:az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id
.
Полные примеры создания приложений в Flex Consumption с интеграцией виртуальной сети см. в следующих ресурсах:
- Использование Flex: HTTP в Центры событий с помощью интеграции виртуальной сети
- Использование Flex: активируется из служебная шина с помощью интеграции виртуальной сети
Чтобы изменить или удалить интеграцию виртуальной сети в существующем приложении:
az functionapp vnet-integration add
Используйте команду, чтобы включить интеграцию виртуальной сети с существующим приложением-функцией:
az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
az functionapp vnet-integration remove
Используйте команду, чтобы отключить интеграцию виртуальной сети в приложении:
az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>
az functionapp vnet-integration list
Используйте команду для перечисления текущих интеграции виртуальной сети для приложения:
az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>
При выборе подсети применяются следующие рекомендации.
- Выбранную подсеть нельзя использовать в других целях (например, с частными конечными точками или конечными точками службы) либо делегировать любому другому плану размещения или службе.
- Вы можете совместно использовать одну подсеть с несколькими приложениями, работающими в плане потребления Flex. Так как сетевые ресурсы совместно используются во всех приложениях, одно приложение-функция может повлиять на производительность других пользователей в одной подсети.
- В рамках плана потребления Flex одно приложение-функция может использовать до 40 IP-адресов, даже если масштабирование приложения выходит за рамки 40 экземпляров. Хотя это правило полезно при оценке необходимого размера подсети, его не следует воспринимать как обязательство.
Настройка параметров развертывания
В плане потребления Flex пакет развертывания, содержащий код приложения, сохраняется в контейнере Хранилище BLOB-объектов Azure. По умолчанию развертывания используют ту же учетную запись хранения (AzureWebJobsStorage
) и строка подключения значение, используемое средой выполнения Функций для обслуживания приложения. Строка подключения хранится в параметре DEPLOYMENT_STORAGE_CONNECTION_STRING
приложения. Однако вместо этого можно назначить контейнер BLOB-объектов в отдельной учетной записи хранения в качестве источника развертывания для кода. Можно также изменить метод проверки подлинности, используемый для доступа к контейнеру.
Настраиваемый источник развертывания должен соответствовать этим критериям:
- Учетная запись хранения уже должна существовать.
- Контейнер, используемый для развертываний, также должен существовать.
- Если несколько приложений используют одну и ту же учетную запись хранения, каждый из них должен иметь собственный контейнер развертывания. Использование уникального контейнера для каждого приложения предотвращает перезапись пакетов развертывания, что произойдет, если приложения совместно используют один и тот же контейнер.
При настройке проверки подлинности хранилища развертывания следует учитывать следующие рекомендации.
- При использовании строка подключения для подключения к учетной записи хранения развертывания параметр приложения, содержащий строка подключения, уже должен существовать.
- При использовании управляемого удостоверения, назначаемого пользователем, предоставленное удостоверение связывается с приложением-функцией. Роль
Storage Blob Data Contributor
, ограниченная учетной записью хранения развертывания, также назначается удостоверению. - При использовании управляемого удостоверения, назначаемого системой, удостоверение создается, когда допустимое удостоверение, назначаемое системой, еще не существует в приложении. Если удостоверение, назначаемое системой, существует, роль, ограниченная учетной записью хранения развертывания,
Storage Blob Data Contributor
также получает назначение удостоверению.
Чтобы настроить параметры развертывания при создании приложения-функции в плане потребления Flex:
az functionapp create
Используйте команду и укажите следующие дополнительные параметры, которые настраивают хранилище развертывания:
Параметр | Описание |
---|---|
--deployment-storage-name |
Имя учетной записи хранения развертывания. |
--deployment-storage-container-name |
Имя контейнера в учетной записи, содержащей пакет развертывания приложения. |
--deployment-storage-auth-type |
Тип проверки подлинности, используемый для подключения к учетной записи хранения развертывания. Допустимые значения включают StorageAccountConnectionString , UserAssignedIdentity и SystemAssignedIdentity . |
--deployment-storage-auth-value |
При использовании StorageAccountConnectionString этот параметр имеет имя параметра приложения, содержащего строка подключения в учетную запись хранения развертывания. При использовании UserAssignedIdentity этот параметр имеет имя идентификатора ресурса удостоверения, который вы хотите использовать. |
В этом примере создается приложение-функция в плане потребления Flex с отдельной учетной записью хранения развертывания и удостоверением, назначенным пользователем:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>
Вы также можете изменить конфигурацию хранилища развертывания для существующего приложения.
az functionapp deployment config set
Используйте команду для изменения конфигурации хранилища развертывания:
az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>
Настройка памяти экземпляра
Размер памяти экземпляра, используемый планом потребления Flex, можно явно задать при создании приложения. Дополнительные сведения о поддерживаемых размерах см. в разделе "Память экземпляра".
Чтобы задать размер памяти экземпляра, отличный от значения по умолчанию при создании приложения:
--instance-memory
Укажите параметр в командеaz functionapp create
. В этом примере создается приложение C# с размером 4096
экземпляра:
az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0
В любой момент можно изменить параметр размера памяти экземпляра, используемый приложением.
В этом примере используется az functionapp scale config set
команда для изменения размера памяти экземпляра на 4096 МБ:
az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 4096
Установка всегда готовых счетчиков экземпляров
Вы можете задать ряд всегда готовых экземпляров для групп масштабирования для каждой функции или отдельных функций, чтобы обеспечить загрузку и готовность к выполнению функций. Существует три специальные группы, как в масштабировании для каждой функции:
http
— все функции, активируемые HTTP в приложении, масштабируются вместе в собственные экземпляры.durable
— все устойчивые триггерные функции (оркестрация, действие, сущность) в приложении масштабируются вместе в собственные экземпляры.blob
— все функции большого двоичного объекта (Сетка событий) в приложении масштабируются вместе в собственных экземплярах.
durable
Используйте http
или blob
в качестве имени для параметра пары значений имени, чтобы настроить всегда готовые счетчики для этих групп. Для всех остальных функций в приложении необходимо настроить всегда готовый для каждой отдельной функции с помощью формата function:<FUNCTION_NAME>=n
.
--always-ready-instances
Используйте параметр с командойaz functionapp create
, чтобы определить одно или несколько всегда готовых обозначений экземпляров. В этом примере всегда готовое число экземпляров для всех триггерных функций 5
HTTP:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10
В этом примере устанавливается всегда готовое число экземпляров для всех функций 3
устойчивых триггеров и задает для функции с триггером служебной шины всегда готовое число 2
экземпляров с именем function5
:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2
Вы также можете изменять всегда готовые экземпляры в существующем приложении, добавляя или удаляя обозначения экземпляров или изменяя существующие числа обозначений экземпляров.
В этом примере команда используется az functionapp scale config always-ready set
для изменения количества всегда готовых экземпляров для группы триггеров HTTP на 10
:
az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10
Чтобы удалить всегда готовые экземпляры, используйте az functionapp scale config always-ready delete
команду, как в этом примере, которая удаляет все всегда готовые экземпляры из группы триггеров HTTP, а также функцию с именем hello_world
:
az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world
Настройка ограничений параллелизма HTTP
Если вы не устанавливаете определенные ограничения, значения по умолчанию HTTP для приложений плана потребления Flex определяются на основе параметра размера экземпляра. Дополнительные сведения см. в разделе параллелизм триггера HTTP.
Вот как можно задать ограничения параллелизма HTTP для существующего приложения:
az functionapp scale config set
Используйте команду, чтобы задать определенные ограничения параллелизма HTTP для приложения независимо от размера экземпляра.
az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10
В этом примере для уровня параллелизма триггера HTTP задано значение 10
. После конкретного задания значения параллелизма HTTP это значение сохраняется, несмотря на любые изменения в параметре размера экземпляра приложения.
Просмотр поддерживаемых в настоящее время регионов
Чтобы просмотреть список регионов, которые в настоящее время поддерживают планы потребления Flex:
Войдите в Azure, если вы еще этого не сделали:
az login
Команда
az login
входит в учетную запись Azure.az functionapp list-flexconsumption-locations
Используйте команду для просмотра списка регионов, которые в настоящее время поддерживают Использование Flex.az functionapp list-flexconsumption-locations --output table
При создании приложения в портал Azure или с помощью Visual Studio Code в настоящее время неподдерживаемые регионы фильтруются из списка регионов.