問題描述
APIM中的内容(API, Policy)等内容,如果有需要更新時候,通常可以在Azure APIM門戶上操作,通過一個接口一個設定的修改,也可以針對一個接口導入/導出的方式修改。當APIM中的API成數量級上升後,這樣的操作方式就變得很慢很沒有效率,是否有更高效得方式呢?
【Azure API 管理】API Management如何有效且快速更新呢?如對APIs/Policy等設定内容

以上兩種方式都适合少量修改的情況。如果是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
當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!