添加/修改触发器

时间:2020-04-14 19:34:38

标签: azure sftp azure-logic-apps last-modified

我有一个连接到SFTP服务器的逻辑应用程序,它由“添加或修改文件”触发器触发。它设置为每10分钟运行一次,查找新文件/修改过的文件并将其复制到Azure存储帐户。

问题是此SFTP服务器路径设置为每X分钟覆盖一组文件(对此我无能为力),因此,Logic App通常与这些文件的更新过程重叠,并下载仍在写。结果是文件损坏。

是否有一种方法可以向When files are added or modified (properties only)添加过滤器,使其仅考虑修改日期至少为1分钟的文件?

这样,当前正在写入的文件将不会添加到要下载的文件列表中。然后,Logic App的下一次运行将获取此被忽略的文件,依此类推。

更新

我在触发器的设置中找到了“触发器条件”,但找不到任何有关它的文档。 enter image description here

2 个答案:

答案 0 :(得分:0)

根据测试触发器“添加或修改文件”,看来我们无法在触发器中添加过滤器以过滤至少1分钟前修改的记录。我们只需获取List of Files LastModified日期时间并循环它们,使用“ If”条件来判断是否应下载它。

enter image description here

更新

enter image description here

屏幕截图中的表达式为:

sub(ticks(utcNow()), ticks(triggerBody()?['LastModified']))

更新解决方法

上次修改时间少于1分钟时,是否可以添加“延迟”操作?例如,如果上次修改时间少于60秒,请使用“延迟”等待5分钟,直到覆盖操作完成,然后进行下载。 enter image description here

答案 1 :(得分:0)

我检查了示例ArrayIndexOutOfBoundsException,实际上它使用了Logical comparison functions中的条件函数,因此关键字是确保要过滤的属性位于@equals(triggers().code, 'InternalServerError')或{{ 1}},否则您将收到以下错误。

enter image description here

因此,我将表达式更改为类似trigger,这样可以过滤修改程度小于triggerBody的文件,而不会触发流程。

您还可以在Logical comparison functions中使用其他功能,例如@greater(triggerBody().LastModified,'2020-04-20T11:23:00Z')2020-04-20T11:23:00Z等。