管理函数应用

在 Azure Functions 中,Function App 提供各个函数的执行上下文。 Function App 行为适用于由给定 Function App 托管的所有函数。 函数应用中的所有函数必须使用同一语言

函数应用中的各个函数一起部署并一起缩放。 同一函数应用中的所有函数在函数应用缩放时共享每个实例的资源。

将为每个函数应用单独定义连接字符串、环境变量以及其他应用程序设置。 必须在函数应用之间共享的任何数据都应该以外部方式存储在持久存储中。

在 Azure 门户中开始

注意

不要将本地开发和门户开发混合在同一函数应用中。 从本地项目创建和发布函数时,无法维护或修改门户中的项目代码。

要查看函数应用中的应用设置,请执行以下步骤:

  1. 使用 Azure 帐户登录到 Azure 门户。 搜索函数应用并选择它。

  2. 在函数应用的左窗格中,展开“设置”,选择“环境变量”,然后选择“应用设置”选项卡。

    显示如何在函数应用中选择“应用设置”页的屏幕截图。

使用应用程序设置

除 Azure Functions 使用的预定义应用设置之外,还可根据函数代码的要求创建任意数量的应用设置。 有关详细信息,请参阅 Azure Functions 的应用设置参考

这些设置是加密存储的。 有关详细信息,请参阅应用设置安全性

可从 Azure 门户管理应用设置,并使用 Azure CLIAzure PowerShell。 还可通过 Visual Studio CodeVisual Studio 管理应用设置。

要查找应用设置,请参阅在 Azure 门户中开始操作

“应用设置”选项卡维护函数应用使用的设置:

  1. 要查看应用设置的值,请选择“显示值”。

  2. 要添加设置,请选择“+ 添加”,然后输入新键值对的名称和值。

    显示函数应用中的“应用设置”页的屏幕截图。

使用应用程序设置

还可以在代码中将函数应用设置值读取为环境变量。 有关详细信息,请参阅以下特定于语言的参考主题的“环境变量”部分:

在本地开发函数应用时,必须将这些值的本地副本保留在 local.settings.json 项目文件中。 有关详细信息,请参阅本地设置文件

FTPS 部署设置

Azure Functions 支持使用 FTPS 将项目代码部署到函数应用。 由于此部署方法需要同步触发器,因此不推荐。 要安全地传输项目文件,请始终使用 FTPS 而不是 FTP。

可以使用以下方法之一来获取 FTPS 部署所需的凭据:

可以通过下载函数应用的发布配置文件来在 Azure 门户中获取 FTPS 发布凭据。

重要

发布配置文件包含重要的安全凭据。 始终保护本地计算机上下载的文件。

若要下载函数应用的发布配置文件:

  1. 选择函数应用的“概述”页,然后选择“获取发布配置文件”

    下载发布配置文件

  2. 保存并复制该文件的内容。

  1. 在文件中,找到具有属性 publishMethod="FTP"publishProfile 元素。 在此元素中,publishUrluserNameuserPWD 属性包含用于 FTPS 发布的目标 URL 和凭据。

托管计划类型

创建函数应用时,你还需要创建托管计划,应用将在其中运行。 一个计划可以有一个或多个函数应用。 函数的功能、缩放和定价取决于计划的类型。 有关详细信息,请参阅 Azure Functions 托管选项

可以从 Azure 门户中或通过使用 Azure CLI 或 Azure PowerShell API 确定函数应用所使用的计划类型。

以下值指示计划类型:

计划类型 Azure 门户 Azure CLI/PowerShell
消耗 消耗 Dynamic
高级 ElasticPremium ElasticPremium
专用(应用服务) 各种 各种
  1. 要确定你的函数应用所使用的计划的类型,请在 Azure 门户中查看该函数应用的“概述”页中的“应用服务计划”。

    显示函数应用的“概述”页上的应用服务计划链接的屏幕截图。

  2. 若要查看定价层,请选择“应用服务计划”的名称,然后从左侧窗格中选择“设置”>“属性”。

