你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 静态 Web 应用中通过 Azure Functions 提供 API 支持

前端 Web 应用程序通常为数据和服务调用后端 API。 默认情况下,Azure Static Web Apps 通过 Azure Functions 提供内置无服务器 API 终结点。

Static Web Apps 中的 Azure Functions API 有两种可能的配置,具体取决于托管计划

  • 托管函数:默认情况下,静态 Web 应用的 API 是与某些限制关联的 Azure Static Web Apps 所托管和部署的 Azure Functions 应用程序。

  • 创建自己的函数:你可以选择针对任何计划类型提供现有 Azure Functions 应用程序,其中包括 Azure Functions 的所有功能。 使用此配置,用户需负责单独部署此 Functions 应用。

下表对比了使用托管函数和现有函数之间的差异。

功能 托管函数 创建自己的函数
访问 Azure Functions 触发器和绑定 仅 HTTP 全部
支持的 Azure Functions 运行时1 Node.js 12
Node.js 14
Node.js 16
Node.js 18
.NET Core 3.1
.NET 6.0
.NET 7.0
Python 3.8
Python 3.9
Python 3.10
全部
支持 Azure Functions 托管计划 消耗 消耗
高级
专用
集成安全性,可直接访问用户身份验证和基于角色的授权数据
路由集成,可向 Web 应用安全地提供 /api 路由,而无需自定义 CORS 规则。
用于后端计算动态全局分布的分布式函数(预览版)
Durable Functions 编程模型
托管的标识
Azure 应用服务身份验证和授权令牌管理
Azure Static Web Apps 外部的可用 API 函数
密钥保管库引用

1 若要在托管函数中指定运行时版本,请向前端应用添加配置文件并设置 apiRuntime 属性。 支持受 Azure Functions 语言运行时支持策略的影响。

Static Web Apps 的 API 选项包括以下 Azure 服务:

有关详细信息,请参阅 API 概述

注意

分布式函数可用于托管函数。 分布式函数会自动将托管函数分配到高请求负载区域。

配置

API 终结点通过 api 路由向 Web 应用提供。

托管函数 创建自己的函数
虽然 /api 路由已固定,但你可以控制托管函数应用的源代码文件夹位置。 可以通过编辑工作流 YAML 文件来改变此位置,该文件位于存储库的 .github/workflows 文件夹中的。 /api 路由的请求将发送到现有 Azure Functions 应用。

故障排除和日志

仅当添加 Application Insights 时,日志才可用。

托管函数 创建自己的函数
通过启用静态 Web 应用上的 Application Insights,启用日志记录。 通过启用 Azure Functions 应用上的 Application Insights,启用日志记录。

约束

除了 Static Web Apps API 约束,以下限制也适用于 Azure Functions API:

托管函数 创建自己的函数
  • 触发器和绑定仅限于 HTTP
  • Azure Functions 应用必须在 Node.js 12、Node.js 14、Node.js 16、Node.js 18(公共预览版)、.NET Core 3.1、.NET 6.0、Python 3.8、Python 3.9 或 Python 3.10 中。
  • 某些应用程序设置由服务管理,因此运行时已保留以下前缀:
    • APPSETTING_、AZUREBLOBSTORAGE_、AZUREFILESSTORAGE_、AZURE_FUNCTION_、CONTAINER_、DIAGNOSTICS_、DOCKER_、FUNCTIONS_、IDENTITY_、MACHINEKEY_、MAINSITE_、MSDEPLOY_、SCMSITE_、SCM_、WEBSITES_、WEBSITE_、WEBSOCKET_、AzureWeb
  • 某些应用程序标记由服务在内部使用。 因此,将保留以下标记:
    • AccountId、EnvironmentId、FunctionAppId
  • 你负责管理 Functions 应用部署。

后续步骤