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

将自己的函数引入 Azure Static Web Apps

Azure 静态Web 应用提供 API 集成,使你能够生成依赖于数据和服务的后端 API 的前端 Web 应用程序。 这两个 API 集成选项包括:托管函数和自带后端。 有关这些选项之间的差异的详细信息,请参阅 概述

本文演示如何将现有的 Azure Functions 应用链接到 Azure Static Web Apps 资源。

注意

与 Azure Functions 的集成需要静态Web 应用标准计划。

静态Web 应用拉取请求环境中不支持后端集成。

先决条件

若要将函数应用链接到静态 Web 应用,需要具有现有的 Azure Functions 资源和静态 Web 应用。

资源 说明
Azure Functions 如果还没有 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前缀,因为静态Web 应用与向/api链接资源发出的请求匹配,并代理链接资源的完整路径。

从静态Web 应用资源中删除托管函数(如果存在)

在关联现有 Functions 应用之前,首先需要调整静态 Web 应用的配置,以删除托管函数(如果有)。

  1. ""工作流配置文件中,将 api_location 值设置为空白字符串()。
  1. Azure 门户中打开静态 Web 应用实例。

  2. 在“设置”菜单中,选择“API”

  3. 在“生产”行中,选择“链接”以打开“链接新后端”窗口

    输入以下设置。

    设置 “值”
    后端资源类型 选择“函数应用”
    订阅 选择 Azure 订阅名称。
    资源名称 选择 Azure Functions 应用名称。
    后端槽 选择 Azure 函数的槽名称。
  4. 选择链接

Azure Functions 应用现在映射到静态 Web 应用的 /api 路由。

重要

在链接现有的 Functions 应用程序之前,请确保在工作流配置文件中,将 api_location 值设置为空白字符串("")。 此外,调用假定外部函数应用保留默认 api 路由前缀。 许多应用在 host.json 中删除此前缀。 请确保配置中已设置好前缀,否则调用会失败。

部署

你需要负责为 Azure Functions 设置部署工作流

若要从静态 Web 应用取消链接函数应用,请执行以下步骤:

  1. 在 Azure 门户中,转到 Static Web Apps。

  2. 从导航菜单中选择“API”

  3. 找到要取消链接的环境,然后选择函数应用名称。

  4. 选择“取消链接”

取消链接过程完成后,开始 /api 路由的请求不再代理到 Azure Functions 应用。

注意

为了防止意外将函数应用公开给匿名流量,不会自动删除链接过程创建的标识提供者。 可以从函数应用的身份验证设置中删除名为 Azure Static Web 应用(Linked)的标识提供者。

从 Azure Functions 资源中删除身份验证

若要使 Azure Functions 应用能够接收匿名流量,请按照以下步骤删除标识提供者:

  1. 在Azure 门户中,导航到 Azure Functions 资源。

  2. 从导航菜单中选择“身份验证”。

  3. 从标识提供者列表中,删除与静态Web 应用资源相关的标识提供者。

  4. 选择“删除身份验证” 以删除身份验证 并允许匿名流量流向 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 终结点访问函数。

后续步骤