EventGrid订阅绑定通过ngrok绑定到本地计算机,而不是Azure中的函数

时间:2018-09-20 13:52:22

标签: azure-functions azure-eventgrid

我有一个Azure Function应用程序,当它通过ngrok托管在开发计算机上时,可以创建EventGrid订阅,但是当发布到Azure时,完全相同的功能将不接受订阅。

错误是“尝试验证提供的端点<>失败”。

我已经考虑了一些明显的问题,例如url的长度,但这似乎不是原因。这两个网址之间唯一的区别是主机(如功能应用程序的主机网址)和ngrok生成的主机。我尝试使用门户和CLI创建具有相同结果的订阅。

有什么办法解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

在Powershell中使用Azure CLI时遇到了相同的问题。对我来说,答案本质上是Roman Kiss的评论:转义端点URL,因为它包含&符号。

例如,更改此:

  -endPoint "https://xxxx.azurewebsites.net/runtime/webhooks/EventGrid?FunctionName=xxxx&code=xxxxx"

对此:

  -endPoint "https://xxxx.azurewebsites.net/runtime/webhooks/EventGrid?functionName=xxxx""&""code=xxxx"

它使用ngrok的原因是因为ngrok端点(指向本地开发功能主机)不需要&code = xxxx部分。

答案 1 :(得分:0)

有两种可用于事件网格订阅者的天蓝色函数触发器,例如:

  1. HttpTrigger

    endpointUrl format = https://{functionApp}.azurewebsites.net/api/{functionName}?code={functionKey}
    

请注意,HttpTrigger函数负责验证事件网格消息。查看更多详细信息here

  1. EventGridTrigger

    endpointUrl format = https://{functionApp}.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName={functionName}&code={_masterKey}
    

看起来,您的端点不包含url查询字符串。

答案 2 :(得分:0)

对此的答案是在访问云中而不是开发机器上的EventGrid订户时包括code参数。详细信息在这里。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid#create-a-subscription

以上内容(似乎是所有文档的内容)未声明明确要求这样做。