将 CloudEvents v1.0 架构与 Azure 事件网格配合使用
Azure 事件网格本身支持 CloudEvents v1.0 的 JSON 实现和 HTTP 协议绑定中的事件。 CloudEvents 是一种用于描述事件数据的开放规范。
CloudEvents 提供的常用事件架构适合发布和使用基于云的事件,因此可简化互操作性。 可以通过此架构使用统一的工具、以标准方式路由和处理事件,以及以通用方式反序列化外部事件架构。 使用通用架构可以更轻松地跨平台集成工作。
CloudEvents 是由包括 Microsoft 在内的多个协作者通过 Cloud Native Computing Foundation 构建的。 它目前的发布版本为 1.0。
本文介绍 CloudEvents 架构和事件网格。
使用 CloudEvents 架构的示例事件
下面是一个采用 CloudEvents 格式的 Azure Blob 存储事件示例:
{
"specversion": "1.0",
"type": "Microsoft.Storage.BlobCreated",
"source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-account}",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e209",
"time": "2019-11-18T15:13:39.4589254Z",
"subject": "blobServices/default/containers/{storage-container}/blobs/{new-file}",
"data": {
"api": "PutBlockList",
"clientRequestId": "4c5dd7fb-2c48-4a27-bb30-5361b5de920a",
"requestId": "9aeb0fdf-c01e-0131-0922-9eb549000000",
"eTag": "0x8D76C39E4407333",
"contentType": "image/png",
"contentLength": 30699,
"blobType": "BlockBlob",
"url": "https://gridtesting.blob.core.chinacloudapi.cn/testcontainer/{new-file}",
"sequencer": "000000000000000000000000000099240000000000c41c18",
"storageDiagnostics": {
"batchId": "681fe319-3006-00a8-0022-9e7cde000000"
}
}
}
此处提供 CloudEvents v1.0 中的可用字段、类型和定义的详细说明。
在 CloudEvents 架构和事件网格架构中传递的事件的标头值是相同的,但 content-type
除外。 对于 CloudEvents 架构,该标头值为 "content-type":"application/cloudevents+json; charset=utf-8"
。 对于事件网格架构,该标头值为 "content-type":"application/json; charset=utf-8"
。
CloudEvents 的事件网格
可以将事件网格用于 CloudEvents 架构的事件的输入和输出。 可以将 CloudEvents 用于系统事件(例如 Blob 存储事件和 IoT 中心事件)和自定义事件。 除了支持 CloudEvents 外,事件网格还支持专有的、不可扩展但功能齐全的事件网格事件格式。 下表描述了将 CloudEvents 和事件网格格式用作主题中的输入架构和事件订阅中的输出架构时支持的转换。 将 CloudEvents 用作输入架构时,无法使用事件网格输出架构,因为 CloudEvents 支持事件网格架构不支持的扩展属性。
输入架构 | 输出架构 |
---|---|
CloudEvents 格式 | CloudEvents 格式 |
事件网格格式 | CloudEvents 格式 |
事件网格格式 | 事件网格格式 |
对于所有事件架构,事件网格都要求在发布到事件网格主题时以及在创建事件订阅时进行验证。 有关详细信息,请参阅事件网格安全性和身份验证。