Compartir a través de

Azure Functions 的 Azure 事件网格绑定

此参考演示如何使用 Azure Functions 触发器和绑定连接 Azure 事件网格。

事件网格是一个 Azure 服务,它可以发送 HTTP 请求来告知发布方中发生的事件情况。 发布方是发起事件的服务或资源。 例如,Azure Blob 存储帐户是发布方,而 Blob 上传或删除是事件。 某些 Azure 服务原生支持向事件网格发布事件

事件处理程序接收并处理事件。 Azure Functions 是原生支持处理事件网格事件的多个 Azure 服务之一。 函数提供事件网格触发器,该触发器在从事件网格接收事件时调用函数。 类似的输出绑定可用于将事件从函数发送到事件网格自定义主题

还可使用 HTTP 触发器来处理事件网格事件。 若要了解有关详细信息,请参阅接收事件到 HTTP 终结点。 建议使用事件网格触发器,而不要使用 HTTP 触发器。

行动 类型
在调度事件网格事件时运行函数 触发器
发送事件网格事件 输出绑定
控制返回的 HTTP 状态代码 HTTP 终结点

安装扩展

你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:

函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南

扩展的功能因扩展版本而异:

通过安装 NuGet 包版本 3.x 将扩展添加到项目。

安装捆绑包

若要能够在应用中使用此绑定扩展,请确保项目的根目录中 host.json 文件包含以下 extensionBundle 引用:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

在此示例中,version[4.0.0, 5.0.0)值指示 Functions 主机使用至少4.0.0小于但小于5.0.0的捆绑包版本,其中包括所有可能的 4.x 版本。 此表示法有效地在 v4.x 扩展捆绑包的最新可用次要版本上维护应用。

如果可能,应使用最新的扩展捆绑包主版本,并允许运行时自动维护最新的次要版本。 可以在 扩展捆绑包发布页上查看最新捆绑包的内容。

如果应用要求使用以前的扩展版本,则可能需要改为指定以前的捆绑包版本。 可以查看 捆绑包版本 ,找到包含此扩展版本的捆绑包,该版本可供应用使用。 有关详细信息,请参阅 Azure Functions 扩展捆绑包。 结束区域

事件网格扩展的注意事项:

  • 低于 3.x 的事件网格扩展版本不支持 CloudEvents 架构。 若要使用此架构,请改用 HTTP 触发器。
  • 事件网格输出绑定仅适用于 Functions 2.x 和更高版本。

绑定类型

.NET 支持的绑定类型取决于扩展版本和 C# 执行模式,可以是以下类型之一:

独立工作进程类库的已编译 C# 函数在独立于运行时的进程中运行。

请选择一个版本来查看模式和版本的绑定类型详细信息。

独立工作进程支持下表所示的参数类型。 支持绑定到 Stream 和来自 Azure.Messaging 的类型 - 此项支持目前处于预览状态。

事件网格触发器

如果你希望函数处理单个事件,可将事件网格触发器绑定到以下类型:

类型 DESCRIPTION
JSON 可序列化类型 Functions 会尝试将事件的 JSON 数据反序列化为普通的旧 CLR 对象 (POCO) 类型。
string 字符串形式的事件。
BinaryData (预览版1
事件消息的字节数。
CloudEvent (预览版1
事件对象。 当事件网格配置为使用 CloudEvents 架构传递时使用。
EventGridEvent (预览版1
事件对象。 当事件网格配置为使用事件网格架构传递时使用。

如果你希望函数处理批量事件,可将事件网格触发器绑定到以下类型:

类型 DESCRIPTION
CloudEvent[],
EventGridEvent[],
string[],
BinaryData[]
批处理中的事件数组。 每个条目表示一个事件。

1 若要使用这些类型,需要引用 Microsoft.Azure.Functions.Worker.Extensions.EventGrid 3.3.0-preview1 或更高版本以及 SDK 类型绑定的常见依赖项

事件网格输出绑定

如果希望函数写入单个事件,事件网格输出绑定可以绑定到以下类型:

类型 DESCRIPTION
string 字符串形式的事件。
byte[] 事件消息的字节数。
JSON 可序列化类型 表示 JSON 事件的对象。 函数尝试将普通的旧 CLR 对象 (POCO) 类型序列化为 JSON 数据。

如果希望函数写入多个事件,事件网格输出绑定可以绑定到以下类型:

类型 DESCRIPTION
T[],其中 T 是单事件类型之一 包含多个事件的数组。 每个条目表示一个事件。

对于其他输出方案,请直接创建和使用 Azure.Messaging.EventGrid 中的类型。

host.json 设置

事件网格触发器使用 Webhook HTTP 请求,可以使用与 HTTP 触发器相同的 host.json 设置进行配置。

后续步骤