如何使用Azure实现FTP文件上传通知并触发ADF复制作业(不使用Logic Apps)
仅使用ADF实现FTP文件上传触发复制作业的可行方案
完全不需要依赖Logic Apps,有两种成熟的实现方式:
- 方案1:翻滚窗口触发器+文件存在性校验
这是最通用的无额外依赖方案:- 创建频率符合业务延迟要求的
tumbling window(翻滚窗口)触发器,最小可配置为1分钟轮询一次,对延迟要求不高的场景可设置为5/15/30分钟不等 - 触发器关联的Pipeline中,第一步配置
Get Metadata活动,对接目标FTP服务器的指定路径,活动字段选择Exists用于校验目标文件/标记文件是否存在 - 新增
If Condition判断逻辑,判断Get Metadata返回的存在性结果:
- 结果为真时,执行后续的复制作业,作业执行完成后可新增删除源文件/移动源文件到归档目录/删除上传标记文件的操作,避免重复触发
- 结果为假时,直接终止Pipeline即可
- 创建频率符合业务延迟要求的
- 方案2:主动监听触发
对延迟要求高、不想产生无效轮询开销的场景可以用:- 在FTP服务器侧部署轻量的文件监听脚本(可自行用Python/Shell实现),监听到目标文件上传完成事件后,直接调用ADF的Pipeline运行REST接口主动触发复制作业
- 调用ADF接口的鉴权使用Azure AD服务主体,给服务主体配置对应ADF的Pipeline触发权限即可,全程不需要引入其他Azure服务
- 通用优化建议
建议要求上传端上传完业务文件后,同步上传一个同名的.ok空标记文件,ADF侧只校验.ok文件是否存在,可以完全避免捕获到还未上传完成的不完整文件,降低复制作业出错概率
内容的提问来源于stack exchange,提问作者Teegala Akhil reddy
相关产品推荐
相关产品推荐

