如何用Azure Logic Apps配置Blob Storage文件上传/未上传的邮件通知
解决Azure Logic Apps定时检测Blob Storage并发送邮件通知(无论有无新文件)
核心方案
放弃依赖Blob Storage的事件触发(仅当有新文件时触发),改用定时触发器固定每15分钟执行一次流程,在流程内主动检测周期内是否有新增Blob,再分支发送对应邮件。
具体配置步骤
1. 配置定时触发
添加Recurrence触发器,设置间隔为15分钟,频率选择「Minute」——这能保证每15分钟流程必执行一次,不受Blob变化影响。
2. 过滤最近15分钟的Blob
添加Azure Blob Storage的List blobs动作,关联目标存储账户和容器:
- 在「Filter query」中输入OData过滤语法,仅获取当前时间前15分钟内创建的Blob:
这里CreatedDateTime ge '@{addMinutes(utcNow(), -15)}'utcNow()取当前UTC时间,addMinutes计算出15分钟前的时间戳,精准筛选周期内的新增文件。
3. 判断是否存在新Blob
添加Condition控件,设置判断逻辑:
- 左侧选择
List blobs返回的Body/value(即Blob数组) - 运算符选择「is empty」
- 右侧输入
true
4. 分支发送邮件
- 分支1(无新Blob):发送邮件,内容示例:「过去15分钟内无新文件上传至目标Blob容器」
- 分支2(有新Blob):可遍历Blob列表拼接内容,示例:「过去15分钟新增文件:@{join(body('List_blobs')?['value']?['Name'], ', ')}」
注意事项
- 确认Blob的
CreatedDateTime属性有效性:如果是上传新文件,该属性会自动更新;如果是覆盖已有文件,需确认是否会刷新该时间(若不会,建议改用LastModifiedDateTime作为过滤字段) - 时区适配:若需使用本地时间,可对时间做转换,比如中国时区:
convertTimeZone(utcNow(), 'UTC', 'China Standard Time') - 权限配置:确保Logic Apps拥有Blob Storage的读取权限,可通过存储账户密钥或托管身份完成连接授权
内容的提问来源于stack exchange,提问作者Rohit
相关产品推荐
相关产品推荐

