【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败

APIM,APIs,功能,网络 · 浏览次数 : 285

小编点评

## APIM 测试页面错误分析 通过日志分析,发现问题发生在APIM测试页面上,在请求发送过程中报错。经过调试,发现问题与虚拟网络的 DNS 解析有关。 **问题分析步骤:** 1. **APIM 网关代理服务器解析**:因为测试页面通过代理服务器进行请求,域名解析到代理服务器的 IP地址。然而,因为内部网络无法解析外网域名,导致请求无法正常发送。 2. **DNS 解析失败导致请求无法发送**:当无法解析域名时,DNS 解析过程无法完成,导致请求无法找到正确的域名服务器地址。 **解决方法:** 1. 在虚拟网络的 DNS服务器中,**添加对域名(apimanagement-cors-proxy-mc.azure-api.cn)**的解析。这可以确保测试页面能够通过正确的域名服务器获取 IP 地址。 2. **直接在当前的VM中修改windows host文件**:您可以修改C:\Windows\System32\drivers\etc目录下的hosts文件,添加以下一行: ``` 202.0.0.0 apimanagement-cors-proxy-mc.azure-api.cn ``` 3. **刷新APIM Test页面,再次点击Test Send 按钮**:完成后,您的测试页面将再次发送请求,并成功连接到您的API服务器。 **注意:** * 建议您在测试之前确保虚拟网络已配置并可用。 * 可以通过修改hosts文件中的域名,在本地测试 API 管理的正常工作。 * 如果您无法修改hosts文件,您可以通过在虚拟网络的DNS服务器中添加解析记录的方法实现域名解析。

正文

问题描述

使用微软API管理服务(Azure API Management),简称APIM。 因为公司策略要求只能内部网络访问,所以启用了VNET集成。集成方式见: (在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet?tabs=stv1)

 

当APIM配置好后,直接通过CURL命令访问APIM的网关接口(如:curl https://bei3apim.azure-api.cn/httpbin/get -v ),请求响应成功。

但是,直接在门户上访问时,为什么一直都报错 “Could not complete the request. Please try again later.”

问题分析

首先,请求通过APIM 网关已经能成功转发请求到后端服务器,并且返回状态为200。获得正确的返回结果。 

然后,这个问题,只发生在APIM门户的 Test 页面,并且当点击“Test” 按钮后,马上就触发了API 管理提示的错误。

所以,判断这个问题,就发生在APIM门户页面端,是JS的一些执行报错。所以可以通过浏览器开发模式(F12)查看,Console中的输出,检测JS执行的错误消息。

 

谜底揭晓:因为APIM的Test功能是把请求先发送到一个代理服务器( https://apimanagement-cors-proxy-mc.azure-api.cn/ )上执行,而在内网中,这个代理服务器URL无法被解析。

解决方法:在虚拟网络的DNS服务器中,加上对域名(apimanagement-cors-proxy-mc.azure-api.cn)的解析。或者直接在当前的VM中修改windows host文件(C:\Windows\System32\drivers\etc)

 

解题步骤

1) 在公网中,通过 nslookup apimanagement-cors-proxy-mc.azure-api.cn 解析出它的IP地址

 

2) 进入VM 的Host文件,添加 IP 域名记录

 3) 刷新APIM Test页面,再次点击Test Send 按钮,请求发送成功!

 

 

[END]

 

参考资料

在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet?tabs=stv1

 

与【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败相似的内容:

【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败

问题描述 使用微软API管理服务(Azure API Management),简称APIM。 因为公司策略要求只能内部网络访问,所以启用了VNET集成。集成方式见: (在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-manag

【Azure API 管理】APIM中证书更新问题

问题描述 每一年到期更新域名证书,APIM会中断服务,请问如何不中断服务? 问题解答 Azure API 管理允许在受信任的根证书和中间证书存储中的计算机上安装 CA 证书,分配证书的过程可能需要 15 分钟或更久,这取决于部署规模。 开发人员 SKU 在此过程中有停机时间。 基本 SKU 和更高级

【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account

问题描述 在Azure的同一数据中心,API Management访问启用了防火墙的Storage Account,并且把APIM的公网IP地址设置在白名单。但访问依旧是403 原因是: 存储帐户部署在同一区域中的服务使用专用的 Azure IP 地址进行通信。 因此,不能基于特定的 Azure 服

【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求

问题描述 使用Azure API Management, 想对一些固定的IP地址进行访问次数的限制,如被限制的IP地址一分钟可以访问10次,而不被限制的IP地址则可以无限访问? ChatGPT 解答 最近ChatGPT爆火,所以也把这个问题让ChatGPT来解答,然后人工验证它的回答正确与否? 根据

【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改

问题描述 昨天的博文中(https://www.cnblogs.com/lulight/p/17099179.html)介绍了使用Python SDK 来获取App Service的访问限制信息,那么如何调用REST API来实现呢? 问题解答 如大家所知,Azure 不管是SDK, 门户UI,或者

【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码

问题描述 对于Azure资源进行配置操作,门户上可以正常操作。但是想通过Python代码实现,这样可以批量处理。那么在没有SDK的情况下,是否有快速办法呢? 问题解答 当然可以,Azure Portal上操作的所有资源都是通过REST API来实现的,所以只要找到正确的API,就可以通过浏览器中抓取

【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)

问题描述 使用Azure Storage Table的REST API,实现根据过滤条件删除满足条件的数据,调用方法为 Delete Entity (Azure Storage) 问题实现 第一步:通过Azure Stroage 门户或者是其他工具(如:Azure Storage Explorer)

【Azure 存储服务】记一次调用Storage Blob API使用 SharedKey Authorization出现的403错误

问题描述 使用Azure Storag Blob REST API上传文件,用SharedKey作为Authorization出现403错误。 错误消息 b'\xef\xbb\xbfAuthenti

【Azure Developer】使用 Microsoft Graph API查看用户状态和登录记录

问题描述 通过Microsoft Graph的API如何来查看用户信息和登录记录呢? 问题解答 第一步:需要一个授权Token 比如一个拥有查看用户权限的Azure账号,通过Azure CLI 命令获取到一个Access Token az cloud set --name AzureChinaClo

【Azure Developer】使用 Microsoft Graph API 获取 AAD User 操作示例

问题描述 查看官方文档“ Get a user ” , 产生了一个操作示例的想法,在中国区Azure环境中,演示如何获取AAD User信息。 问题解答 使用Microsoft Graph API,演示如何获取AAD User信息,因参考文档是针对Global Azure,所以文档种的URL为: /