部署时BlobTrigger使Azure Functions应用程序崩溃

问题描述

我用VS代码中的Python设置了Azure Functions应用。创建了几个http触发器之后,我想创建一个名为xml-update的Blobtrigger。在我尝试部署它之前,所有方法都运行良好。功能应用返回404。我该如何调试?

我在Azure存储中有一个名为xml-Feed的Blob容器,其中一个名为jobs.json的blob。当我使用这些绑定(和样板功能代码)部署Function App时...

{
  "scriptFile": "__init__.py","bindings": [
    {
      "name": "myblob","type": "blobTrigger","direction": "in","path": "xml-Feed/jobs.json","connection": "AzureWebJobsstorage"
    }
  ]
}

...该应用程序专门返回404

当我在本地开发BlobTrigger函数时,我能够进行读取和写入而没有任何问题。 (到实际的云存储中,而不是本地仿真。)Function App日志显示以下错误

resource name contains invalid characters

下面的function.json恢复了Function App的功能,尽管此功能已变得无用。

{
  "scriptFile": "__init__.py","path": "","connection": "AzureWebJobsstorage"
    }
  ]
}

如果path不是空字符串,则出现问题。 (即使它是一个普通的字符串,也让我对invalid character错误感到怀疑。)我无法进一步挖掘更多信息。我在“应用程序设置”中检查了连接字符串,弄乱了存储权限,但是找不到原因。

编辑:样板功能代码

import logging

import azure.functions as func

def main(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")

解决方法

我配置了一个全新的Function App,并部署了相同的代码。像魅力一样工作。我确定了这两个功能应用程序之间的区别:一个功能应用程序链接到自定义域,而另一个则没有。删除自定义域可以解决此问题。我将对此提出另一个问题。