我在这里挑战了时间,以了解天蓝色函数的输出绑定。我有一个可以在服务总线上正常触发的功能。我需要做的是获取一些数据,并将其写回到blob存储中的csv文件中。我可以看到您有一个输出Blob绑定。但是它提供了一个流或文本编写器作为输入。这是如何运作的?我希望能够控制csv文件创建的名称。谁能提供一些输入信息,说明我实际上是如何创建csv文件,对其进行写入以及如何使用输出绑定生成文件名的?还是我误解了绑定的使用?还是在创建新文件时使用CloudBlobClient?
[FunctionName("UniquePermissionsReporting")]
public static void Run(
[ServiceBusTrigger("spo-governance-report-permissions", AccessRights.Manage, Connection = "UniquePermisionsQueueConnStr")]string myQueueItem,
[Blob("unique-permission-reports/{name}", FileAccess.Write,Connection = "BlobStorageConnStr")]Stream CsvContainer,
TraceWriter log)
{
}
答案 0 :(得分:1)
简单来说,我们需要指定Blob名称并写入内容。两种引用方式。
第一种是使用CloudBlobConatainer
作为输出绑定类型。
[FunctionName("UniquePermissionsReporting")]
public static void Run(
[ServiceBusTrigger("spo-governance-report-permissions", AccessRights.Manage, Connection = "UniquePermisionsQueueConnStr")]string myQueueItem,
[Blob("unique-permission-reports", FileAccess.Read, Connection ="BlobStorageConnStr")] CloudBlobContainer blobContainer,
TraceWriter log)
{
string blobName = "test.csv";
CloudBlockBlob blob = blobContainer.GetBlockBlobReference($"{blobName}");
// ensure the csv content type if necessary
blob.Properties.ContentType = "text/csv";
// use Upload* method according to your need
blob.UploadText("content");
}
2nd与Binding a runtime一起使用。使用命令式绑定模式(Binder
)即时将输出绑定绑定到TextWriter
或Stream
。请注意,该函数是异步的,因为我们在内部使用了* Async方法。
[FunctionName("UniquePermissionsReporting")]
public static async Task Run(
[ServiceBusTrigger("spo-governance-report-permissions", AccessRights.Manage, Connection = "UniquePermisionsQueueConnStr")]string myQueueItem,
Binder binder,
TraceWriter log)
{
string blobName = "test.csv";
var attributes = new Attribute[]
{
new BlobAttribute($"unique-permission-reports/{blobName}", FileAccess.Write),
new StorageAccountAttribute("BlobStorageConnStr")
};
using (var writer = await binder.BindAsync<TextWriter>(attributes))
{
await writer.WriteAsync("Content");
}
}