适用于 Azure Functions 的 Azure Blob 存储绑定概述
Azure Functions 通过触发器和绑定与 Azure 存储集成。 与 Blob 存储集成即可构建函数,用于响应 blob 数据中的更改以及读取和写入值。
你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:
重要
对进程内模型的支持将于 2026 年 11 月 10 日结束。 为获得完全支持,强烈建议将应用迁移到独立工作模型。
函数在与函数主机相同的进程中执行。 若要了解详细信息,请参阅使用 Azure Functions 开发 C# 类库函数。
在此模型的变体中,可以使用 C# 脚本运行 Functions,该脚本主要用于 C# 门户编辑。 若要更新在门户中运行的 C# 脚本应用程序的现有绑定扩展,而无需重新发布函数应用,请参阅更新扩展。
扩展的功能因扩展版本而异:
本节介绍如何使用类库。 对于 C# 脚本,需要改为安装扩展捆绑包版本 4.x。
此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程。
此版本允许绑定到 Azure.Storage.Blobs 中的类型。 通过 Azure.Storage.Blobs 迁移指南详细了解这些新类型与 WindowsAzure.Storage
和 Microsoft.Azure.Storage
的不同之处以及如何迁移到这些类型。
可以通过安装 Microsoft.Azure.WebJobs.Extensions.Storage.Blobs NuGet 包版本 5.x 获得此扩展。
使用 .NET CLI:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage.Blobs --version 5.0.0
备注
Azure Blob、Azure 队列和 Azure 表现在使用单独的扩展并单独进行引用。 例如,若要在 .NET 进程内应用中为所有三个服务使用触发器和绑定,应将以下包添加到项目:
- Microsoft.Azure.WebJobs.Extensions.Storage.Blobs
- Microsoft.Azure.WebJobs.Extensions.Storage.Queues
- Microsoft.Azure.WebJobs.Extensions.Tables
以前,这些扩展作为 Microsoft.Azure.WebJobs.Extensions.Storage 版本 4.x 一同交付。 此包还有一个 5.x 版本,该版本仅引用 Blob 和队列的拆分包。 因此,在从旧版本升级包引用时,可能需要额外引用新的 Microsoft.Azure.WebJobs.Extensions.Tables NuGet 包。 此外,在引用这些较新的拆分包时,请确保不要引用旧版组合存储包,否则会导致相同绑定的两种定义发生冲突。
Blob 存储绑定是在 host.json 项目文件中指定的扩展捆绑包的一部分。 你可能需要修改此捆绑包以更改绑定的版本,或者如果尚未安装捆绑包。 若要了解详细信息,请参阅扩展捆绑包。
此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程。
可以通过在 host.json
文件中添加或替换以下代码,从扩展捆绑包 v3 添加该扩展的这一版本:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
若要了解详细信息,请参阅更新扩展。
.NET 支持的绑定类型取决于扩展版本和 C# 执行模式,可以是以下类型之一:
请选择一个版本来查看模式和版本的绑定类型详细信息。
Azure Blob 扩展支持下表所示的参数类型。
绑定方案 | 参数类型 |
---|---|
Blob 触发器 | 流TextReader string byte[] BinaryData BlobClient1 BlockBlobClient1 PageBlobClient1 AppendBlobClient1 BlobBaseClient1 |
Blob 输入(单 blob) | 流TextReader string byte[] BinaryData BlobClient1 BlockBlobClient1 PageBlobClient1 AppendBlobClient1 BlobBaseClient1 |
Blob 输入(容器中的多个 blob) | IEnumerable<T> ,其中 T 是单 blob 输入绑定类型之一 |
Blob 输出(单 blob) | 流TextWriter string byte[] |
Blob 输出(多 blob) | ICollector<T> 或 IAsyncCollector<T> ,其中 T 是单 blob 输出绑定类型之一 |
1 客户端类型要求将特性的 Access
属性设置为 FileAccess.ReadWrite
。
有关使用这些类型的示例,请参阅扩展的 GitHub 存储库。 通过 Azure.Storage.Blobs 迁移指南详细了解 Azure SDK 中的类型、它们与早期版本的不同之处以及如何迁移到这些类型。
本部分介绍使用此绑定函数的函数应用程序配置设置。 这些设置仅在使用扩展版本 5.0.0 及更高版本时才适用。 下面的示例 host.json 文件仅包含此绑定的 2.x 版及更高版本设置。 若要详细了解版本 2.x 及更高版本中的函数应用程序配置设置,请参阅 Azure Functions 的 host.json 参考。
备注
本部分不适用于 5.0.0 之前的扩展版本。 对于这些早期版本,没有任何适用于 Blob 的函数应用范围的配置设置。
{
"version": "2.0",
"extensions": {
"blobs": {
"maxDegreeOfParallelism": 4,
"poisonBlobThreshold": 1
}
}
}
属性 | 默认 | 说明 |
---|---|---|
maxDegreeOfParallelism | 8 *(可用核心数) | 给定函数应用中所有 blob 触发的函数允许的并发调用数(整数)。 允许的最小值为 1。 |
poisonBlobThreshold | 5 | 在将某个消息移到有害队列之前,尝试处理该消息的整数次数。 允许的最小值为 1。 |