在 Flex Consumption 计划中创建和管理函数应用

选择编程语言

本文介绍如何在 Azure Functions 中创建托管在 Flex Consumption 计划 中的函数应用。 还演示了如何管理 Flex Consumption 计划托管应用的某些功能。

函数应用资源特定于语言。 确保在文章开始处选择喜欢的代码开发语言。

先决条件

创建 Flex Consumption 应用

本部分介绍如何使用 Azure CLI、Azure 门户或 Visual Studio Code 在 Flex Consumption 计划中创建函数应用。 有关使用 Bicep/ARM 模板在 Flex Consumption 计划中创建应用的示例,请参阅 Flex Consumption 存储库

如果选择使用 Maven 创建和部署应用,则可以跳过此部分。

若要支持函数代码,需要创建三个资源:

  • 一个资源组:相关资源的逻辑容器。
  • 一个存储帐户:用于维护有关函数的状态和其他信息。
  • Flex Consumption 计划中的一个函数应用,它提供用于执行函数代码的环境。 函数应用映射到本地函数项目,可让你将函数分组为逻辑单元,以便更轻松地管理、部署和共享 Flex Consumption 计划中的资源。
  1. 按 F1,然后在命令托盘中输入 Azure Functions: Create function app in Azure...(Advanced)

  2. 如果你未登录,系统会提示“登录到 Azure”。 也可以创建一个 Azure 帐户。 从浏览器登录后,返回到 Visual Studio Code。

  3. 按提示操作并提供以下信息:

    Prompt 选择
    输入新的函数应用的全局唯一名称。 键入用于标识新函数应用的全局唯一名称,然后按 Enter。 函数应用名称的有效字符包括 a-z0-9-
    选择托管计划。 选择“弹性消耗”
    选择运行时堆栈。 选择受支持的语言堆栈版本之一。
    选择新资源的资源组。 选择“+ 创建新资源组”,键入资源组名称(例如 myResourceGroup),然后按 Enter。 也可以选择现有的资源组。
    选择新资源的位置。 选择靠近你或靠近函数访问的其他服务的受支持区域中的位置。 不受支持的区域不显示。 有关详细信息,请参阅查看当前支持的区域
    选择一个存储帐户。 选择“创建新存储帐户”,根据提示提供函数应用使用的新存储帐户的全局唯一名称,然后按 Enter。 存储帐户名称长度必须为 3 到 24 个字符,只能包含数字和小写字母。 也可以选择现有的帐户。
    为你的应用选择 Application Insights 资源。 选择“创建新的 Application Insights 资源”,然后根据提示提供用于存储函数运行时数据的实例的名称。

    创建函数应用后会显示一条通知。 在此通知中选择“查看输出”以查看创建和部署结果,其中包括你创建的 Azure 资源。

部署代码项目

如果选择使用 Maven 创建和部署应用,则可以跳过此部分。

可以选择使用各种工具将项目代码部署到现有函数应用:

重要

部署到现有函数应用将始终覆盖该应用在 Azure 中的内容。

  1. 在活动栏中选择 Azure 图标,然后在“工作区”区域中选择你的项目文件夹,并选择“部署...”按钮。

    从 Visual Studio Code 工作区部署项目

  2. 选择“部署到函数应用...”,然后选择刚刚创建的函数应用,选择“部署”。

  3. 在部署完成后,选择“查看输出”以查看创建和部署结果,其中包括你创建的 Azure 资源。 如果错过了通知,请选择右下角的响铃图标以再次查看。

    “查看输出”窗口的屏幕截图。

使用 Maven 创建并部署应用

可以通过修改 pom.xml 文件,使用 Maven 在部署期间创建 Flex Consumption 托管函数应用和所需的资源。

  1. 通过完成以下快速入门文章的第一部分来创建 Java 代码项目:

  2. 在 Java 代码项目中,打开 pom.xml 文件,并在 Flex Consumption 计划中创建函数应用:

    • <properties>.<azure.functions.maven.plugin.version> 的值更改为 1.34.0

    • azure-functions-maven-plugin<plugin>.<configuration> 部分中,添加或取消注释 <pricingTier> 元素,如下所示:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (可选)通过在 <plugin>.<configuration> 部分中包括以下元素,在 Maven 部署中自定义 Flex Consumption 计划。

    • <instanceSize> - 设置函数应用的实例内存大小。 默认值为 2048
    • <maximumInstances> - 设置函数应用的最大实例计数的最大值。
    • <alwaysReadyInstances> - 使用 HTTP 触发器组 (<http>)、Durable Functions 组 (<durable>) 和其他特定触发器 (<my_function>) 的子元素设置始终就绪的实例计数。 设置任何大于零的实例计数时,无论函数是否执行,都会对这些实例收费。 有关详细信息,请参阅计费
  4. 在部署之前,请使用 Azure CLI 登录到 Azure 订阅。

    az login
    

    使用 az login 命令登录到 Azure 帐户。

  5. 使用以下命令将代码项目部署到 Flex Consumption 中的新函数应用。

    mvn azure-functions:deploy
    

    Maven 使用 pom.xml 模板中的设置在 Azure 中的 Flex Consumption 计划中创建函数应用,以及其他所需的资源。 如果这些资源已存在,代码将部署到函数应用,覆盖任何现有代码。

启用虚拟网络集成

