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


Создание приложений-функций и управление ими в плане потребления 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 Functions: Deploy to Function App....

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

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

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