通过 Powershell 将 Function App 导入 API Management

Importing Function App in to API Management via Powershell

作为我们 CI/CD 管道的一部分,我希望使用 PowerShell 将我们的 Azure Function Apps 注册到 Azure API Management。通过查看文档,似乎 Import-AzApiManagementApi cmdlet 应该支持这一点,但 -SpecificationFormat 参数中似乎没有选项可以从现有的 Function App 导入。

我确实看到 this feedback article 问了一个类似的问题,但目前似乎不可能。

我确实尝试通过 API 定义 blade 公开 Function App OpenAPI 文档,但这似乎不起作用,因为 Function App 托管在隔离层中私有应用程序服务环境。

任何人都知道是否有另一种选择以编程方式将 Function App 导入 APIM?

更新:

我查看了 Github 上的 AlienCube Function Extensions 库,它确实启用了我可以使用的 Swagger API 定义的发布Import-AzApiManagementApi cmdlet,但如果可能仍需要 Azure 本机解决方案。

正如对 theis GitHub issue.

的回复中所述,目前似乎不支持此功能

I have reached out to the APIM team internally regarding this issue and received confirmation that there isn't a backend endpoint available for this operation at this time around (Portal does it with Javascript on the frontend hence the 22 calls).

As the next step, please consider submitting a feature request on the Azure UserVoice (or upvote an existing one if it exists) for the APIM team to review its priority for the product roadmap.

只需通过 Import-AzApiManagementApi

注册新的 API 即可实现此目的
Import-AzApiManagementApi -Context $apiMgmtContext -SpecificationFormat OpenApiJson -SpecificationPath [PATH-TO-LOCAL-FILE]' -Path "api" -Protocol Https -ServiceUrl [PATH-TO-FUNCTION-APP-EDNPOINT] | Out-Null

或者使用公开 OpenAPI 定义的 URL

Import-AzApiManagementApi -Context $ApiMgmtContext -SpecificationFormat "OpenApi" -SpecificationUrl [URL-TO-OPENAPI-DEFINITION] -Path "api"

不是一个干净的实现,但它似乎有效。