如何将 blob 存储事件推送到事件网格主题
how to push blob storage events to event grid topic
我在尝试为 blobCreated
创建事件订阅时遇到以下错误:
当容器中有新的 blob 时,我希望将该事件转发到主题。
我转到存储帐户,并尝试创建事件订阅:
我做错了什么?我们如何将 blob 存储事件推送到事件网格主题?
AEG 不处理自定义主题端点的订阅 webhook 端点验证,但是有一个解决方法missing feature, see more details 。
AEG 级联 的概念是订阅该自定义主题,其订阅者将通过 http GET 调用处理验证。
我确实建议使用 CustomInputSchema 创建自定义主题端点,否则 blob 存储事件将嵌套在事件数据对象中。
更新:
以下是有关 AEG 到 AEG 集成的更多详细信息,例如级联(转发)源事件。
请注意,当前版本的 AEG 不完全支持此集成(见下图),换句话说,自定义主题端点没有内置验证响应:
在与 webhook 端点的订阅握手期间,以下事件消息(blob 存储示例)被发送到端点:
[
{
"id": "c2ad3900-f483-4e45-a15b-927195878e99",
"topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myRG/providers/Microsoft.Storage/storageAccounts/myStorage",
"subject": "",
"data": {
"validationCode": "00000000-0000-0000-0000-000000000000",
"validationUrl": "https://rp2-westus.eventgrid.azure.net:553/eventsubscriptions/cascade/validate?id=04B6279C-A6ED-4FC0-981A-D9E53312B49A&t=2019-08-22T05:12:44.3114422Z&apiVersion=2019-02-01-preview&token=xxxxxxxxxxxxxx"
},
"eventType": "Microsoft.EventGrid.SubscriptionValidationEvent",
"eventTime": "2019-08-22T05:12:44.3114422Z",
"metadataVersion": "1",
"dataVersion": "2"
}
]
事件订阅正在等待 validation response 以编程方式(使用 validationCode 响应)或手动(向 validationUrl[ 发送 GET 请求).
对于这种集成,我们必须使用手动验证,例如发送 GET 请求。为此,我们必须创建一个订阅者来处理自定义主题的手动验证。
下图为解决方案:
描述了用于手动验证的 EventGridTrigger 函数的实现 。
你可以看到上面的事件验证消息,subject 属性 是空的,所以我们可以处理这种情况以及嵌套(级联)的情况事件数据,自定义主题端点应使用 CustomEventSchema 创建。
以下是 request 负载中 属性 对象的示例:
"properties": {
"inputSchema": "CustomEventSchema",
"inputSchemaMapping": {
"properties": {
"id": {
"sourceField": null
},
"topic": {
"sourceField": null
},
"eventTime": {
"sourceField": null
},
"eventType": {
"sourceField": null,
"defaultValue": "notification"
},
"subject": {
"sourceField": null,
"defaultValue": "/webhook/events"
},
"dataVersion": {
"sourceField": null,
"defaultValue": "1.0"
}
},
"inputSchemaMappingType": "Json"
}
}
备注:
- 自定义主题 aeg-sas-key 值必须 url 在 webhook 端点地址中编码。
可以使用验证器的高级过滤器:
"advancedFilters": [
{
"values": [
"Microsoft.EventGrid.SubscriptionValidationEvent"
],
"operatorType": "StringContains",
"key": "Data.EventType"
}
]
我遇到了同样的问题,并使用逻辑应用程序将事件转发到我的自定义主题,在几分钟内解决了这个问题。无需在存储帐户上创建事件订阅,逻辑应用在设置后自动添加适当的 webhook:
我在尝试为 blobCreated
创建事件订阅时遇到以下错误:
当容器中有新的 blob 时,我希望将该事件转发到主题。
我转到存储帐户,并尝试创建事件订阅:
我做错了什么?我们如何将 blob 存储事件推送到事件网格主题?
AEG 不处理自定义主题端点的订阅 webhook 端点验证,但是有一个解决方法missing feature, see more details
AEG 级联 的概念是订阅该自定义主题,其订阅者将通过 http GET 调用处理验证。
我确实建议使用 CustomInputSchema 创建自定义主题端点,否则 blob 存储事件将嵌套在事件数据对象中。
更新:
以下是有关 AEG 到 AEG 集成的更多详细信息,例如级联(转发)源事件。
请注意,当前版本的 AEG 不完全支持此集成(见下图),换句话说,自定义主题端点没有内置验证响应:
在与 webhook 端点的订阅握手期间,以下事件消息(blob 存储示例)被发送到端点:
[
{
"id": "c2ad3900-f483-4e45-a15b-927195878e99",
"topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myRG/providers/Microsoft.Storage/storageAccounts/myStorage",
"subject": "",
"data": {
"validationCode": "00000000-0000-0000-0000-000000000000",
"validationUrl": "https://rp2-westus.eventgrid.azure.net:553/eventsubscriptions/cascade/validate?id=04B6279C-A6ED-4FC0-981A-D9E53312B49A&t=2019-08-22T05:12:44.3114422Z&apiVersion=2019-02-01-preview&token=xxxxxxxxxxxxxx"
},
"eventType": "Microsoft.EventGrid.SubscriptionValidationEvent",
"eventTime": "2019-08-22T05:12:44.3114422Z",
"metadataVersion": "1",
"dataVersion": "2"
}
]
事件订阅正在等待 validation response 以编程方式(使用 validationCode 响应)或手动(向 validationUrl[ 发送 GET 请求).
对于这种集成,我们必须使用手动验证,例如发送 GET 请求。为此,我们必须创建一个订阅者来处理自定义主题的手动验证。
下图为解决方案:
描述了用于手动验证的 EventGridTrigger 函数的实现
你可以看到上面的事件验证消息,subject 属性 是空的,所以我们可以处理这种情况以及嵌套(级联)的情况事件数据,自定义主题端点应使用 CustomEventSchema 创建。 以下是 request 负载中 属性 对象的示例:
"properties": {
"inputSchema": "CustomEventSchema",
"inputSchemaMapping": {
"properties": {
"id": {
"sourceField": null
},
"topic": {
"sourceField": null
},
"eventTime": {
"sourceField": null
},
"eventType": {
"sourceField": null,
"defaultValue": "notification"
},
"subject": {
"sourceField": null,
"defaultValue": "/webhook/events"
},
"dataVersion": {
"sourceField": null,
"defaultValue": "1.0"
}
},
"inputSchemaMappingType": "Json"
}
}
备注:
- 自定义主题 aeg-sas-key 值必须 url 在 webhook 端点地址中编码。
可以使用验证器的高级过滤器:
"advancedFilters": [ { "values": [ "Microsoft.EventGrid.SubscriptionValidationEvent" ], "operatorType": "StringContains", "key": "Data.EventType" } ]
我遇到了同样的问题,并使用逻辑应用程序将事件转发到我的自定义主题,在几分钟内解决了这个问题。无需在存储帐户上创建事件订阅,逻辑应用在设置后自动添加适当的 webhook: