浏览输入和输出绑定类型
访问和处理数据是许多软件解决方案中的关键任务。 请考虑以下情景:
- 会要求你实现一种将传入数据从 Azure Blob 存储迁移到 Azure Cosmos DB 的方法。
- 你想要将传入的邮件张贴到队列,以供企业中的其他组件处理。
- 你的服务需要从队列中获取玩家分数并更新联机记分板。
以上所有示例均与移动数据有关。 不同场景中的数据源和目标各不相同,但模式却是类似的。 连接到数据源,读取和写入数据。 通过 Azure Functions,可帮助你使用绑定与数据和服务集成。
什么是绑定?
在 Azure Functions 中,绑定提供从代码内连接到数据的声明性方式。 使用绑定,可在函数中更加轻松地与数据流进行一致集成。 可以使用多个绑定来提供对不同数据元素的访问。 这种集成十分强大,因为你可以连接到数据源,而无需编写特定的连接逻辑(如数据库连接或 Web API 接口)。
绑定类型
有两种类型的绑定可用于函数:
输入绑定 - 连接到数据源。 我们的函数可以从这些输入源中读取数据。
输出绑定 - 连接到数据目标。 我们的函数可以将数据写入这些输出目标。
还有触发器,它们是导致函数运行的特殊类型的输入绑定。 例如,可以将 Azure 事件网格通知配置为触发器。 事件发生时,该函数将运行。
支持的绑定类型
绑定类型定义可以读取或发送数据的位置。 有一个响应 Web 请求的绑定和大量绑定选择,以直接与各种 Azure 服务以及第三方服务进行交互。
绑定类型可以用作输入、输出,也可以同时用作两者。 例如,函数可以写入到 Blob 存储输出绑定,但 Blob 存储更新可能会触发另一个函数。
常见的绑定类型包括:
- Blob 存储
- Azure 服务总线队列
- Azure Cosmos DB
- Azure 事件中心
- 外部文件
- 外部表
- HTTP 终结点
这些类型只是示例。 还有更多类型,加上函数具有可扩展性模型,可以添加更多绑定。
绑定属性
所有绑定中需要三个属性,不过你可能需要根据所用的绑定类型和存储提供更多属性。
名称 - 定义可通过其访问数据的函数参数。 例如,在队列输入绑定中,此属性是接收队列消息内容的函数参数的名称。
类型 - 标识绑定的类型。 例如,要与之交互的数据或服务的类型。
方向 - 指示数据的流动方向。 例如,它是输入绑定还是输出绑定?
此外,大多数绑定类型还需要第四个属性:
- 连接 - 提供包含连接字符串的应用设置密钥的名称。 绑定将使用存储在应用设置中的连接字符串来保护函数代码之外的密码。 连接字符串可以提高代码的易配置性和安全性。
创建绑定
绑定采用 JSON 格式进行定义。 绑定在函数的 function.json 配置文件中进行配置,该配置文件位于与函数代码相同的文件夹中。
我们来看一个输入绑定示例:
...
{
"name": "headshotBlob",
"type": "blob",
"path": "thumbnail-images/{filename}",
"connection": "HeadshotStorageConnection",
"direction": "in"
},
...
要创建此绑定,需要执行以下操作:
在 function.json 文件中创建绑定。
提供
name
变量的值。 在此示例中,此变量将存储 Blob 数据。提供存储
type
。 在前面的示例中,我们使用的是 Blob 存储。提供
path
,它指定容器和进入该容器的项名称。 使用 Blob 触发器时,必须提供path
属性,并应以此处显示的样式提供,路径的文件名部分放在大括号中。 此语法将创建一个绑定表达式,通过该表达式可以在其他绑定和函数的代码中引用 Blob 的名称。 在此示例中,用触发函数的 Blob 的文件名填充函数中名为 filename 的参数。提供在应用程序设置文件中定义的
connection
字符串设置名称。 名称用作查找连接字符串以连接到存储帐户的密钥。将
direction
定义为in
。 它从 Blob 读取数据。
绑定将用于连接函数中的数据。 在此示例中,我们使用了输入绑定来连接要由函数作为缩略图处理的用户映像。