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

如何从Azure Data Factory(ADF)管道运行Azure CLI命令?

在Azure Data Factory管道中运行Azure CLI命令追加ADLS文件数据的实现方案

我来给你梳理几种实际项目里常用的实现方式,都是经过验证可行的路子:

方案1:Azure Function活动(最推荐,轻量灵活)

这是我平时用得最多的方式,把CLI命令封装到Azure Function里,再用ADF的Azure Function活动调用,既安全又好维护:

  1. 创建Azure Function
    选PowerShell或者Python runtime都行,这里以PowerShell为例,函数代码里用托管身份登录Azure,然后执行你的追加命令:
    # 用Function的系统托管身份自动登录,不用存密钥
    Connect-AzAccount -Identity
    
    # 执行ADLS文件追加的CLI命令,参数可以从Function的请求参数里传入
    $adlsAccount = $env:ADLS_ACCOUNT_NAME
    $fileSystem = $env:FILE_SYSTEM_NAME
    $targetPath = $env:TARGET_FILE_PATH
    $contentToAppend = $env:CONTENT_TO_APPEND
    
    az storage fs file append `
      --account-name $adlsAccount `
      --file-system $fileSystem `
      --path $targetPath `
      --content $contentToAppend `
      --auth-mode login
    
  2. 配置权限
    给Azure Function的系统托管身份分配Storage Blob Data Contributor角色到目标ADLS账户,确保它有写入权限。
  3. ADF管道集成
    在ADF管道里添加「Azure Function活动」,关联你创建的Function,把需要的参数(比如ADLS账户名、文件路径、要追加的数据)通过活动的「参数」或「环境变量」传入。

方案2:自定义活动+Azure Batch池(适合批量/重型操作)

如果你的追加操作涉及大量数据或者需要多节点并行处理,可以用这个方案:

  1. 创建Azure Batch池
    根据需求选择Windows或Linux虚拟机规格,启用系统托管身份。
  2. 编写执行脚本
    写一个Shell(Linux)或批处理(Windows)脚本,里面包含CLI命令:
    # 用Batch池的托管身份登录Azure
    az login --identity
    
    # 从临时文件读取要追加的数据,或者直接传入内容
    az storage fs file append \
      --account-name my-adls-account \
      --file-system my-file-system \
      --path raw-data/logs.txt \
      --content "$(cat /mnt/temp/new-log-entries.txt)" \
      --auth-mode login
    
  3. ADF管道配置
    添加「自定义活动」,选择你的Batch池,上传脚本文件,配置必要的环境变量和输入数据集(比如把要追加的数据作为输入传给Batch节点)。
  4. 权限配置
    给Batch池的托管身份分配ADLS的写入权限。

方案3:Shell脚本活动(仅限Self-hosted Integration Runtime)

如果你的ADF用了Self-hosted IR,并且IR机器能访问Azure服务,可以直接用这个方式:

  1. 准备Self-hosted IR机器
    在IR机器上安装Azure CLI,并且配置好身份验证(优先用托管身份,如果机器在Azure内;否则用服务主体)。
  2. 编写脚本
    比如PowerShell脚本:
    # 如果用服务主体登录,注意密钥要存在安全的地方,比如Key Vault
    az login --service-principal -u $env:SP_CLIENT_ID -p $env:SP_SECRET --tenant $env:TENANT_ID
    
    # 执行追加命令
    az storage fs file append `
      --account-name my-adls-account `
      --file-system my-fs `
      --path data/metrics.csv `
      --content "2024-05-20,123,456" `
      --auth-mode login
    
  3. ADF管道添加活动
    在管道里添加「Shell脚本活动」(Windows选PowerShell,Linux选Shell),把脚本内容粘贴进去,或者引用IR机器上的脚本文件,配置环境变量传入参数。

几个重要注意事项

  • 身份验证优先选托管身份:比服务主体更安全,不需要存储密钥,避免泄露风险。
  • 先单独测试CLI命令:在本地或Azure Function里先验证CLI命令能正常追加数据,再集成到ADF管道,减少排查难度。
  • 数据传递灵活处理:如果要追加的数据来自ADF的其他数据源(比如SQL、Blob),可以先把数据写到临时存储(比如ADLS的临时文件夹),再让CLI命令读取这个临时文件的内容进行追加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:38:23