可以在 Flex Consumption 计划中为应用启用虚拟网络集成。 本部分中的示例假定已在帐户中创建一个带有子网的虚拟网络。 可以在创建应用时或以后启用虚拟网络集成。

重要

Flex Consumption 计划目前不支持名称包含下划线 (_) 字符的子网。

若要在创建应用时启用虚拟网络,请执行以下操作:

使用 Visual Studio Code 创建应用时,当前无法启用虚拟网络。

有关如何使用虚拟网络集成在 Flex Consumption 中创建应用的端到端示例,请参阅以下资源:

若要在现有应用中修改或删除虚拟网络集成,请执行以下操作:

目前无法在 Visual Studio Code 中配置虚拟网络。

选择子网时,以下注意事项适用:

  • 选择的子网不能用于其他目的,例如专用终结点或服务终结点,或者委托给任何其他托管计划或服务。
  • 可以在 Flex Consumption 计划中运行的多个应用共享同一子网。 由于网络资源在所有应用中共享,因此一个函数应用可能会影响同一子网上其他函数应用的性能。
  • 在 Flex Consumption 计划中,单个函数应用可能最多使用 40 个 IP 地址,即使应用扩展到超过 40 个实例也是如此。 虽然此经验法则有助于估算所需的子网大小,但并未严格执行。

配置部署设置

在 Flex 消耗计划中,包含应用代码的部署包保留在 Azure Blob 存储容器中。 默认情况下,部署使用 Functions 运行时用来维护应用的相同存储帐户 (AzureWebJobsStorage) 和连接字符串值。 连接字符串存储在 DEPLOYMENT_STORAGE_CONNECTION_STRING 应用程序设置中。 但可以改为将单独的存储帐户中的 Blob 容器指定为代码的部署源。 还可以更改用于访问容器的身份验证方法。

自定义部署源应满足以下条件:

  • 存储帐户必须已存在。
  • 用于部署的容器也必须存在。
  • 当多个应用使用相同的存储帐户时,每个应用都应有自己的部署容器。 对每个应用使用唯一容器可防止覆盖部署包,如果应用共享同一容器,则会发生此情况。

配置部署存储身份验证时,请记住以下注意事项:

  • 使用连接字符串连接到部署存储帐户时,包含连接字符串的应用程序设置必须已存在。
  • 使用用户分配的托管标识时,提供的标识会链接到函数应用。 范围限定为部署存储帐户的 Storage Blob Data Contributor 角色也会分配给该标识。
  • 使用系统分配的托管标识时,会在应用中不存在有效的系统分配标识时创建一个标识。 当存在系统分配的标识时,范围限定为部署存储帐户的 Storage Blob Data Contributor 角色也会分配给该标识。

在 Flex 消耗计划中创建函数应用时配置部署设置:

使用 Visual Studio Code 在 Azure 中创建应用时,当前无法配置部署存储。

还可以修改现有应用的部署存储配置。

目前无法使用 Visual Studio Code 在 Azure 中为应用配置部署存储。

配置实例内存

创建应用时,可以显式设置 Flex Consumption 计划使用的实例内存大小。 有关支持的大小的详细信息,请参阅实例内存

若要设置与创建应用时默认不同的实例内存大小,请执行以下操作:

使用 Visual Studio Code 创建应用时,当前无法控制实例内存大小。 使用默认大小。

可随时更改应用使用的实例内存大小设置。

当前无法使用 Visual Studio Code 更改应用的实例内存大小设置。

设置始终就绪的实例计数

可以为每个函数缩放组或各个单独函数设置一定数量的始终就绪实例,使函数保持加载状态并随时可以执行。 有三个特殊组,就像每个函数缩放一样:

  • http - 应用中所有 HTTP 触发的函数一起扩展到自己的实例。
  • durable - 应用中所有持久触发的函数(业务流程、活动、实体)一起扩展到自己的实例。
  • blob - 应用中所有 blob(事件网格)触发的函数一起扩展到自己的实例。

httpdurableblob 用作名称值对设置的名称来配置这些组的始终就绪计数。 对于应用中的所有其他函数,需要使用 function:<FUNCTION_NAME>=n 格式为每个单独的函数配置始终就绪计数。

使用 Visual Studio Code 在 Azure 中创建应用时,当前无法定义始终就绪的实例。

还可以通过添加或删除实例指定或更改现有实例指定计数来修改现有应用上的始终就绪实例。

目前无法使用 Visual Studio Code 修改始终就绪的实例。

设置 HTTP 并发限制

除非设置了特定限制,否则 Flex Consumption 计划应用的 HTTP 并发默认值会根据实例大小设置确定。 有关详细信息,请参阅 HTTP 触发器并发

下面介绍如何为现有应用设置 HTTP 并发限制:

当前无法使用 Visual Studio Code 设置 HTTP 并发限制。

查看当前支持的区域

若要查看当前支持 Flex Consumption 计划的区域列表,请执行以下操作:

  1. 请登录到 Azure(如果尚未这样做):

    az login
    

    使用 az login 命令登录到 Azure 帐户。

  2. 使用 az functionapp list-flexconsumption-locations 命令查看当前支持 Flex Consumption 的区域列表。

    az functionapp list-flexconsumption-locations --output table
    

Azure 门户中或使用 Visual Studio Code 创建应用时,当前不支持的区域将筛选出区域列表。