当前位置: 首页 > 知识库问答 >
问题:

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

宰烈
2023-03-14

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

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

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

谁能告诉我如何解决这个问题。

作用json文件

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

],“禁用”:false }

索引.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个答案

闻人河
2023-03-14

您的方案是将Azure事件网格(现已在预览版中)解决方案与事件驱动的blob存储发布者一起使用的好选择。此处有更多详细信息。

基本上,对于容器、blob存储或者Azure订阅的数量没有限制。如果您的blob存储已为事件兴趣订阅,例如blob已被创建或删除,则自定义过滤的事件消息可被传递给订阅者,例如EventGridTrigger函数。

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

以下日志显示了当blob已被删除时,函数收到的事件消息:

请注意,可以根据主题和/或 eventType 属性在订阅中筛选 Blob 存储发布者发送的事件消息。换句话说,每个订阅都可以告知事件网格其事件源兴趣。

对于流式处理事件及其分析,可以为事件中心订阅者订阅事件网格,请参阅以下屏幕代码段:

来自源兴趣的所有事件都将引入事件中心,事件中心表示流管道的入口点。事件流(例如跨帐户和/或 Azure 订阅的已创建/已删除 Blob 的事件消息)正由 ASA 作业根据需要进行分析。ASA 作业的输出将触发 Azure 函数来完成业务需求。

有关事件中心作为事件网格目标的更多详细信息,请参见此处。

钱德海
2023-03-14

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

如果您必须坚持使用计时器,然后查找所有更改的blob,Azure函数绑定将不会帮助您。在这种情况下,请删除您试图声明的输入绑定,并使用Blob存储API搜索已更改的Blob。我相信适用于节点的Azure存储SDK。js支持列出blob,但我没有使用它。

 类似资料:
  • Azure函数存储帐户Blob容器触发器 在我们的一个用例中,我正在为具有以下条件的存储帐户容器中的任何活动寻找Azure函数触发器 < li >具有特定命名约定的容器(名称如xxxx-input) < li >它应该自动检测是否创建了新的容器(具有特定的命名约定) < li>

  • 我是Azure Function应用程序中blob触发器的新手,需要一些帮助。我正在努力寻找有关如何重命名触发该函数的blob的资源。 我有一个函数应用程序,当一个新的blob被上传到容器时触发,文件被处理,我需要一种方法来将其“标记”为已处理,因此我想重命名blob。 这是我的职责: 我该如何重命名该文件?在这种情况下有可能吗?

  • 我正在使用 Blob 触发器 Azure 函数来获取 Blob 文件数据,只要任何文件上传到容器。 使用上述方法,我能够获取上传的项目的URL。目前,上述代码是使用 Azure 提供的“在门户中开发”选项生成的。 是否有一种方法可以获取已上传的Blob文件的SAS URL?

  • 如果你使用blob存储触发器阅读Azure WebJobs上的留档,它们会提到这不是很可靠: WebJobs SDK扫描日志文件以查看新的或更改的blob。这个过程不是实时的;在创建blob后的几分钟或更长时间内,函数可能不会被触发。此外,存储日志是在“尽力而为”的基础上创建的;无法保证所有事件都将被捕获。在某些情况下,日志可能会丢失。如果您的应用程序无法接受blob触发器的速度和可靠性限制,建议

  • 您好,我正在创建一个新的blob触发的azure函数,我想了解函数头中“Connection=”参数的作用: 我所做的是完全删除该参数,在我将其部署到我的azure订阅后,它就可以正常工作了。因此,我想知道如果我没有使用连接参数指定任何特定帐户,该函数如何确定要使用哪个存储帐户。 这就是我部署函数的方式:

  • 问题内容: 如何在SQL触发器中获取更新的记录的值-像这样: 显然这是行不通的,但是您可以看到我要尝试的内容。 问题答案: 如果您 确定 只会更新一个值,则可以执行此操作… 如果可以一次更新多个值,则此代码将仅处理其中一个。(尽管不会出错。) 您可以使用游标,或者如果它是SQL Server 2008+,则可以使用表变量。 或者,更常见的是,只需将StoredProcedure代码移到触发器中。