我已通过事件中心订阅将blob存储帐户连接到Event Grid,并且可以查看来自上传的blob的事件。
但是我希望能够随每个接收到的事件传递一些元数据,因此我可以将事件与外键(客户标识符)相关联,而不必对每个事件做额外的工作。
这可能吗?我在API文档中看不到与此相关的任何内容。
答案 0 :(得分:1)
基于Azure Event Grid event schema for Blob storage,Blob存储事件数据中没有元数据属性。
请注意,只有一种特定情况,即会将一些元数据从AEG订阅传递到其订阅者,例如webhook事件处理程序端点的查询字符串(例如HttpTrigger函数)。
针对您的方案的解决方案是使用 EventGridTrigger 函数(订阅服务器),并将输出绑定到事件中心。
以下示例显示了使用EventGridTrigger函数对事件消息介体的轻量级实现:
[FunctionName("Function1")]
[return: EventHub("%myEventHub%", Connection = "AzureEventHubConnectionString")]
public async Task<JObject> Run([EventGridTrigger]JObject ed, ILogger log)
{
// original event message
log.LogInformation(ed.ToString());
// place for event data enrichment
var metadata = new { metadata = "ABCD", abcd = 12345 };
// enrich data object
ed["data"]["url"]?.Parent.AddAfterSelf(new JProperty("subscription", JObject.FromObject(metadata)));
// show after mediation
log.LogWarning(ed.ToString());
// forward to the Event Hub
return await Task.FromResult(ed);
}
以及事件中心的日志输出: