在 Azure 函数中,我正在保存收到的文件。将根据租户使用不同的容器。
var location = Helper.GetLocation(tenant, uploadId, ...);
using (var outputStream = await binder.BindAsync<Stream>(new BlobAttribute(location , FileAccess.Write)))
{
await inputStream.CopyToAsync(outputStream);
}
我需要预先创建这些容器吗? (我正在使用 ARM 模板创建一些)。我的测试表明我不必这样做,但我不确定我是否可以依靠它。如果我可以依靠为我创建的容器,我就不必在添加新租户时修改 ARM 模板。
答案 0 :(得分:1)
是的,您可以为此使用 Binder。我有一个关于 on GitHub 的完整示例。只是相关的部分:
{{1}}
答案 1 :(得分:1)
我需要预先创建这些容器吗? (我正在创建一些使用 ARM 模板)。我的测试表明我没有必要,但我不确定我 可以依靠这个。
我认为您可以信赖这一点。 BlobAttribute 写入操作基于 Microsoft.Azure.WebJobs.Extensions.Storage
。此 SDK 有一个名为 CreateIfNotExistsAsync()
的方法。这个方法会检查是否有你想要的特定容器,如果有,它会返回容器对象,如果没有,它会创建一个容器并返回容器对象。
你可以看看这个源代码页面来检查逻辑:
(其实不光是blob属性,Cosmos DB等很多Azure服务也有CreateIfNotExists方法,本意是为了避免麻烦。)