使用 "When a blob is added or modified (properties only) (V2)" 时检索多个 blob
Retrieving more than one blob when using "When a blob is added or modified (properties only) (V2)"
我在别处有一个自动任务,它在 Azure Blob 存储容器中创建 2 个文件:
完成此操作后,我将启动一个使用触发器“添加或修改 blob 时(仅限属性)(V2)”的逻辑应用程序
如您所见,我将 return 的 blob 数量设置为 2,如果我们查看设置,我会关闭“拆分”:
然而,当触发逻辑应用程序时,它一次只检索数组中的 1 个文件:
我的逻辑应用程序的其余部分设置为处理和排列 - 因为最终游戏是发送一封包含附件列表的电子邮件,但考虑到这是如何触发的,最终会收到 2 封电子邮件,每封电子邮件都有一个附件.
这个触发器应该是这样工作的吗?还是我哪里错了?
编辑:包括触发器代码:
您遇到这种情况的原因是您上传的文件数量太多。
要使这项工作成为解决方法之一,您可以使用间隔为 1 分钟的重复触发器并使用过滤器数组来获取在那一分钟内添加的 blob 列表。
在过滤器数组中,我只过滤那一分钟的实例。我在这里对 上次修改时间 的 greater than or equal to
操作使用的语法是 formatDateTime(utcNow(), 'yyyy-MM-ddTHH:mm:00Z')
.
然后我使用变量将结果列表存储在数组中,方法是为每个项目附加一个数组变量连接器。
然后我使用条件连接器检查我是否收到数组中的任何内容,然后使用 outlook 连接器发送 list of blobs
。如果在那一分钟内没有内容或没有添加任何 blob,则进入错误部分,否则为真。
我在这里检查的条件是 listOfBlobs
数组的长度:-
length(variables('listOfBlobs')) is not equal to 0
所以这是我在 listOfArray
变量的长度为 0 时收到的内容,它不会触发任何邮件,因为没有上传任何 blob 并进入错误部分。
这是我在 listOfArray
变量的长度不为 0 时收到的内容,它会触发包含 blob 内容的邮件。
这是我上传到我的存储帐户的内容:-
这是在我的收件箱中触发的邮件。
[{"pysamp.txt":"{\"Id\":\"<ID>",\"Name\":\"pysamp.txt\",\"DisplayName\":\"pysamp.txt\",\"Path\":\"/container2408/pysamp.txt\",\"LastModified\":\"2022-02-14T05:26:08Z\",\"Size\":58,\"MediaType\":\"text/plain\",\"IsFolder\":false,\"ETag\":\"\\"0x8D9EF7A8133FFF9\\"\",\"FileLocator\":\"JTJmY29udGFpbmVyMjQwOCUyZnB5c2FtcC50eHQ=\",\"LastModifiedBy\":null}\n"},
{"aaa.txt":"{\"Id\":\"<ID>\",\"Name\":\"aaa.txt\",\"DisplayName\":\"aaa.txt\",\"Path\":\"/container2408/aaa.txt\",\"LastModified\":\"2022-02-14T05:26:08Z\",\"Size\":8686,\"MediaType\":\"text/plain\",\"IsFolder\":false,\"ETag\":\"\\"0x8D9EF7A813F6FFB\\"\",\"FileLocator\":\"JTJmY29udGFpbmVyMjQwOCUyZmFhYS50eHQ=\",\"LastModifiedBy\":null}\n"}]
这是我的逻辑应用程序的代码视图
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Compose": {
"inputs": "@variables('listOfBlobs')",
"runAfter": {
"For_each_2": [
"Succeeded"
]
},
"type": "Compose"
},
"Condition": {
"actions": {
"Send_an_email_(V2)": {
"inputs": {
"body": {
"Body": "<p>@{outputs('Compose')}</p>",
"Subject": "Sample",
"To": "v-swethaka@microsoft.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/v2/Mail"
},
"runAfter": {},
"type": "ApiConnection"
}
},
"expression": {
"and": [
{
"not": {
"equals": [
"@length(variables('listOfBlobs'))",
0
]
}
}
]
},
"runAfter": {
"Compose": [
"Succeeded"
]
},
"type": "If"
},
"Filter_array": {
"inputs": {
"from": "@body('Lists_blobs_(V2)')?['value']",
"where": "@greaterOrEquals(item()?['LastModified'], formatDateTime(utcNow(), 'yyyy-MM-ddTHH:mm:00Z'))"
},
"runAfter": {
"Lists_blobs_(V2)": [
"Succeeded"
]
},
"type": "Query"
},
"For_each_2": {
"actions": {
"Append_to_array_variable": {
"inputs": {
"name": "listOfBlobs",
"value": {
"@items('For_each_2')?['DisplayName']": "@{items('For_each_2')}\n"
}
},
"runAfter": {},
"type": "AppendToArrayVariable"
}
},
"foreach": "@body('Filter_array')",
"runAfter": {
"Initialize_variable": [
"Succeeded"
]
},
"type": "Foreach"
},
"Initialize_variable": {
"inputs": {
"variables": [
{
"name": "listOfBlobs",
"type": "array"
}
]
},
"runAfter": {
"Filter_array": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Lists_blobs_(V2)": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['azureblob']['connectionId']"
}
},
"method": "get",
"path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('AccountNameFromSettings'))}/foldersV2/@{encodeURIComponent(encodeURIComponent('JTJmY29udGFpbmVyMjQwOA=='))}",
"queries": {
"nextPageMarker": ""
}
},
"metadata": {
"JTJmY29udGFpbmVyMjQwOA==": "/container2408"
},
"runAfter": {},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"Recurrence": {
"recurrence": {
"frequency": "Minute",
"interval": 1
},
"type": "recurrence"
}
}
},
"parameters": {
"$connections": {
"value": {
"azureblob": {
"connectionId": "/subscriptions/<YOUR_SUBSCRIPTION>/resourceGroups/<YOUR_RESOURCEGROUP>/providers/Microsoft.Web/connections/azureblob",
"connectionName": "azureblob",
"id": "/subscriptions/<YOUR_SUBSCRIPTION>/providers/Microsoft.Web/locations/northcentralus/managedApis/azureblob"
},
"office365": {
"connectionId": "/subscriptions/<YOUR_SUBSCRIPTION>/resourceGroups/<YOUR_RESOURCEGROUP>/providers/Microsoft.Web/connections/office365",
"connectionName": "office365",
"id": "/subscriptions/<YOUR_SUBSCRIPTION>/providers/Microsoft.Web/locations/northcentralus/managedApis/office365"
}
}
}
}
}
我在别处有一个自动任务,它在 Azure Blob 存储容器中创建 2 个文件:
完成此操作后,我将启动一个使用触发器“添加或修改 blob 时(仅限属性)(V2)”的逻辑应用程序
如您所见,我将 return 的 blob 数量设置为 2,如果我们查看设置,我会关闭“拆分”:
然而,当触发逻辑应用程序时,它一次只检索数组中的 1 个文件:
我的逻辑应用程序的其余部分设置为处理和排列 - 因为最终游戏是发送一封包含附件列表的电子邮件,但考虑到这是如何触发的,最终会收到 2 封电子邮件,每封电子邮件都有一个附件.
这个触发器应该是这样工作的吗?还是我哪里错了?
编辑:包括触发器代码:
您遇到这种情况的原因是您上传的文件数量太多。
要使这项工作成为解决方法之一,您可以使用间隔为 1 分钟的重复触发器并使用过滤器数组来获取在那一分钟内添加的 blob 列表。
在过滤器数组中,我只过滤那一分钟的实例。我在这里对 上次修改时间 的 greater than or equal to
操作使用的语法是 formatDateTime(utcNow(), 'yyyy-MM-ddTHH:mm:00Z')
.
然后我使用变量将结果列表存储在数组中,方法是为每个项目附加一个数组变量连接器。
然后我使用条件连接器检查我是否收到数组中的任何内容,然后使用 outlook 连接器发送 list of blobs
。如果在那一分钟内没有内容或没有添加任何 blob,则进入错误部分,否则为真。
我在这里检查的条件是 listOfBlobs
数组的长度:-
length(variables('listOfBlobs')) is not equal to 0
所以这是我在 listOfArray
变量的长度为 0 时收到的内容,它不会触发任何邮件,因为没有上传任何 blob 并进入错误部分。
这是我在 listOfArray
变量的长度不为 0 时收到的内容,它会触发包含 blob 内容的邮件。
这是我上传到我的存储帐户的内容:-
这是在我的收件箱中触发的邮件。
[{"pysamp.txt":"{\"Id\":\"<ID>",\"Name\":\"pysamp.txt\",\"DisplayName\":\"pysamp.txt\",\"Path\":\"/container2408/pysamp.txt\",\"LastModified\":\"2022-02-14T05:26:08Z\",\"Size\":58,\"MediaType\":\"text/plain\",\"IsFolder\":false,\"ETag\":\"\\"0x8D9EF7A8133FFF9\\"\",\"FileLocator\":\"JTJmY29udGFpbmVyMjQwOCUyZnB5c2FtcC50eHQ=\",\"LastModifiedBy\":null}\n"},
{"aaa.txt":"{\"Id\":\"<ID>\",\"Name\":\"aaa.txt\",\"DisplayName\":\"aaa.txt\",\"Path\":\"/container2408/aaa.txt\",\"LastModified\":\"2022-02-14T05:26:08Z\",\"Size\":8686,\"MediaType\":\"text/plain\",\"IsFolder\":false,\"ETag\":\"\\"0x8D9EF7A813F6FFB\\"\",\"FileLocator\":\"JTJmY29udGFpbmVyMjQwOCUyZmFhYS50eHQ=\",\"LastModifiedBy\":null}\n"}]
这是我的逻辑应用程序的代码视图
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Compose": {
"inputs": "@variables('listOfBlobs')",
"runAfter": {
"For_each_2": [
"Succeeded"
]
},
"type": "Compose"
},
"Condition": {
"actions": {
"Send_an_email_(V2)": {
"inputs": {
"body": {
"Body": "<p>@{outputs('Compose')}</p>",
"Subject": "Sample",
"To": "v-swethaka@microsoft.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/v2/Mail"
},
"runAfter": {},
"type": "ApiConnection"
}
},
"expression": {
"and": [
{
"not": {
"equals": [
"@length(variables('listOfBlobs'))",
0
]
}
}
]
},
"runAfter": {
"Compose": [
"Succeeded"
]
},
"type": "If"
},
"Filter_array": {
"inputs": {
"from": "@body('Lists_blobs_(V2)')?['value']",
"where": "@greaterOrEquals(item()?['LastModified'], formatDateTime(utcNow(), 'yyyy-MM-ddTHH:mm:00Z'))"
},
"runAfter": {
"Lists_blobs_(V2)": [
"Succeeded"
]
},
"type": "Query"
},
"For_each_2": {
"actions": {
"Append_to_array_variable": {
"inputs": {
"name": "listOfBlobs",
"value": {
"@items('For_each_2')?['DisplayName']": "@{items('For_each_2')}\n"
}
},
"runAfter": {},
"type": "AppendToArrayVariable"
}
},
"foreach": "@body('Filter_array')",
"runAfter": {
"Initialize_variable": [
"Succeeded"
]
},
"type": "Foreach"
},
"Initialize_variable": {
"inputs": {
"variables": [
{
"name": "listOfBlobs",
"type": "array"
}
]
},
"runAfter": {
"Filter_array": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Lists_blobs_(V2)": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['azureblob']['connectionId']"
}
},
"method": "get",
"path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('AccountNameFromSettings'))}/foldersV2/@{encodeURIComponent(encodeURIComponent('JTJmY29udGFpbmVyMjQwOA=='))}",
"queries": {
"nextPageMarker": ""
}
},
"metadata": {
"JTJmY29udGFpbmVyMjQwOA==": "/container2408"
},
"runAfter": {},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"Recurrence": {
"recurrence": {
"frequency": "Minute",
"interval": 1
},
"type": "recurrence"
}
}
},
"parameters": {
"$connections": {
"value": {
"azureblob": {
"connectionId": "/subscriptions/<YOUR_SUBSCRIPTION>/resourceGroups/<YOUR_RESOURCEGROUP>/providers/Microsoft.Web/connections/azureblob",
"connectionName": "azureblob",
"id": "/subscriptions/<YOUR_SUBSCRIPTION>/providers/Microsoft.Web/locations/northcentralus/managedApis/azureblob"
},
"office365": {
"connectionId": "/subscriptions/<YOUR_SUBSCRIPTION>/resourceGroups/<YOUR_RESOURCEGROUP>/providers/Microsoft.Web/connections/office365",
"connectionName": "office365",
"id": "/subscriptions/<YOUR_SUBSCRIPTION>/providers/Microsoft.Web/locations/northcentralus/managedApis/office365"
}
}
}
}
}