计划迁移

你可以在 Windows 上的消耗计划和高级计划之间迁移函数应用。 在计划之间迁移时,请记住以下注意事项:

  • 不支持直接迁移到专用(应用服务)计划。
  • Linux 不支持迁移。
  • 源计划和目标计划必须位于同一资源组和地理区域中。 有关详细信息,请参阅将应用移到另一个应用服务计划
  • 具体的 CLI 命令取决于迁移方向。
  • 在计划之间迁移函数应用时,函数执行会出现故障。
  • 状态和其他特定于应用的内容将得到维护,因为应用在迁移之前和之后都使用相同的 Azure 文件存储共享。

可以使用这些工具迁移计划:

可以使用 Azure 门户切换到其他计划。

在 Windows 上为应用选择迁移方向。

  1. 在 Azure 门户中,导航到“消耗”计划应用,然后选择“应用服务计划”下的“更改应用服务计划”。

  2. 在“计划类型”下选择“高级”,创建新的高级计划,然后选择“确定”

有关详细信息,请参阅将应用移到另一个应用服务计划

Azure 门户中的开发限制

下表显示了支持门户内编辑的操作系统和语言:

Language Windows 消耗计划 Windows 高级计划 Windows 专用计划 Linux 消耗计划 Linux 高级计划 Linux 专用计划
C#
Java
JavaScript (Node.js)
Python
PowerShell
TypeScript (Node.js)

Azure 门户中开发函数时,请考虑以下限制:

  • 仅在 Azure 门户中创建或修改的函数支持门户内编辑。
  • 仅 JavaScript、PowerShell、Python 和 C# 脚本函数支持门户内编辑。
  • 弹性消耗计划目前不支持门户内编辑。
  • 从 Azure 门户外部将代码部署到函数应用时,不能再在门户中编辑该函数应用的任何代码。 在这种情况下,只需继续使用本地开发
  • 对于 Python,门户中当前不支持使用自定义模块进行开发。 若要将自定义模块添加到函数应用,必须在本地开发应用
  • 对于编译的 C# 函数和 Java 函数,可以在门户中创建函数应用和相关资源。 但是,你必须在本地创建函数代码项目,然后将其发布到 Azure。

如果可能,请在本地开发函数并将代码项目发布到 Azure 中的函数应用。 有关详细信息,请参阅在本地对 Azure Functions 进行编码和测试

手动安装扩展

C# 类库函数可以将用于绑定扩展的 NuGet 包直接包含在类库项目中。 对于其他非 .NET 语言和 C# 脚本,应使用扩展捆绑包。 如果必须手动安装扩展,可以通过在本地使用 Azure Functions Core Tools 来执行此操作。 如果无法使用扩展捆绑包并且只能在门户中工作,则需要使用 Advanced Tools (Kudu) 直接在站点中手动创建 extensions.csproj 文件。 请确保首先从 host.json 文件中删除 extensionBundle 元素。

此过程适用于需要添加到应用的任何其他文件。

重要

如果可能,请不要直接在 Azure 中的函数应用中编辑文件。 我们建议在本地下载应用文件,使用 Core Tools 安装扩展和其他包,验证更改,然后使用 Core Tools 或其他受支持的部署方法之一重新发布应用。

Azure 门户中内置的 Functions 编辑器允许直接在门户中更新函数代码和配置文件:

  1. 选择函数应用,然后在“函数”下,选择“函数”。

  2. 选择函数,然后在“开发人员”下选择“代码 + 测试”。

  3. 选择要编辑的文件,并在完成后选择“保存”。

需要使用高级工具 (Kudu) 创建和编辑应用根目录中的文件,例如 function.proj 或 extensions.csproj:

  1. 选择函数应用,展开 “开发工具”,然后选择“高级工具”>“Go”。

  2. 如果出现提示,请使用 Azure 凭据登录到源代码管理 (SCM) 站点。

  3. 在“调试控制台”菜单中,选择“CMD”。

  4. 导航到 .\site\wwwroot,选择顶部的加号 (+) 按钮,然后选择“新建文件”。

  5. 为文件命名(例如 extensions.csproj),然后按 Enter。

  6. 选择新文件旁边的编辑按钮,在文件中添加或更新代码,然后选择“保存”。

  7. 对于 extensions.csproj 等项目文件,请运行以下命令以重新生成扩展项目:

    dotnet build extensions.csproj
    

