如何使用azure函数时间触发器获取所有blob存储(新的或更新的)

时间:2017-10-31 05:13:59

标签: azure azure-storage-blobs azure-functions

我有要求我需要获取在特定持续时间后更新或添加的所有blob存储。

示例: - 在容器中我将zip文件列表作为blob,我需要在给定的时间间隔内获取所有更新或新添加的blob,就像每隔1小时后我需要获取所有新添加或更新的blob。

所以我使用了azure函数创建了一次触发函数但无法获得所有blob(更新或新添加)。

有谁能让我知道如何解决这个问题。

function.json文件

"bindings": [
{
  "name": "myTimer",
  "type": "timerTrigger",
  "direction": "in",
  "schedule": "0 */2 * * * *"
},
{
  "type": "blob",
  "name": "myBlob", 
  "path": "*****/******.zip",     
  "connection": "***************",
  "direction": "in"
}

]   "禁用":false }

index.js

module.exports = function(context, trigger, inputBlob) {
context.log(inputBlob);
//it's also available on context.bindings
context.log(context.bindings.inputBlob); // will log the same thing as above
context.done();

}

先谢谢。

2 个答案:

答案 0 :(得分:1)

理想情况下,如果以反应方式使用函数,即函数直接(或通过事件网格)在Blob更改事件上运行,函数效果最佳。

如果您必须坚持计时器,然后找到所有已更改的Blob,Azure功能绑定将无法帮助您。在这种情况下,删除您尝试声明的输入绑定,并使用Blob Storage API搜索已更改的blob。我相信Azure Storage SDK for Node.js支持列出blob,但我还没有使用它。

答案 1 :(得分:1)

您的方案是使用Azure事件网格(现在在预览中)解决方案与事件驱动的blob存储发布者的良好候选者。更多细节here

基本上,Azure订阅的容器数量,blob存储没有限制。如果您的blob存储已订阅了事件兴趣,例如已创建或删除blob,则可以将自定义筛选的事件消息传递给订阅者,例如,EventGridTrigger函数。

以下屏幕截图显示了事件驱动的blob存储的示例:

enter image description here

以下日志显示在删除blob时按功能收到的事件消息:

logs

请注意,blob存储发布者发送的事件消息可以根据 subject 和/或 eventType 属性在订阅中进行过滤。换句话说,每个订阅都可以告诉Event Grid其事件来源的兴趣。

对于流媒体事件及其分析,可以为Event Hub订阅者订阅事件网格,请参阅以下屏幕摘要:

streaming

来自源兴趣的所有事件都将提取到 Event Hub ,它代表流管道的入口点。事件流(例如,帐户和/或天蓝色订阅中创建/删除的blob的事件消息)由ASA作业根据需要进行分析。 ASA作业的输出将触发 Azure功能以完成业务要求。

有关事件中心作为事件网格目标的更多详细信息是here