手动运行非 HTTP 触发的函数

本文演示如何通过特殊格式的 HTTP 请求手动运行非 HTTP 触发的函数。

在某些上下文中,可能需要“按需”运行间接触发的 Azure Functions。 例如,按计划函数或者根据其他资源的操作来运行的函数属于间接触发的函数。

以下示例中使用了 Postman,但也可以使用 cURLFiddler 或任何其他类似的工具来发送 HTTP 请求。

定义请求位置

若要运行非 HTTP 触发的函数,需要通过某种方式向 Azure 发送运行函数的请求。 用于发出该请求的 URL 采用特定的形式。

定义请求位置:主机名 + 文件夹路径 + 函数名

  • 主机名: 函数应用的公共位置,由函数应用的名称和“chinacloudsites.cn”或自定义域组成。
  • 文件夹路径: 若要通过 HTTP 请求访问非 HTTP 触发的函数,需通过 admin/functions 文件夹发送请求。
  • 函数名: 要运行的函数的名称。

请将 Postman 中的此请求位置与函数发送给 Azure 的请求中的主密钥配合使用,以便运行函数。

注意

在本地运行时,不需要函数的主密钥。 可以直接调用函数,省略 x-functions-key 标头。

获取函数的主密钥

  1. Azure 门户中导航到函数应用,选择“应用密钥”,然后选择 _master 密钥。

    找到要复制的主密钥。

  2. 在“编辑密钥”部分中,将密钥值复制到剪贴板,然后选择“确定”。

    将主密钥复制到剪贴板。

  3. 复制主密钥之后,选择“代码 + 测试”,然后选择“日志”。 手动从 Postman 运行已记录函数时,会在此处看到该函数中的消息。

    此屏幕截图显示了“代码 + 测试”页,其中显示了日志中的消息。

注意

由于函数应用中提升的权限由主密钥授予,因此不应与第三方共享此密钥或在应用程序中分发此密钥。 此密钥应仅发送到 HTTPS 终结点。

调用该函数

打开 Postman 并执行以下步骤:

  1. 在 URL 文本框中输入请求位置

  2. 确保 HTTP 方法设置为 POST

  3. 选择“标头”选项卡。

  4. 键入“x-functions-key”作为第一个密钥,并粘贴主密钥(在剪贴板中)作为值。

  5. 键入“Content-Type”作为第二个密钥,然后键入“application/json”作为值。

    Postman 标头设置。

  6. 选择“正文”选项卡。

  7. 键入“{ "input": "test" }”作为请求的正文。

    Postman 正文设置。

    注意

    如果不想将数据传入函数,仍必须将空字典 {} 作为 POST 请求的正文进行传递。

  8. 选择Send

    通过 Postman 发送请求。

    Postman 然后会报告状态“202 已接受”。

  9. 接下来,返回到 Azure 门户中的函数。 查看日志,你会看到手动调用函数后显示的消息。

    查看日志以了解主密钥测试结果。

后续步骤