手动运行非 HTTP 触发的函数
本文演示如何通过特殊格式的 HTTP 请求手动运行非 HTTP 触发的函数。
在某些上下文中,例如在开发和故障排除期间,可能需要运行间接触发的 Azure 函数“按需”。 例如,按计划函数或者根据事件来运行的函数属于间接触发的函数。
本文中所述的过程等效于在 Azure 门户中使用函数的“代码 + 测试”选项卡的“测试/运行”功能。 还可以使用 Visual Studio Code 手动运行函数。
先决条件
本文中的示例使用 HTTP 测试工具。 请确保选择一个可保护数据安全的工具。 有关详细信息,请参阅 HTTP 测试工具。
定义请求位置
若要运行非 HTTP 触发的函数,需要通过某种方式向 Azure 发送运行函数的请求。 用于发出该请求的 URL 采用特定的形式。
- 主机名: 函数应用的公共位置,由函数应用的名称和“chinacloudsites.cn”或自定义域组成。 使用用于暂存的部署槽位时,主机名部分是追加了
-<slotname>
的生产主机名。 在前面的示例中,URL 将为名为staging
的槽的myfunctiondemos-staging.chinacloudsites.cn
。 - 文件夹路径:若要通过 HTTP 请求访问非 HTTP 触发的函数,需通过路径
admin/functions
发送请求。/admin/
路径下的 API 只能通过授权进行访问。 - 函数名: 要运行的函数的名称。
在函数应用中向管理员终结点发出请求时,需要注意以下事项:
- 向
/admin/
路径下的任何终结点发出请求时,必须在请求的x-functions-key
标头中提供应用的主密钥。 - 在本地运行时,不会强制实施授权,并且不需要函数的主密钥。 可以直接调用函数,省略
x-functions-key
标头。 - 在部署槽中访问函数应用终结点时,请确保在请求 URL 中使用槽特定的主机名以及特定于槽的主密钥。
获取主密钥
可以从 Azure 门户或使用 Azure CLI 获取主密钥。
注意
由于函数应用中提升的权限由主密钥授予,因此不应与第三方共享此密钥或在应用程序中分发此密钥。 此密钥应仅发送到 HTTPS 终结点。
调用该函数
在 Azure 门户中,导航到函数应用顶部并选择函数。
选择“代码 + 测试”,然后选择“日志”。 手动从 HTTP 测试工具运行已记录函数时,会在此处看到该函数中的消息。
在 HTTP 测试工具中,使用定义的请求位置作为请求 URL,确保 HTTP 请求方法为 POST,并包含以下两个请求标头:
密钥 值 x-functions-key
粘贴自剪贴板的主密钥值。 Content-Type
application/json
确保 POST 请求有效负载/正文为
{ "input": "<TRIGGER_INPUT>" }
。 你提供的具体<TRIGGER_INPUT>
取决于触发器的类型,但它只能是字符串、数字或布尔值。 对于使用 JSON 有效负载的服务,例如 Azure 服务总线,应将测试 JSON 有效负载转义并序列化为字符串。如果不想将输入数据传入函数,仍必须将空字典
{}
作为 POST 请求的正文提供。 有关详细信息,请参阅特定非 HTTP 触发器的参考文章。发送 HTTP POST 请求。 响应应为 HTTP 202(已接受)响应。
接下来,返回到 Azure 门户中的函数。 查看日志,你会看到手动调用函数后显示的消息。
访问发送到触发器的数据的方式取决于触发器的类型和函数语言。 有关详细信息,请参阅特定触发器的参考示例。