You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
}

额外注意事项

  1. 确认你的Blob存储和CosmosDB的连接字符串(cloudsavestorage_STORAGE、MyCosmosDBConnectionString)已经在Azure函数应用的配置>应用设置里正确添加,并且对应的服务账号有足够的读写权限。
  2. 因为你设置了createIfNotExists: false,请确保CosmosDB里的ToDoList数据库和Items集合已经提前创建好,否则后续写入会失败。
  3. 建议用logging.error替代logging.info记录错误信息,这样在Azure门户的日志里更容易筛选出异常内容。

内容的提问来源于stack exchange,提问作者Brian G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:12:38