你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将自己的函数引入 Azure Static Web Apps
Azure Static Web Apps 提供 API 集成,使你能够生成依赖于适用于数据和服务的后端 API 的前端 Web 应用程序。 这两个 API 集成选项包括:托管函数和自带后端。 有关这些选项之间的差异的详细信息,请参阅概述。
本文演示如何将现有的 Azure Functions 应用链接到 Azure Static Web Apps 资源。
先决条件
若要将函数应用链接到静态 Web 应用,需要具有现有的 Azure Functions 资源和静态 Web 应用。
资源 | 说明 |
---|---|
Azure Functions | 如果你还没有,请按照 Azure Functions 入门指南中的步骤操作。 |
现有的静态 Web 应用 | 如果还没有,请按照入门指南中的步骤创建无框架静态 Web 应用。 |
示例
假设有一个 Azure Functions 应用,该应用通过以下位置公开终结点。
https://my-functions-app.azurewebsites.net/api/getProducts
链接之后,可以通过静态 Web 应用中的 api
路径来访问相同的终结点,如本示例 URL 所示。
https://red-sea-123.azurestaticapps.net/api/getProducts
两个终结点 URL 都指向同一函数。 函数应用上的终结点必须具有 /api
前缀,因为 Static Web Apps 会匹配对 /api
发出的请求,并将整个路径代理到链接的资源。
链接现有 Azure Functions 应用
从静态 Web 应用资源中删除托管函数(如果存在)
在关联现有 Functions 应用之前,首先需要调整静态 Web 应用的配置,以删除托管函数(如果有)。
- 在
""
工作流配置文件中,将api_location
值设置为空白字符串()。
将 Azure Functions 应用链接到 Static Web Apps 资源
在 Azure 门户中打开静态 Web 应用实例。
在“设置”菜单中,选择“API”。
在“生产”行中,选择“链接”以打开“链接新后端”窗口。
输入以下设置。
设置 “值” 后端资源类型 选择“函数应用”。 订阅 选择 Azure 订阅名称。 资源名称 选择 Azure Functions 应用名称。 后端槽 选择 Azure Functions 的槽名称。 选择链接。
Azure Functions 应用现在映射到静态 Web 应用的 /api
路由。
重要
在链接现有的 Functions 应用程序之前,请确保在工作流配置文件中,将 api_location
值设置为空白字符串(""
)。 此外,调用假定外部函数应用保留默认 api
路由前缀。 许多应用在 host.json 中删除此前缀。 请确保配置中已设置好前缀,否则调用会失败。
部署
你需要负责为 Azure Functions 设置部署工作流。
取消链接 Azure Functions 应用
从 Static Web Apps 取消链接 Functions 应用
若要从静态 Web 应用取消链接函数应用,请执行以下步骤:
在 Azure 门户中,转到 Static Web Apps。
从导航菜单中选择“API”。
找到要取消链接的环境,然后选择函数应用名称。
选择“取消链接”。
取消链接过程完成后,对以 /api
开头的路由的请求将不再被代理到 Azure Functions 应用。
注意
为防止意外向匿名流量公开函数应用,不会自动删除链接过程创建的标识提供者。 你可从函数应用的身份验证设置中删除名为 Azure Static Web Apps (Linked) 的标识提供者。
从 Azure Functions 资源中删除身份验证
若要使 Azure Functions 应用能够接收匿名流量,请执行以下步骤来删除标识提供者:
在 Azure 门户中,导航到 Azure Functions 资源。
从导航菜单中选择“身份验证”。
从“标识提供者”列表中,删除与 Static Web Apps 资源相关的标识提供者。
选择“删除身份验证”以删除身份验证并允许匿名流量流向 Azure Functions 资源。
函数应用现在便可以接收匿名流量。
安全约束
身份验证和授权:如果尚未在现有 Functions 应用上设置身份验证和授权策略,则静态 Web 应用对 API 具有独占访问权。 若要使 Functions 应用可供其他应用程序访问,请添加另一个标识提供者或更改安全设置以允许未经身份验证的访问。
注意
如果在链接的 Functions 应用中启用身份验证和授权,则必须使用 Azure 应用服务授权,并且授权提供程序为版本 2。
必需的公共可访问性:现有 Functions 应用不需要应用以下安全配置。
- 限制 Functions 应用的 IP 地址。
- 限制通过专用链接或服务终结点的流量。
函数访问密钥:如果函数需要访问密钥,则必须向密钥提供从静态应用到 API 的调用。
限制
- 一个 Azure Functions Web 应用只能供一个静态 Web 应用使用。
- 工作流配置中的
api_location
值必须设置为空白字符串。 - 在 Static Web Apps 拉取请求环境中不受支持。
- 虽然 Azure Functions 应用可能会响应各种触发器,但静态 Web 应用只能通过 HTTP 终结点访问函数。