Azure函数创建Blob

时间:2019-02-08 18:10:00

标签: c# azure azure-functions

我在这里挑战了时间,以了解天蓝色函数的输出绑定。我有一个可以在服务总线上正常触发的功能。我需要做的是获取一些数据,并将其写回到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)
{

}

1 个答案:

答案 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)即时将输出绑定绑定到TextWriterStream。请注意,该函数是异步的,因为我们在内部使用了* 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");
        }
    }