我有要求我需要获取在特定持续时间后更新或添加的所有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();
}
先谢谢。
答案 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存储的示例:
以下日志显示在删除blob时按功能收到的事件消息:
请注意,blob存储发布者发送的事件消息可以根据 subject 和/或 eventType 属性在订阅中进行过滤。换句话说,每个订阅都可以告诉Event Grid其事件来源的兴趣。
对于流媒体事件及其分析,可以为Event Hub订阅者订阅事件网格,请参阅以下屏幕摘要:
来自源兴趣的所有事件都将提取到 Event Hub ,它代表流管道的入口点。事件流(例如,帐户和/或天蓝色订阅中创建/删除的blob的事件消息)由ASA作业根据需要进行分析。 ASA作业的输出将触发 Azure功能以完成业务要求。
有关事件中心作为事件网格目标的更多详细信息是here。