Azure Blob Trigger Python函数写入CosmosDB时出现FunctionLoadError错误求助
解决Azure Python函数的FunctionLoadError问题
看了你的错误日志和代码,问题根源非常清晰——Python函数里声明的参数名和function.json配置的绑定名称不匹配。错误提示里明确说doc参数在配置文件里找不到,而你的CosmosDB输出绑定的name字段是userJson,这就是触发加载失败的核心原因。
修复步骤(二选一即可)
你只需要让代码参数名和配置里的绑定名称保持一致:
方式1:修改Python代码的参数名
把函数定义里的doc改成和function.json一致的userJson,同时更新后续调用的地方:
import logging import azure.functions as func import json # 建议加上,用于提前验证JSON格式 def main(myblob: func.InputStream, userJson: func.Out[func.Document]): logging.info(f"Python blob trigger function processed blob \n" f"Name: {myblob.name}\n" f"Blob Size: {myblob.length} bytes") # 注意:read()返回的是bytes类型,需要先转成字符串 json_data = myblob.read().decode('utf-8') try: # 提前验证JSON格式,避免后续解析失败 json.loads(json_data) # 写入CosmosDB userJson.set(func.Document.from_json(json_data)) except json.JSONDecodeError as e: logging.error(f"Blob contains invalid JSON: {e}") except Exception as e: logging.error(f"Failed to write to CosmosDB: {e}") print('Error:', e)
方式2:修改function.json的绑定名称
把CosmosDB绑定的name字段改成和代码一致的doc:
{ "scriptFile": "__init__.py", "bindings": [ { "name": "myblob", "type": "blobTrigger", "direction": "in", "path": "cloud-save-blob-container/{name}", "connection": "cloudsavestorage_STORAGE" }, { "type": "cosmosDB", "name": "doc", // 这里改成doc "databaseName": "ToDoList", "collectionName": "Items", "createIfNotExists": false, "connectionStringSetting": "MyCosmosDBConnectionString", "direction": "out" } ], "disabled": false }
额外注意事项
- 确认你的Blob存储和CosmosDB的连接字符串(
cloudsavestorage_STORAGE、MyCosmosDBConnectionString)已经在Azure函数应用的配置>应用设置里正确添加,并且对应的服务账号有足够的读写权限。 - 因为你设置了
createIfNotExists: false,请确保CosmosDB里的ToDoList数据库和Items集合已经提前创建好,否则后续写入会失败。 - 建议用
logging.error替代logging.info记录错误信息,这样在Azure门户的日志里更容易筛选出异常内容。
内容的提问来源于stack exchange,提问作者Brian G
相关产品推荐
相关产品推荐

