【问题标题】:Blob binding with custom file name具有自定义文件名的 Blob 绑定
【发布时间】:2016-10-02 06:40:01
【问题描述】:

使用带有 Azure 函数的输出绑定到存储 Blob,我可以为存储 Blob 输出指定路径。路径要么是硬编码的,要么可以使用特殊的“模板”。示例:{rand-guid}。有没有办法在函数执行期间提供自定义模板来指定值?例如,使用触发器队列消息 ID 作为 blob 名称。或者根据函数中的逻辑设置blob的扩展。 正在寻找有关此主题的文档,但没有太多关于该主题的帮助。

2016 年 10 月 5 日更新创建了一个 detailed post 来展示它的工作原理。

【问题讨论】:

  • 嘿 Sean,你知道 webjob sdk 是否可以实现?
  • 托马斯,我不确定。有一个绑定可以使用从传入内容的内容中扣除的名称的属性,但我可以在函数本身中设置一些东西。或者至少我找不到。
  • 好的,我问一下,因为函数是建立在 webjob sdk 之上的,所以如果 sdk 无法实现,那么函数也无法实现
  • 看起来有可能,但 doco 落后了……

标签: azure-functions


【解决方案1】:

对于基于声明性模板的命名,许多受支持的绑定表达式因触发器类型而异。例如。对于队列触发器,您实际上已经可以使用{Id},它将绑定到消息 ID。其中一些内置绑定参数列在Bindings Quick Reference 上,但该文档有些过时了。

{rand-guid} 是我们最近添加的扩展,适用于所有绑定。请注意,我们正在寻求扩展这样的内置插件集,并为此提供一个未解决的问题here。请就您遇到的任何情况提出该问题。

以上所有内容均适用于声明性规范。在 C# 中,您有一种高级方法可以强制在您的函数中执行此操作,也可以使用 IBinder。请参阅 this post 以获取显示此内容的示例。最终,我们也会向 Node 公开动态绑定功能,但目前还没有。我们正在this 问题中跟踪该问题。

【讨论】:

  • 绑定快速参考的链接不起作用 :( 日期时间开放问题很好,但不符合我的要求。我在这里提出了一个问题:github.com/Azure/azure-webjobs-sdk-script/issues/736 真正令人沮丧的是该文档已过时且严重滞后。示例讨论了out 关键字,这对于async 变体是行不通的。从webjobs 中“重用”的代码需要在门户中手动制作,这相对更耗时由于没有智能感知和工具。最近对 UI 的更改也使调试变得如此笨拙。
  • 快速参考 (2014) MSFT 链接已失效。替代位置在这里jhaleyfiles2016.blob.core.windows.net/public/… 重要的是要记住:没有适当文档的技术将导致采用率较低。
  • 在使用 IBinder 时,是否应该使用输出绑定?使用 blob 绑定时,它需要一个 Path 参数。除非 IBinder 将覆盖 Path 参数,否则它们似乎是冲突的。
  • IBinder 场景中,绑定是完全动态的,由函数中的命令式代码驱动。您不应在 function.json 中为 IBinder 参数包含相应的绑定。我已经通知我们的文档团队有关 PDF 的死链接 - 我们会修复它。我们还需要了解有关高级场景的文档,例如 IBinder,一般来说,同意。
  • 尝试了示例并使用 (var writer = binder.Bind(new BlobAttribute($"audits/{id}.json"))) { writer.Write(myQueueItem); }。在处理来自队列的消息时,不会生成任何输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多