Azure API 管理 - 从内部服务导入开放 API

问题描述 投票:0回答:2

我们将 APIM 实例部署为外部,但可以访问部署在 VNET 中的后端服务。这些服务只能从该 VNET 内访问。

现在,我们尝试使用 Swagger 文件的 URL(例如:http://internalIP/swagger/v1/swagger.json)使用 OpenAPI 规范添加新的 API。我们首先收到一条通知,指出 swagger 文件的 URL 应公开可用,并在弹出窗口中显示:请指定有效的 OpenAPI 规范文件。

我们实际上在本地生成了 swagger 文件,并通过选择文件将其上传到规范,并且它起作用了。所以 json 是有效的。当我们输入文件的 URL 时,它不起作用,正如我所说,该文件不公开。

我们可以使用内部 URL 添加 OpenAPI 规范吗?

非常感谢和问候,

P

azure-api-management
2个回答
1
投票

我们可以使用内部 URL 添加 OpenAPI 规范吗?

从内部URL导入OpenApi似乎很难。

这里有一个反馈,您可以投票来推动功能实现。


0
投票

我们遇到了同样的问题,据我正确理解,获取开放 api 规范文件的请求是通过(共享/公共)azure 服务完成的,该服务的 IP 地址与您的 api 管理服务不同。

背景

在我们的示例中,我们将文件托管在 Blob 存储上(具有匿名访问权限),并且我们希望将此存储帐户的访问限制为 api 管理服务所在的虚拟网络。如上所述,这是行不通的。

我们如何调试问题

我们在存储帐户的日志中发现请求是从不同的 IP 地址发出的。为此,我们执行了以下操作:

  1. 我们导航到存储帐户
  2. 在左侧菜单中单击监控部分中的日志
  3. 我们选择显示匿名请求查询
  4. 我们将列
    CallerIpAddress
    添加到查询列
  5. 我们扩展了其中一个请求,发现 IP 完全不同。

可能的解决方法

将 Azure 服务 IP 添加到存储帐户的白名单中。虽然这是一个风险,但如果文件不那么敏感,这可能是一个选择。

© www.soinside.com 2019 - 2024. All rights reserved.