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

ADF中如何将Copy Data步骤的文件名/路径传递给Azure Functions

实现方案总览

你可以直接通过ADF内置的动态表达式,从Copy Data活动的运行输出中提取文件路径/文件名,直接嵌入到Azure Functions活动的请求Body中,无需额外配置存储触发器,具体实现步骤如下:


步骤1:捕获Copy Data活动的输出文件信息

Copy Data活动运行完成后会生成结构化输出,你可以先触发一次测试运行,在管道运行历史的「输出」tab中查看实际返回的字段结构,根据你是单文件复制还是批量多文件复制选择对应取值方式:

  • 单文件复制场景:直接从输出的sink节点取字段即可,ADLS Gen2完整路径拼接示例:
    @concat('abfss://<你的容器名>@<存储账号名>.dfs.core.windows.net/', activity('Copy Data').output.sink.folderPath, '/', activity('Copy Data').output.sink.fileName)
  • 批量多文件复制场景:进入Copy Data活动的「设置」页,勾选日志记录,选择记录「已复制的文件」,将日志输出到指定的ADLS路径;后续增加Lookup活动读取该日志文件,解析出所有复制成功的文件路径列表,再嵌套ForEach活动循环调用Azure Functions即可。

步骤2:配置Azure Functions活动的请求Body

在管道中添加Azure Functions活动,选择POST请求方法,在Body配置框中直接使用动态表达式填入你需要传递的参数,示例配置如下:

{
  "fileFullPath": "@concat('abfss://<你的容器名>@<存储账号名>.dfs.core.windows.net/', activity('Copy Data').output.sink.folderPath, '/', activity('Copy Data').output.sink.fileName)",
  "fileName": "@activity('Copy Data').output.sink.fileName",
  "opType": "sftp_sync_process"
}

你可以根据自己的Azure Functions代码逻辑调整参数名、增加其他自定义参数。


步骤3:VNet适配配置注意事项

因为你的PostgreSQL部署在VNet内,需要额外完成以下配置避免访问失败:

  • 确保ADF已配置VNet集成,Azure Functions已开启VNet接入,二者和PostgreSQL在同一VNet或已配置对等互通
  • PostgreSQL的防火墙规则放行Azure Functions所在子网的IP段
  • 如果ADLS也配置了网络访问限制,需要同时放行ADF和Azure Functions的访问权限,建议优先用托管身份做身份校验,无需传递密钥信息。

常见问题规避
  • 路径拼接时如果出现多余斜杠,可以用@replace()函数处理,例如@replace(<拼接后的路径>, '//', '/')
  • 如果Copy Data活动配置了错误处理、跳过失败文件,建议在传递路径前先判断activity('Copy Data').output.status的值为Succeeded再调用Azure Functions,避免传递无效文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:27:06