问题描述
APIM中的内容(API, Policy)等内容,如果有需要更新时候,通常可以在Azure APIM门户上操作,通过一个接口一个设置的修改,也可以针对一个接口导入/导出的方式修改。当APIM中的API成数量级上升后,这样的操作方式就变得很慢很没有效率,是否有更高效得方式呢?
以上两种方式都适合少量修改的情况。如果是APIM中大量API都需要修改呢?
问题解答
有的,因为APIM可以使用 Git 管理服务实例配置,实现批量更改。参考的官方文档为:https://docs.azure.cn/zh-cn/api-management/api-management-configuration-repository-git
实现步骤
步骤一:将APIM服务配置保存到 Git 存储库
克隆存储库之前的第一个步骤是将服务配置的当前状态保存到存储库。 单击“保存到存储库”。片刻后配置已保存,并显示存储库的配置状态,包括上次配置更改和服务配置与存储库之间上次同步的日期和时间。
将配置保存到存储库后,可以克隆它。
APIM Repository中的文件结构为:
- 根文件夹( api-management ) :包含服务实例的顶级配置
- apis 文件夹 : 包含服务实例中的 API 的配置
- groups 文件夹 : 包含服务实例中的组的配置
- policies 文件夹 : 包含服务实例中的策略
- portalStyles 文件夹 : 包含服务实例中的开发人员门户自定义的配置
- products 文件夹 : 包含服务实例中产品的配置
- templates 文件夹 : 包含服务实例中电子邮件模板的配置
这一步的操作截图如下:
步骤二:将APIM Repository 克隆到本地环境中
使用Git for Windows工具,在Git Bash 中输入clone指令: git clone https://{name}.scm.azure-api.cn/, 根据弹出框输入用户名和密码, 通过APIM Repository 页面中的 Acess Credentials方式获取。
步骤三:本地修改相应的APIM配置文件
APIM Repository中,每个文件夹都可包含一个或多个文件,并且在某些情况下可包含一个或多个文件夹,例如,每个 API、产品或组对应一个文件夹。 每个文件夹内的文件都特定于文件夹名称所述的实体类型。
- json :关于相应实体的配置信息
- html :关于实体的说明,通常显示在开发人员门户中
- xml :策略语句
- css :用于开发人员门户自定义的样式表
可在本地文件系统中创建、删除、编辑和管理这些文件,并将更改部署回 API 管理服务实例。
步骤四:将更改从本地存储库推送到APIM服务器存储器
要将更改从本地存储库推送到服务器存储库,必须提交更改,然后将它们推送到服务器存储库。 要提交更改,请打开 Git 命令工具、切换到本地存储库的目录,并发出以下命令。
git add --all git commit -m "本次修改的文本描述" #将所有提交推送到服务器 git push
步骤五:将更改部署到API Management实例中
完成第四步,将本地更改提交并推送到服务器存储库后,可将它们部署到 API 管理服务实例。可以在APIM Repository的页面中点击“Deploy to API Management”按钮,或者是通过REST API来执行Deploy操作。
API Management页面上点击“Deploy to API Management”按钮
Deploy API: https://docs.microsoft.com/zh-cn/rest/api/apimanagement/current-ga/tenant-configuration/deploy
注:中国区的API为:https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/deploy?api-version=2021-08-01
参考资料
如何使用 Git 保存和配置 API 管理服务: https://docs.azure.cn/zh-cn/api-management/api-management-configuration-repository-git