调试使用事件网格触发的Azure函数

10

我有一个由事件网格触发的 Azure 函数(C#)。由于该函数只能通过事件网格触发,因此我很难在本地调试它。

我不确定是否有办法将事件网格连接到我的本地主机地址以触发函数?我已经尝试使用 Web Hook,但它只支持 HTTPS,而我的本地主机使用 HTTP。

public static void Run([EventGridTrigger]EventGridEvent eventGridEvent, ILogger log)
{
 ID = eventGridEvent.Subject;
 log.LogInformation($"ID: {ID.ToString()}");
}

任何建议都受到赞赏。


有一种方法可以在本地调试它,只需添加我在下面答案中提到的标头。 - user1106591
3个回答

22

我发现了这篇博客文章,帮助我解决了在本地调试事件网格Azure函数时的问题:https://blog.mcilreavy.com/articles/2018-12/debug-eventgrid-triggered-azure-function (Web archive link)

我这种情况所缺少的部分是aeg-event-type头。 aeg-event-type: Notification

添加后,我可以使用此URL在本地调试: http://localhost:7071/runtime/webhooks/EventGrid?functionName=nameOfYourFunction

并在请求正文中包含此事件JSON,类似于以下内容:

[ { "id": "'1", "eventType": "yourEventType", "eventTime":"10:59:00.000", "subject": "subject1", "data":{"make": "Ducati", "model": "Monster"}, "dataVersion": "1.0" } ]


这比创建隧道简单多了。只需要一个简单的头文件,太神奇了。 - ZaChickster

4

0

你说得对。目前,Event Grid 的工具正在改进中,没有简单的方法在本地测试它。

在我的 Event Grid 函数中,我将逻辑与触发器部分分开,这样我就可以单元测试逻辑,而不需要真正的事件来测试它。之后,我通过应用程序洞察和 log.LogInformation(eventGridEvent.Data.ToString()); 捕获事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接