是否有一个选项可以从 Azure 函数的部署中获取输出值处的事件网格触发器 url + 键?
我们想要做的场景如下: - 我们通过 ARM 在 VSTS 版本中部署功能服务。 - 部署函数服务后,我们部署事件网格订阅。
谢谢, 什拉达·阿格拉瓦尔
最佳答案
是的,有一种方法可以使用 REST API 来获取函数访问代码。步骤如下:
假设函数名称为 EventGridTrigger2 和 run.csx:
#r "Newtonsoft.Json" using Newtonsoft.Json; using Newtonsoft.Json.Linq; public static void Run(JObject eventGridEvent, TraceWriter log) { log.Info(eventGridEvent.ToString(Formatting.Indented)); }
和 function.json 文件:
{
"bindings": [
{
"type": "eventGridTrigger",
"name": "eventGridEvent",
"direction": "in"
}
],
"disabled": false
}
如您所见,上述绑定(bind)是无类型的,它将适用于任何输出架构,例如InputEventSchema、EventGridSchema(默认架构)和CloudEventV01Schema em>(修复一些错误后)。
创建的订阅的destination属性如下所示:
"destination": { "properties": { "endpointUrl": null, "endpointBaseUrl": "https://myFunctionApp.azurewebsites.net/admin/extensions/EventGridExtensionConfig" }, "endpointType": "WebHook" },
请注意,Azure EventGrid 触发器的完整订阅者 URL 具有以下格式,其中查询字符串包含用于将请求路由到正确函数的参数:
https://{FunctionApp}.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName={FunctionName}&code={masterKey}
为了创建订阅者,我们必须使用包含查询字符串的完整订阅者Url。此时,唯一未知的值是 masterKey。
要获取 Function App(主机)主 key ,我们必须使用管理 REST API 调用:
https://management.azure.com/subscriptions/{mySubscriptionId}/resourceGroups/{myResGroup}/providers/Microsoft.Web/sites/{myFunctionApp}/functions/admin/masterkey?api-version=2016-08-01
响应的格式如下:
{
"masterKey": "*************************************************"
}
请注意,此调用需要身份验证承载 token 。
一旦我们有了 FunctionApp(主机)的主 key ,我们就可以将它用于该主机内的任何功能。
关于azure - 是否有一个选项可以从 Azure 函数的部署中获取输出值处的事件网格触发器 url + 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50367435/