【问题标题】:Azure Event Hub : Create Logger - 400 Invalid HostnameAzure 事件中心:创建记录器 - 400 无效的主机名
【发布时间】:2020-05-29 14:24:35
【问题描述】:

我正在尝试使用 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

我在邮递员中有带有以下网址的 put 命令,编辑了个人详细信息

https://management.azure.com/subscriptions/xxxxx-yyyy-zzz-a4ed-b0b5ddddddd/resourceGroups/xx-Trial/providers/Microsoft.ApiManagement/service/xxx-API-Management-Services/loggers/loggerId?api-version=2019-12-01

这是作为 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>

如果有人能帮助我向前推进,我将不胜感激,因为我看不到我错过了什么。

谢谢

【问题讨论】:

    标签: azure azure-eventhub azure-eventhub-capture


    【解决方案1】:

    经过数小时的搜索,我终于偶然发现了这个 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"
    

    【讨论】:

      【解决方案2】:

      我认为请求正文有问题。

      {  
       "type": "AzureEventHub",  
       "description": "xx Poc description",  
       "credentials": {  
         "name": "apim",  
         "connectionString": "Endpoint=sb://xx-poc.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=yyyyyyK/ixxxxxxxxxxxxxxc="  
       }  
      }
      

      请检查您的请求正文中的以下设置:

      1. 对于 name,请确保它是 Event hub 实例名称,而不是 Eventhub 命名空间名称。你可以参考这个doc了解更多关于它们的细节。

      2. 对于 connectionString,请确保它是 Eventhub 命名空间连接字符串(不要使用 Eventhub 实例级连接字符串)。更多详情请参考此doc

      最后还要检查eventthub实例是否被禁用。

      【讨论】:

      • 抱歉回复晚了,我试过了还是不行
      • 还是一样,但是我刚刚使用youtube.com/watch?v=xS_KGuCXVVw解决了这个问题
      • @SimonPrice,太好了!您可以为其添加答案,也可以通过添加此解决方案来编辑​​我的答案。
      猜你喜欢
      • 2019-05-10
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      相关资源
      最近更新 更多