Docker托管的Azure函数无法与事件网格链接

时间:2019-02-18 18:17:38

标签: azure docker azure-functions azure-eventgrid

我试图通过事件网格将托管在azure blob存储上的静态站点连接到azure函数(托管在docker容器中)。我的计划是使用该功能来优化添加到Blob存储中的图像,以减小文件大小。

我很欣赏这个例子,但是我希望对事件网格和泊坞窗有所了解,这对我很有用。

目前,我无法将事件网格连接到我的azure函数。门户无法从该功能向事件网格添加订阅,因为该订阅位于Docker容器中。

我正在通过主密钥在creating your cluster上的Microsoft指南中执行以下步骤。 (然后将其用于设置订阅)

当我点击链接时: http://<func-app>.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code=<master_key> 我得到404(使用HTTPS时相同)。

我替换了功能应用的名称,并从此处获得了master_key(名为_master): getting the function system key

我只能认为自己做错了什么,但我不知道该怎么做,感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

关于为linux功能生成系统密钥似乎存在一些问题。我确实遇到了同样的错误,而在Windows上一切正常。

解决方法是直接使用主密钥配置端点,这就像我的魅力一样。

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={masterkey}

答案 1 :(得分:1)

最后,请执行以下两个步骤来修复它:

  • 确保使用正确的方法签名。我已将IActionResult作为返回类型添加到函数中,而不是此方法签名:public static void EventGridTest([EventGridTrigger]EventGridEvent eventGridEvent, ILogger log)(也可以使用异步Task代替void)。使用错误的签名,函数运行时无法找到有效的函数签名,直到我实际运行func host start时,该错误才浮出水面,此时我得到以下信息:
Microsoft.Azure.WebJobs.Host: Error indexing method '<funcName>'.
Microsoft.Azure.WebJobs.Host: Cannot bind parameter '$return' to type IActionResult&. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).

非常感谢Roman KissJerry Lui帮助我解决了这个问题。

答案 2 :(得分:0)

我一直遇到同样的问题。在Docker容器中使用EventGridTriggers部署FunctionApp时,有时不会显示eventgrid_extension键。有时它会立即显示,有时是几个小时之后,有时甚至永远不会显示。

我注意到,即使eventgrid_extension密钥未在Azure门户中显示,但在与FunctionApp关联的存储Blob中仍然可用。

也许直接从Blob中提取密钥可用作解决方法。