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

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

有两种可能的配置支持 Azure Static Web Apps API:托管函数和自带函数。 有关配置差异的详细信息,请参阅概述

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

注意

只能在 Azure Static Web Apps 标准计划中使用自带函数。

示例

假设有一个 Azure Functions 应用,该应用通过以下位置公开终结点。

https://my-functions-app.azurewebsites.net/api/getProducts

链接之后,可以通过静态 Web 应用中的 api 路径来访问相同的终结点,如本示例 URL 所示。

https://red-sea-123.azurestaticapps.net/api/getProducts

两个终结点 URL 都指向同一函数。

在关联现有 Functions 应用之前,首先需要根据静态 Web 应用的配置进行调整。

  1. ""工作流配置文件中,将 api_location 值设置为空白字符串()。

  2. Azure 门户中打开静态 Web 应用实例。

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

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

    输入以下设置。

    设置 Value
    支持的资源类型 选择“函数应用”。
    订阅 选择 Azure 订阅名称。
    资源名称 选择 Azure Functions 应用名称。
  5. 选择“链接”。

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

重要

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

部署

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

安全约束

  • 身份验证和授权:如果尚未在现有 Functions 应用上设置身份验证和授权策略,则静态 Web 应用对 API 具有独占访问权。 若要使 Functions 应用可供其他应用程序访问,请添加另一个标识提供者或更改安全设置以允许未经身份验证的访问。

    注意

    如果在链接的 Functions 应用中启用身份验证和授权,则必须使用 Azure 应用服务授权,并且授权提供程序为版本 2。

  • 必需的公共可访问性:现有 Functions 应用不需要应用以下安全配置。

    • 限制 Functions 应用的 IP 地址。
    • 限制通过专用链接或服务终结点的流量。
  • 函数访问密钥:如果函数需要访问密钥,则必须向密钥提供从静态应用到 API 的调用。

限制

  • 一个 Azure Functions Web 应用只能供一个静态 Web 应用使用。
  • 工作流配置中的 api_location 值必须设置为空白字符串。
  • 仅在静态 Web 应用生产环境中受支持。
  • 虽然 Azure Functions 应用可能会响应各种触发器,但静态 Web 应用只能通过 Http 终结点访问函数。

后续步骤