Compartilhar via

自定义传递属性

通过事件订阅,您可以设置在传送的事件中包含的 HTTP 标头。 使用此功能,可设置目标所需的自定义标头。 创建事件订阅时,最多可以设置 10 个标头。 每个标头值不应大于 4096 (4K) 字节。

可以对传递到以下目标的事件设置自定义标头:

  • Webhooks
  • Azure 服务总线主题和队列
  • Azure 事件中心
  • Azure Functions
  • Azure 中继 混合连接

注意

在已知标头中,不符合规定的值会导致在事件传送到 Webhook 目标时删除标头,但在 Webhook 验证期间则不会删除该标头。

在 Azure 门户中创建事件订阅时,可以使用 Delivery 属性选项卡设置自定义 HTTP 标头。 在此页中可以设置固定的和动态的标头值。

设置静态标头值

若要设置一个值固定的标头,请在相应字段中提供标头的名称及其值:

传递属性 - 静态

提供敏感数据时,可能需要选中“是否为机密?”。 Azure门户中敏感数据的可见性取决于用户的 RBAC 权限。

设置动态标头值

可根据传入事件中的属性设置标头的值。 使用 JsonPath 语法来引用传入事件的属性值,以用作传出请求中的标头的值。 仅支持字符串、数字和布尔值的 JSON 值。 例如,若要使用事件数据中的传入事件属性system的值来设置名为Channel的标头的值,请按以下方式配置事件订阅:

传递属性 - 动态

使用Azure CLI

在使用 --delivery-attribute-mapping 命令创建订阅时请使用 az eventgrid event-subscription create 参数。 下面是一个示例:

az eventgrid event-subscription create -n es1 \
    --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1
    --endpoint-type storagequeue \
    --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.Storage/storageAccounts/sa1/queueservices/default/queues/q1 \
    --enable-advanced-filtering-on-arrays true
    --delivery-attribute-mapping staticproperty1 static somestaticvalue2 true 
    --delivery-attribute-mapping staticproperty2 static somestaticvalue3 false 
    --delivery-attribute-mapping dynamicproperty1 dynamic data.key1

示例

本节提供几个使用传递属性的示例。

使用持有者令牌设置授权标头(非规范示例)

为授权标头设置值,以使用 Webhook 处理程序识别请求。 如果您没有使用 Microsoft Entra ID 保护 Webhook,则可以设置 Authorization 标头。

标头名称 标头类型 标题值
Authorization 静态 BEARER SlAV32hkKG...

传出请求现在应包含在事件订阅上设置的标头:

POST /home.html HTTP/1.1
Host: acme.com

Authorization: BEARER SlAV32hkKG...

注意

如果目标是 Webhook,定义授权标头是一个明智的选择。 它不应适用于使用资源 ID 订阅的功能、服务总线、事件中心和混合连接,因为这些目标在与Event Grid一起使用时支持它们自己的身份验证方案。

服务总线 示例

Azure 服务总线支持在发送单个消息时使用以下消息属性。

标头名称 标头类型
MessageId 动态
PartitionKey 静态或动态
SessionId 静态或动态
CorrelationId 静态或动态
Label 静态或动态
ReplyTo 静态或动态
ReplyToSessionId 静态或动态
To 静态或动态
ViaPartitionKey 静态或动态

注意

  • MessageId 的默认值是事件网格事件的内部 ID。 你可以替代它。 例如,data.field
  • 只能设置 SessionIdMessageId

还可以在将消息发送到服务总线队列或主题时指定自定义属性。 请勿使用 aeg- 前缀,因为消息标头中的系统属性会使用它。 有关消息标头属性的列表,请参阅服务总线作为事件处理程序

事件中心示例

如果需要将事件发布到某个事件中心内的特定分区,请在事件订阅上设置 PartitionKey 属性,以指定用于标识目标事件中心分区的分区键。

标头名称 标头类型
PartitionKey 静态或动态

也可以在向事件中心发送消息时指定自定义属性。 请勿为属性名称使用 aeg- 前缀,因为消息标头中的系统属性会使用它。 有关消息标头属性的列表,请参阅事件中心作为事件处理程序

将传出事件的时间配置为Azure 存储队列

对于 Azure 存储 队列目标,一旦传出消息传送到 Azure 存储 队列,你只能配置其生存时间。 如果未提供任何时间,则消息的默认生存时间为 7 天。 你还可以将事件设置为永不过期。

传递属性 - 存储队列

后续步骤

有关事件传递的详细信息,请参阅以下文章: