azure-eventgrid - 使用死信存储更新 Azure 事件网格函数订阅
问题描述
receivingtestwesteurope
我已经成功地在资源组下的一个名为 的存储帐户上创建了一个存储 blob 创建事件触发器,该触发器omni-test
是通过一个名为ValidateMetadata
. 我通过门户 GUI 创建了它。但是,我现在想添加只能通过 CLI 完成的死信/重试策略。
工作触发器是这样的:
{
"destination": {
"endpointBaseUrl": "https://omnireceivingprocesstest.azurewebsites.net/admin/extensions/EventGridExtensionConfig",
"endpointType": "WebHook",
"endpointUrl": null
},
"filter": {
"includedEventTypes": [
"Microsoft.Storage.BlobCreated"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "/blobServices/default/containers/snapshots/blobs/",
"subjectEndsWith": ".png"
},
"id": "/subscriptions/fa6409ab-1234-1234-1234-85dd2b3ceab4/resourceGroups/omni-test/providers/Microsoft.Storage/StorageAccounts/receivingtestwesteurope/providers/Microsoft.EventGrid/eventSubscriptions/png",
"labels": [
""
],
"name": "png",
"provisioningState": "Succeeded",
"resourceGroup": "omni-test",
"topic": "/subscriptions/fa6409ab-1234-1234-1234-85dd2b3ceab4/resourceGroups/omni-test/providers/microsoft.storage/storageaccounts/receivingtestwesteurope",
"type": "Microsoft.EventGrid/eventSubscriptions"
}
首先,我认为我可以使用死信队列更新现有事件:
az eventgrid event-subscription update --name png --deadletter-endpoint receivingtestwesteurope/blobServices/default/containers/eventgrid
返回:
az:错误:无法识别的参数:--deadletter-endpoint 接收testwesteurope/blobServices/default/containers/eventgrid
然后我尝试通过 REST Patch:
https://docs.microsoft.com/en-us/rest/api/eventgrid/eventsubscriptions/update
- 范围:
/subscriptions/fa6409ab-1234-1234-1234-85dd2b3ceab4/resourceGroups/omni-test/providers/microsoft.storage/storageaccounts/receivingtestwesteurope
- 事件订阅名称:
png
- api版本:
2018-05-01-preview
身体:
"deadletterdestination": {
"endpointType": "StorageBlob",
"properties": {
"blobContainerName": "eventgrid",
"resourceId": "/subscriptions/fa6409ab-1234-1234-1234-85dd2b3ceab4/resourceGroups/omni-test/providers/microsoft.storage/storageaccounts/receivingtestwesteurope"
}}
哪个返回
“模型状态无效。”
====================
最终工作解决方案:
{
"deadletterdestination": {
"endpointType": "StorageBlob",
"properties": {
"blobContainerName": "eventgrid",
"resourceId": "/subscriptions/fa6409ab-1234-1234-1234-85dd2b3ceab4/resourceGroups/omni-test/providers/microsoft.storage/storageaccounts/receivingtestwesteurope"
}
}
}
解决方案
查看Manage Event Grid delivery settings,其中详细描述了打开死信。注意,你必须安装一个 eventgrid 扩展
az extension add --name eventgrid
此外,您可以使用 REST API 来更新事件订阅以进行死信。
除此之外,我刚刚发布了我的小工具Azure Event Grid Tester,用于帮助在本地机器上构建 Azure Event Grid 模型。
更新:
以下是deadletterdestination属性:
"deadletterdestination": {
"endpointType": "StorageBlob",
"properties": {
"blobContainerName": "{containerName}",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resgroup}/providers/Microsoft.Storage/storageAccounts/{storageAccount}"
}
}
您可以使用具有上述属性的事件订阅 - 更新(REST API PATCH)。请注意,必须使用api-version=2018-05-01-preview。
推荐阅读
- node.js - Angular 生成的项目未通过默认测试
- arrays - 如何在数组的某个索引后重复添加两个元素
- spring-boot - RestTemplate.exchange 无法正常工作。丢失的参数抛出
- java - Jersey2 同时支持 APPLICATION_JSON 和 MULTIPART_FORM_DATA 无法接受 JSON 输入
- android - EditText 的电话号码格式
- tensorflow-federated - 非 IID 的准确性优于 IID 数据的准确性
- python - 提高性能以在 python 中将类分配给 x/y 坐标
- jenkins - 如何在 Jenkins 中对不同提交的多个构建进行排队?
- javascript - 如何重构在 react js 中传递的道具数据?
- c# - 当从 Html 表单调用带有 HttpPost 的 ASP.NET CORE 3.1 操作时,服务器返回 405 错误