平台功能

函数应用在 Azure 应用服务平台中运行,并由该平台维护。 在这种情况下,Function App 有权访问 Azure 核心 Web 托管平台的大多数功能。 使用 Azure 门户时,可在左侧窗格中访问可用于函数应用的应用服务平台中的许多功能。

以下矩阵指示托管计划和操作系统支持的 Azure 门户功能:

功能 消耗计划 Flex 消耗计划 高级计划 专用计划
高级工具 (Kudu) Windows:✔
Linux:X
X
应用服务编辑器 Windows:✔
Linux:X
X Windows:✔
Linux:X
Windows:✔
Linux:X
备份 X X X
Console Windows:命令行
Linux:X
X Windows:命令行
Linux:SSH
Windows:命令行
Linux:SSH

本文的其余部分侧重于门户中以下可用于函数应用的功能:

若要深入了解如何使用应用服务设置,请参阅配置 Azure 应用服务设置

应用服务编辑器

应用服务编辑器是一种高级的门户内编辑器,可用于修改诸如 JSON 配置文件和代码文件等内容。 选择此选项会启动单独的浏览器选项卡和基本编辑器。 借助此编辑器,可与 Git 存储库集成、运行和调试代码,并可修改函数应用设置。 同内置的函数编辑器相比,此编辑器为 Functions 提供了增强的开发环境。

显示应用服务编辑器的屏幕截图。

建议你考虑在本地计算机上开发函数。 在本地开发项目并将其发布到 Azure 时,项目文件在 Azure 门户中处于只读状态。 有关详细信息,请参阅在本地对 Azure Functions 进行编码和测试

控制台

要从命令行与 Function App 交互时,门户内控制台就是非常合适的开发人员工具。 常见命令包括创建和导航目录与文件,以及执行批处理文件和脚本。

显示函数应用控制台的屏幕截图。

在本地进行开发时,建议使用 Azure Functions Core ToolsAzure CLI

高级工具 (Kudu)

应用服务的高级工具(也称为 Kudu)提供对 Function App 高级管理功能的访问。 从 Kudu 中,可以管理系统信息、应用设置、环境变量、站点扩展、HTTP 头和服务器变量。 也可通过浏览到 Function App 的 SCM 终结点(如 https://<myfunctionapp>.scm.chinacloudsites.cn/),启动 Kudu。

显示应用服务 (Kudo) 的高级工具的屏幕截图。

部署中心

使用源代码管理解决方案来开发和维护函数代码时,可以使用部署中心通过源代码管理进行生成和部署。 进行更新时,会生成项目并将其部署到 Azure。 有关详细信息,请参阅 Azure Functions 中的部署技术

跨域资源共享

为了防止在客户端执行恶意代码,新式的浏览器会阻止 Web 应用程序向正在单独的域中运行的资源发送请求。 跨域资源共享 (CORS) 允许 Access-Control-Allow-Origin 标头声明允许哪些域调用函数应用上的终结点。

配置函数应用的“允许的域”列表时,Access-Control-Allow-Origin 标头会自动添加到函数应用中 HTTP 终结点发出的所有响应。

显示如何配置函数应用的 CORS 列表的屏幕截图。

如果存在另一个域条目,则会忽略通配符 (*)。

身份验证

函数使用 HTTP 触发器时,可以要求首先对调用进行身份验证。 应用服务支持使用社交提供程序进行 Microsoft Entra 身份验证和登录。 有关配置特定身份验证提供程序的详细信息,请参阅 Azure 应用服务身份验证概述

显示如何为函数应用配置身份验证的屏幕截图。