如何从Blob存储触发Azure函数中删除stream参数

时间:2020-04-09 16:07:27

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

我有一个Blob触发功能。我实际上不需要此函数中的Blob流(我只是从中获得了一些元属性来将URL发送到twilio)。我特别在考虑某些更大的Blob文件,如果它知道不将流发送到触发器,这将有助于提高性能?我尝试只是删除希望进行动态绑定的参数。这没有用,它只是将博客序列化为一个字符串,并将其放入下一个参数-blob名称字符串。是否有其他配置可根据需要进行此工作?

更新:这是我的方法签名

 [FunctionName("OutboundFax")]
        public static void Run([BlobTrigger("faxdocuments/{name}", Connection = "faxdocumentsAppSetting")]Stream faxBlob, string name, ILogger log)
{}

1 个答案:

答案 0 :(得分:1)

对于此问题,有关于参数用法的描述:Usage

您可以将以下参数类型用于触发Blob:

  • TextReader
  • 字符串
  • 字节[]
  • 可序列化为JSON的POCO
  • ICloudBlob
  • CloudBlockBlob
  • CloudPageBlob
  • CloudAppendBlob

因此,几乎Napi::Value filterInputSync(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); int length = info.Length(); if (length != 1 || !info[0].IsObject()) { Napi::TypeError::New(env, "Typed error").ThrowAsJavaScriptException(); } Napi::Object wrappedInstance = info[0].As<Napi::Object>(); int nclosest = (wrappedInstance.Get("nclosest")).As<Napi::Number>(); Napi::Object wrappedInput = (wrappedInstance.Get("input")).As<Napi::Object>(); Input input = parseFromJsInput(wrappedInput, env); Input filteredInput = doFilter(input, nclosest); return parseToJsInput(filteredInput, env); } 是您想要的类型,您唯一需要注意的就是需要安装存储SDK,您将能够使用Blob SDK方法。

关于为什么azure函数默认类型为CloudBlockBlob的原因,首先在此用法中有一个描述:

最好使用Stream或Stream类型。欲了解更多 信息,请参阅本文后面的Concurrency and memory usage

另一个原因可能是CloudBlockBlob类型更适用,因为它可能是其他blob类型,并且默认情况下不需要安装SDK。