Azure 函数 - 我们什么时候需要将 out 用于输出绑定?

问题描述

在 azure 函数中,有多种方法可以进行输出绑定。

  1. 对于 Blob 存储,我可以将其声明为没有额外构造的绑定。
  2. 对于 CosmosDb ,我需要将其指定为 out 参数。
  3. 对于队列,我可以在属性中将其指定为返回。

我在下面有针对上述三种场景的示例代码

 public static class myblobtestfunc
    {
        [FunctionName("myblobtestfunc")]
        [return: Queue("samplequeue",Connection = "storageconnection")]
        public static string Run([BlobTrigger("functiontestblob/{name}.txt",Connection = "storageconnection")]Stream myBlob,[Blob("copyblob/{name}",FileAccess.Write)]Stream copyBlob,[CosmosDB(databaseName: "testfiledb",collectionName: "testfilecoll",ConnectionStringSetting = "cosmosdbconnectionstring")]out dynamic document,string name,ILogger log
                               )
        {
            log.Log@R_31_4045@ion($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            myBlob.copyTo(copyBlob);
            
            document = new { Description = name,id = Guid.NewGuid() };

            return name;
        }
    }

输出绑定可以使用三种方式中的任何一种来实现吗?即我可以使用 CosmoDb 绑定的返回值吗? 为什么有如此广泛的输出绑定样式选择?

解决方法

输出绑定可以使用三种方式中的任何一种来实现吗?即我可以使用 CosmoDb 绑定的回报?为什么有如此广泛的输出选择 装订样式?

如此广泛的输出绑定样式选择来自 Azure 函数社区不断推出的支持票。

其实对于具体的输出绑定,这三个不一定都可行。请参考官方文档。这三者的设计都是基于相应的SDK包,所以在大多数情况下,相当于在函数体中编写了基于相应SDK的代码。