Azure 事件中心:创建记录器 - 400 无效的主机名
Azure Event Hub : Create Logger - 400 Invalid Hostname
我正在尝试使用 Azure APIM 创建概念验证,但遇到 400 无效主机名错误。
我试过按照这个例子
https://docs.microsoft.com/en-gb/azure/api-management/api-management-howto-log-event-hubs
将我带到此页面
https://docs.microsoft.com/en-us/rest/api/apimanagement/2019-12-01/logger/createorupdate
我在邮递员中使用以下 url 的 put 命令,编辑了个人详细信息
这是作为 PUT 命令发送的
这也是正在发送的正文
{
"type": "AzureEventHub",
"description": "xx Poc description",
"credentials": {
"name": "apim",
"connectionString": "Endpoint=sb://xx-poc.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=yyyyyyK/ixxxxxxxxxxxxxxc="
}
}
返回的响应是
<h2>Bad Request - Invalid Hostname</h2>
<hr>
<p>HTTP Error 400. The request hostname is invalid.</p>
如果有人能帮助我取得进展,我将不胜感激,因为我看不到我错过了什么。
谢谢
我认为请求正文有问题。
{
"type": "AzureEventHub",
"description": "xx Poc description",
"credentials": {
"name": "apim",
"connectionString": "Endpoint=sb://xx-poc.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=yyyyyyK/ixxxxxxxxxxxxxxc="
}
}
请检查请求正文中的以下设置:
对于名称,请确保它是事件中心实例名称,而不是 Eventhub 命名空间名称。你可以参考这个 doc 了解更多关于它们的细节。
对于connectionString,请确保它是Eventhub命名空间连接字符串(不要使用Eventhub实例级别连接字符串)。更多详情,请参考此doc.
最后,请同时检查eventhub实例是否被禁用。
经过几个小时的搜索,我终于偶然发现了这个 url https://www.svenmalvik.com/azure-apim-with-eventhub/,它解决了我的问题。
我在设置方面做的一切都正确,但这是缺少的最后一步
$apimCtx = New-AzApiManagementContext -ResourceGroupName "xx-Trial" -ServiceName "xx-API-Management-Services"
$ehConnection = (Get-AzEventHubKey -ResourceGroupName "xx-Trial" -NamespaceName "xx-yyy-zzz-eh-ns" -AuthorizationRuleName "xx-yyy-zzz-eh-auth-rule").PrimaryConnectionString
New-AzApiManagementLogger -Context $apimCtx -LoggerId "simon-logger" -Name "simon-logger" -ConnectionString "$ehConnection;EntityPath=xx-yyy-eh"
我正在尝试使用 Azure APIM 创建概念验证,但遇到 400 无效主机名错误。
我试过按照这个例子
https://docs.microsoft.com/en-gb/azure/api-management/api-management-howto-log-event-hubs
将我带到此页面
https://docs.microsoft.com/en-us/rest/api/apimanagement/2019-12-01/logger/createorupdate
我在邮递员中使用以下 url 的 put 命令,编辑了个人详细信息
这是作为 PUT 命令发送的
这也是正在发送的正文
{
"type": "AzureEventHub",
"description": "xx Poc description",
"credentials": {
"name": "apim",
"connectionString": "Endpoint=sb://xx-poc.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=yyyyyyK/ixxxxxxxxxxxxxxc="
}
}
返回的响应是
<h2>Bad Request - Invalid Hostname</h2>
<hr>
<p>HTTP Error 400. The request hostname is invalid.</p>
如果有人能帮助我取得进展,我将不胜感激,因为我看不到我错过了什么。
谢谢
我认为请求正文有问题。
{
"type": "AzureEventHub",
"description": "xx Poc description",
"credentials": {
"name": "apim",
"connectionString": "Endpoint=sb://xx-poc.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=yyyyyyK/ixxxxxxxxxxxxxxc="
}
}
请检查请求正文中的以下设置:
对于名称,请确保它是事件中心实例名称,而不是 Eventhub 命名空间名称。你可以参考这个 doc 了解更多关于它们的细节。
对于connectionString,请确保它是Eventhub命名空间连接字符串(不要使用Eventhub实例级别连接字符串)。更多详情,请参考此doc.
最后,请同时检查eventhub实例是否被禁用。
经过几个小时的搜索,我终于偶然发现了这个 url https://www.svenmalvik.com/azure-apim-with-eventhub/,它解决了我的问题。
我在设置方面做的一切都正确,但这是缺少的最后一步
$apimCtx = New-AzApiManagementContext -ResourceGroupName "xx-Trial" -ServiceName "xx-API-Management-Services"
$ehConnection = (Get-AzEventHubKey -ResourceGroupName "xx-Trial" -NamespaceName "xx-yyy-zzz-eh-ns" -AuthorizationRuleName "xx-yyy-zzz-eh-auth-rule").PrimaryConnectionString
New-AzApiManagementLogger -Context $apimCtx -LoggerId "simon-logger" -Name "simon-logger" -ConnectionString "$ehConnection;EntityPath=xx-yyy-eh"