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

本地测试Azure Function从Event Hub写入CosmosDB时遇输入无效错误

问题诊断与修复方案

嘿,我帮你梳理下这个问题——你遇到的"One of the specified inputs is invalid"错误,最可能的原因是CosmosDB文档的id字段类型不满足要求。

核心问题点

CosmosDB对文档的id字段有强制要求:它必须是字符串类型,哪怕是数字形式的ID,也得用引号包裹成字符串。但看你__init__.py里的代码:

temp["id"] = 1

这里你把id设成了整数类型,这就触发了CosmosDB的输入验证错误。而你手动添加测试数据时,应该是用了字符串格式的ID,所以能正常写入。

快速修复步骤

  1. 修正id的类型:
    把代码里的整数ID改成字符串就行:

    temp["id"] = "1"
    

    如果是动态生成的ID,记得用str()把数字转换成字符串格式。

  2. 简化文档写入逻辑(可选优化):
    你当前的代码先把字典转成JSON字符串,再解析成func.Document,其实可以直接用字典创建文档,更简洁也减少出错概率:

    temp = {
        "id": "1",
        "category": "feedback"
    }
    doc.set(func.Document.from_dict(temp))
    

额外排查方向

如果修改后还是报错,可以检查这几个点:

  • 确认function.json里的databaseName和collectionName和Azure门户里的完全一致(CosmosDB的资源名称是大小写敏感的,别拼错)。
  • 检查local.settings.json里的CosmosDBConnectionString,末尾的分号可以去掉(虽然不影响,但避免潜在的格式问题),确保账号密钥和端点都正确。
  • 如果你的CosmosDB集合设置了分区键,要确保写入的文档包含这个字段(毕竟手动添加数据时肯定是带了分区键的,代码里也得对应上)。

验证方法

改完代码后重新运行本地测试,应该就能正常写入CosmosDB了。要是还有问题,打开函数的详细日志,能看到更具体的错误细节,方便进一步定位。


内容的提问来源于stack exchange,提问作者John Szatmari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:57:41