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


Создание приложений-функций и управление ими в плане потребления Flex

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

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

Внимание

План потребления Flex в настоящее время находится в предварительной версии.

Необходимые компоненты

Создание приложения Flex Consumption

В этом разделе показано, как создать приложение-функцию в плане потребления Flex с помощью Azure CLI, портал Azure или Visual Studio Code. Пример создания приложения в плане потребления Flex с помощью шаблонов Bicep/ARM см. в репозитории Flex Consumption.

Этот раздел можно пропустить, если вы решили создать и развернуть приложение с помощью Maven.

Для поддержки кода функции необходимо создать три ресурса:

  • группу ресурсов — логический контейнер связанных ресурсов;
  • учетную запись хранения, которая используется для сохранения состояния и других сведений о функциях;
  • Приложение-функция в плане потребления Flex, которое предоставляет среду для выполнения кода функции. Приложение-функция сопоставляется с проектом локальной функции и позволяет группировать функции как логическую единицу для упрощения управления, развертывания и совместного использования ресурсов в плане потребления Flex.
  1. Войдите в Azure, если вы еще этого не сделали:

    az login
    

    Команда az login входит в учетную запись Azure.

  2. az functionapp list-flexconsumption-locations Используйте команду для просмотра списка регионов, которые в настоящее время поддерживают Использование Flex.

    az functionapp list-flexconsumption-locations --output table
    
  1. Создайте группу ресурсов в одном из поддерживаемых регионов:

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    В приведенной выше команде замените <RESOURCE_GROUP> значение, уникальное в подписке и <REGION> одно из поддерживаемых в настоящее время регионов. Чтобы создать группу ресурсов, выполните команду az group create.

  2. В группе ресурсов и регионе создайте учетную запись хранения общего назначения:

    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.

    Внимание

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

  3. Создайте приложение-функцию в 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.

  1. В палитре команд введите и выберите Функции Azure: Развернуть в приложении-функции.

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

  3. После завершения развертывания выберите "Просмотреть выходные данные ", чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.

    Снимок экрана с окном

Создание и развертывание приложения с помощью Maven

С помощью Maven можно создать размещенное приложение-функцию Flex Consumption и необходимые ресурсы во время развертывания, изменив файл pom.xml.

  1. Создайте проект кода Java, выполнив первую часть одной из следующих статей краткого руководства:

  2. В проекте кода Java откройте файл pom.xml и внесите эти изменения, чтобы создать приложение-функцию в плане потребления Flex:

    • Измените значение атрибута <properties>.<azure.functions.maven.plugin.version> на 1.34.0.

    • <plugin>.<configuration> В разделе для azure-functions-maven-pluginэлемента добавьте или раскомментируйте <pricingTier> элемент следующим образом:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (Необязательно) Настройте план потребления Flex в развертывании Maven, включив в раздел следующие элементы <plugin>.<configuration> :

    • <instanceSize> — задает размер памяти экземпляра для приложения-функции. Значение по умолчанию — 2048.
    • <maximumInstances> — задает наибольшее значение для максимального количества экземпляров приложения-функции.
    • <alwaysReadyInstances>— задает количество всегда готовых экземпляров с дочерними элементами для групп триггеров HTTP (<http>), Устойчивые функции групп (<durable>) и других конкретных триггеров (<my_function>). При установке любого числа экземпляров больше нуля плата взимается за эти экземпляры независимо от того, выполняются ли ваши функции. Дополнительные сведения см. в разделе о выставлении счетов.
  4. Перед развертыванием войдите в подписку Azure с помощью Azure CLI.

    az login
    

    Команда az login входит в учетную запись Azure.

  5. Используйте следующую команду, чтобы развернуть проект кода в новом приложении-функции в Flex Consumption.

    mvn azure-functions:deploy
    

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

Включение интеграции с виртуальной сетью

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

Внимание

План потребления Flex в настоящее время не поддерживает подсети с именами, содержащими символы подчеркивания (_).

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

Вы можете включить интеграцию виртуальной сети, выполнив az functionapp create команду и включив параметры --vnet --subnet .

  1. Создайте виртуальную сеть и подсеть, если это еще не сделано.

  2. Выполните шаги 1–4 в разделе "Создание приложения потребления Flex", чтобы создать ресурсы, необходимые для приложения.

  3. 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 с интеграцией виртуальной сети см. в следующих ресурсах:

Чтобы изменить или удалить интеграцию виртуальной сети в существующем приложении:

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, чтобы определить одно или несколько всегда готовых обозначений экземпляров. В этом примере всегда готовое число экземпляров для всех триггерных функций 5HTTP:

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 только в выбранных регионах. Чтобы просмотреть список регионов, которые в настоящее время поддерживают планы потребления Flex:

  1. Войдите в Azure, если вы еще этого не сделали:

    az login
    

    Команда az login входит в учетную запись Azure.

  2. az functionapp list-flexconsumption-locations Используйте команду для просмотра списка регионов, которые в настоящее время поддерживают Использование Flex.

    az functionapp list-flexconsumption-locations --output table
    

При создании приложения в портал Azure или с помощью Visual Studio Code в настоящее время неподдерживаемые регионы фильтруются из списка регионов.