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

Azure Logic App监控Blob容器:批量上传审批及用户信息获取问题求助

问题1:批量上传时重复发送审批邮件的解决方法

核心目标是让Logic App在20分钟无新文件上传后仅触发一次流程,而非每个文件触发一次。推荐使用Azure Logic App原生的批处理模式:

  • 编辑你的Blob触发器(当Blob添加或修改时),找到批处理设置并启用
  • 配置批处理规则:
    • 选择「固定时间间隔」,设置为20分钟
    • (可选)可设置批处理阈值(如最大文件数),但你的场景优先依赖时间间隔,确保20分钟内的所有上传文件归为一个批次
  • 配置完成后,触发器会自动收集20分钟内的所有新Blob,仅触发一次Logic App运行,后续审批、复制操作都基于该批次执行,自然只会发送1份审批邮件

如果批处理模式不适用,也可以通过状态存储实现:

  • 首次触发时,在Azure存储表中创建一条记录,包含批次ID、开始时间和Blob列表
  • 后续每次Blob触发时,检查存储表中是否有未完成的批次(开始时间距当前不足20分钟),若存在则仅更新Blob列表,不启动新流程
  • 添加「延迟20分钟」动作后,再次确认该批次无新Blob加入,再发送审批邮件
问题2:获取Blob上传用户邮箱的方案

根据用户上传的认证方式,可选择以下路径:

场景1:用户通过Azure AD认证上传Blob

若用户使用Azure AD账号(如Portal、AD认证应用)上传,Blob的CreatedBy属性会包含用户的UPN(通常即邮箱):

  • 在Logic App的Blob触发器输出中,直接提取CreatedBy -> UserPrincipalName字段,该值即为上传用户的邮箱
  • 可通过「初始化变量」动作保存该值,后续用于发送通知邮件

场景2:用户用SAS/账户密钥上传

这种情况下CreatedBy仅显示存储账户名,需通过自定义元数据传递邮箱:

  • 要求用户上传Blob时,添加名为UserEmail的自定义元数据并填写邮箱地址
  • 在Logic App中添加「获取Blob元数据」动作,选择对应Blob后,从输出的Metadata中提取UserEmail字段

场景3:无需用户手动填写,强制追溯上传用户

开启存储账户的诊断日志,日志会记录每个Blob上传请求的身份信息:

  • 在Azure门户开启存储账户的诊断日志,选择记录「Blob」类别,将日志发送到Azure Monitor日志
  • 在Logic App中添加「Azure Monitor日志查询」动作,查询该Blob的上传日志,提取请求发起者的邮箱(仅适用于AD认证的上传)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:48:26