Azure Functions - Blob 流动态输入绑定
Azure Functions - Blob Stream Dynamic Input bindings
我是 运行 Azure 上的一个 C# 函数,它需要从容器中获取文件。唯一的问题是输入文件的路径每次都会(可能)不同,输入文件的数量会从 1 到大约 4 或 5 不等。因此我不能只使用默认的输入 blob 绑定据我所知。我的选择是为容器提供匿名访问权限,并通过 link 获取文件或弄清楚如何获取动态输入绑定。
有谁知道如何在运行时(在 C# 代码中)声明输入 blob 流的路径?
如果有帮助,我已经设法找到了动态输出绑定
using (var writer = await binder.BindAsync<TextWriter>(
new BlobAttribute(containerPath + fileName)))
{
writer.Write(OutputVariable);
}
提前致谢,爨
对于动态输出绑定,您可以利用以下代码片段:
var attributes = new Attribute[]
{
new BlobAttribute("{container-name}/{blob-name}"),
new StorageAccountAttribute("brucchStorage") //connection string name for storage connection
};
using (var writer = await binder.BindAsync<TextWriter>(attributes))
{
writer.Write(userBlobText);
}
注意:以上代码将创建目标 blob(如果不存在)并覆盖现有的 blob(如果存在)。此外,如果您未指定 StorageAccountAttribute
,您的目标 blob 将根据应用程序设置 AzureWebJobsStorage
.
创建到存储帐户中
此外,您可以关注Azure Functions imperative bindings了解更多详情。
更新:
对于动态输入绑定,您可以按如下方式更改绑定类型:
var blobString = await binder.BindAsync<string>(attributes);
或者您可以将绑定类型设置为 CloudBlockBlob
并为 azure 存储 blob 添加以下命名空间:
#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Blob;
CloudBlockBlob blob = await binder.BindAsync<CloudBlockBlob>(attributes);
此外,关于CloudBlockBlob
的操作详情,您可以关注here。
试试下面的代码:
string filename = string.Format("{0}/{1}_{2}.json", blobname, DateTime.UtcNow.ToString("ddMMyyyy_hh.mm.ss.fff"), Guid.NewGuid().ToString("n"));
using (var writer = await binder.BindAsync<TextWriter>(
new BlobAttribute(filename, FileAccess.Write)))
{
writer.Write(JsonConvert.SerializeObject(a_object));
}
我是 运行 Azure 上的一个 C# 函数,它需要从容器中获取文件。唯一的问题是输入文件的路径每次都会(可能)不同,输入文件的数量会从 1 到大约 4 或 5 不等。因此我不能只使用默认的输入 blob 绑定据我所知。我的选择是为容器提供匿名访问权限,并通过 link 获取文件或弄清楚如何获取动态输入绑定。
有谁知道如何在运行时(在 C# 代码中)声明输入 blob 流的路径?
如果有帮助,我已经设法找到了动态输出绑定
using (var writer = await binder.BindAsync<TextWriter>(
new BlobAttribute(containerPath + fileName)))
{
writer.Write(OutputVariable);
}
提前致谢,爨
对于动态输出绑定,您可以利用以下代码片段:
var attributes = new Attribute[]
{
new BlobAttribute("{container-name}/{blob-name}"),
new StorageAccountAttribute("brucchStorage") //connection string name for storage connection
};
using (var writer = await binder.BindAsync<TextWriter>(attributes))
{
writer.Write(userBlobText);
}
注意:以上代码将创建目标 blob(如果不存在)并覆盖现有的 blob(如果存在)。此外,如果您未指定 StorageAccountAttribute
,您的目标 blob 将根据应用程序设置 AzureWebJobsStorage
.
此外,您可以关注Azure Functions imperative bindings了解更多详情。
更新:
对于动态输入绑定,您可以按如下方式更改绑定类型:
var blobString = await binder.BindAsync<string>(attributes);
或者您可以将绑定类型设置为 CloudBlockBlob
并为 azure 存储 blob 添加以下命名空间:
#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Blob;
CloudBlockBlob blob = await binder.BindAsync<CloudBlockBlob>(attributes);
此外,关于CloudBlockBlob
的操作详情,您可以关注here。
试试下面的代码:
string filename = string.Format("{0}/{1}_{2}.json", blobname, DateTime.UtcNow.ToString("ddMMyyyy_hh.mm.ss.fff"), Guid.NewGuid().ToString("n"));
using (var writer = await binder.BindAsync<TextWriter>(
new BlobAttribute(filename, FileAccess.Write)))
{
writer.Write(JsonConvert.SerializeObject(a_object));
}