创建事件网格订阅的正确端点格式是啥

Posted

技术标签:

【中文标题】创建事件网格订阅的正确端点格式是啥【英文标题】:What is a proper endpoint format for creating an Event Grid subscription创建事件网格订阅的正确端点格式是什么 【发布时间】:2018-09-01 16:04:10 【问题描述】:

我有一个由事件网格触发器执行的 Azure 函数。该功能已调试并按设计运行。我能够使用 Azure 门户中的 UI 成功创建对事件网格主题的订阅(单击 Add Event Grid subscription 并填写屏幕上的表单)。

问题是尝试使用 CLI(以管理员身份登录的 Cloud Shell)创建订阅时,我无法正确获取端点格式。我使用的基本模板是

az eventgrid event-subscription create --resource-group $resourceGroup
--topic-name $topicName
--included-event-types $includedEventTypes
--name $eventSubscriptionName
--endpoint  https://XXX.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName=FunctionName&code=ABC123

我尝试从 UI 复制自动填充的端点,包括其代码参数。它可以在 UI 中使用,但不能在 CLI 中使用。当我使用门户中提供的端点和代码运行上述脚本时,我得到以下内容

The term 'code=<XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX> is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

如果我省略代码,我会收到一条消息,指出订阅失败,因为它无法验证端点。

如果我尝试以通常用于函数端点的形式https://XXX.azurewebsites.net/FunctionName 使用端点,我也会收到有关验证的投诉。

从 Cloud Shell 中的 CLI 创建订阅时,端点的正确格式是什么?我是否包含代码参数?我在哪里可以获得正确的代码?

使用:

Microsoft.NET.Sdk.Functions 1.0.19
Microsoft.Azure.EventGrid 1.4.0
Microsoft.Azure.WebJobs.Extensions.EventGrid 1.0.0

【问题讨论】:

看看docs.microsoft.com/en-us/azure/azure-functions/… EventGridTrigger 的完整subscriberUrl 具有以下格式:https://FunctionAppName.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName=EventGridTriggerFunctionName&code=masterKey 我尝试使用 _master 和默认主机密钥以及通过使用 _master 密钥发送 GET 请求创建的系统密钥进行订阅。所有结果都是The term 'code=XXXX' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. 我刚刚在门户网站(更新事件订阅)上使用 CLI 使用 _master 密钥对其进行了测试,端点值用双引号括起来,就像 Jerry 的回答所推荐的那样。 我刚刚尝试了双引号并使用了 _master 键。现在得到The attempt to validate the provided endpoint https://XXX.azurewebsites.net/admin/extensions/EventGridExtensionConfig failed. For more details, visit https://aka.ms/esvalidation. 【参考方案1】:

尝试用引号括起您的函数端点,&amp; 似乎是 CLi 语法中的保留符号,因此您的参数 code 从 url 中删除。

【讨论】:

用引号包裹端点解决了这个问题。在某些时候,函数应用停止工作。再次发布并将端点放在引号中并使用 _master 密钥后,一切都按预期工作。

以上是关于创建事件网格订阅的正确端点格式是啥的主要内容,如果未能解决你的问题,请参考以下文章

诊断 Azure 事件网格中的故障?

无法从 ASP.NET Core 6.0 API NServiceBus 端点订阅事件

ExtJS:检测网格数据更改的网格面板事件是啥

Firebase 事件侦听器的退避政策是啥?

Terraform 模块 azure 事件订阅可选字段

如何使用 Azure 事件网格发布覆盖默认过期时间到队列?