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

如何在ADF内将管道变量值作为新记录插入CosmosDB

解决方案:在ADF内将运行时JSON变量插入CosmosDB

无需依赖外部服务,可通过以下两种ADF原生方案实现需求:

方案1:Web活动调用CosmosDB REST API

直接用ADF的Web活动调用CosmosDB的创建文档API,插入运行时生成的JSON记录:

  1. 准备API信息
    • 获取CosmosDB账户端点:格式为https://<账户名>.documents.azure.com:443/
    • 获取账户主密钥/读写密钥(来自CosmosDB门户「密钥」页面)
    • 确定目标数据库和容器的API路径:dbs/<数据库名>/colls/<容器名>/docs
  2. 配置Web活动
    • URL:拼接完整API地址,示例:@concat('https://<账户名>.documents.azure.com:443/dbs/MyDB/colls/LogContainer/docs')
    • 方法:选择POST
    • Headers:添加3个必填请求头
      • Content-Type:application/json
      • x-ms-date:@utcNow('R')(生成符合RFC1123格式的时间戳)
      • x-ms-version:2021-05-15(可根据CosmosDB版本调整)
    • Body:直接引用你的JSON变量,示例:@variables('PipelineRunLogJson')
    • 认证配置
      • 选Key认证:Header name填authorization,Value用ADF表达式生成签名:
        @concat('type=master&ver=1.0&sig=', uriBase64(hmacSha256(encodeUriComponent(concat(utcNow('R'), '\n', concat('/dbs/', 'MyDB', '/colls/', 'LogContainer', '/docs'))), '<你的主密钥>')))
        
        替换其中的数据库名、容器名和主密钥即可。
      • 选托管身份认证:确保ADF托管身份拥有CosmosDB的写入权限,认证类型选Managed Identity,资源填https://documents.azure.com/
  3. 验证结果
    运行管道后,可在CosmosDB数据资源管理器中查看是否成功插入新文档。

方案2:CosmosDB存储过程活动

如果需要更复杂的插入逻辑,可通过存储过程实现:

  1. 创建CosmosDB存储过程
    在目标容器中创建插入文档的存储过程,示例代码:
    function insertRunLog(doc) {
        var collection = getContext().getCollection();
        var insertSuccess = collection.createDocument(collection.getSelfLink(), doc, function(err, res) {
            if (err) throw new Error('插入失败:' + err.message);
            getContext().getResponse().setBody(res.id);
        });
        if (!insertSuccess) throw new Error('文档插入请求未被接受');
    }
    
  2. 配置ADF存储过程活动
    • 选择目标CosmosDB链接服务,指定数据库和容器
    • 选择创建好的存储过程名称
    • 在「参数」中传入你的JSON变量:@variables('PipelineRunLogJson')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:15:10