Azure Logic Apps实现戴姆勒每日文件传输存储的路径路由问题
Azure Logic Apps按触发时间路由文件到Blob Storage指定路径
解决方法
不用额外获取当前时间,直接利用Recurrence触发器的计划触发时间做判断,这比取运行时时间更靠谱——毕竟流程可能存在延迟运行的情况。
1. 利用触发器内置的计划时间属性
Recurrence触发器自带@trigger()['scheduledTime']属性,这就是你预设的5:00或17:00触发时间,直接用这个值来区分分支即可。
2. 添加条件分支判断
在获取邮件附件的步骤之后,插入Condition操作:
- 左侧输入表达式:
@formatDateTime(trigger()['scheduledTime'], 'HH:mm') - 选择运算符
is equal to - 右侧输入固定时间值:
05:00
3. 配置两个分支的Blob上传路径
- 条件成立(5:00触发):在Blob Storage的
Create blob操作中,将Blob path设置为rk/test/@{items('Apply_to_each')?['Name']}(Apply_to_each是遍历附件的循环容器,Name对应附件文件名) - 条件不成立(17:00触发):同样使用
Create blob操作,将Blob path设置为rk/test/archive/@{items('Apply_to_each')?['Name']}
4. 避免遗漏/错误路由的优化措施
- 开启触发器的Concurrency Control,将并行度设为1,防止同一时间触发的流程并行运行导致路径混淆
- 在
Create blob操作中开启Overwrite blob选项(允许覆盖的前提下),或者添加Get blob metadata操作先检查文件是否存在,避免重复上传报错 - 给
Create blob操作设置Run After规则,确保只有在获取附件成功后才执行,避免空附件导致流程异常 - 启用Logic Apps的Diagnostic Settings,将日志发送到Log Analytics,方便排查触发时间异常或路径错误问题
关键表达式说明
@formatDateTime(trigger()['scheduledTime'], 'HH:mm'):将触发时间格式化为24小时制的时分字符串,实现对计划时间的精准匹配@{items('Apply_to_each')?['Name']}:在遍历附件的循环中动态获取每个附件的文件名,保证文件路径包含正确的文件名
内容的提问来源于stack exchange,提问作者Rohit
相关产品推荐
相关产品推荐

